Przygotowywanie danych do klasyfikacji
Dowiedz się, jak używać rozwiązania AutoML do przygotowania danych do klasyfikacji.
W tym artykule opisano, jak rozwiązanie AutoML przygotowuje dane do trenowania klasyfikacji i opisuje konfigurowalne ustawienia danych. Te opcje można dostosować podczas konfigurowania eksperymentu w interfejsie użytkownika rozwiązania AutoML.
Aby skonfigurować te ustawienia przy użyciu interfejsu API automatycznego uczenia maszynowego, zapoznaj się z dokumentacją interfejsu API języka Python rozwiązania AutoML.
Obsługiwane typy funkcji danych
Obsługiwane są tylko typy funkcji wymienione poniżej. Na przykład obrazy nie są obsługiwane.
Obsługiwane są następujące typy funkcji:
- Numeryczne (
ByteType
, ,IntegerType
ShortType
,LongType
,FloatType
iDoubleType
) - Wartość logiczna
- Ciąg (tekst kategorii lub angielski)
- Znaczniki czasu (
TimestampType
,DateType
) - ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML i nowsze)
- DecimalType (Databricks Runtime 11.3 LTS ML i nowsze)
Uzupełnianie brakujących wartości
W środowisku Databricks Runtime 10.4 LTS ML i nowszym można określić, w jaki sposób wartości null są przypisywane. W interfejsie użytkownika wybierz metodę z listy rozwijanej Impute z kolumną w schemacie tabeli. W interfejsie API użyj parametru imputers
. Aby uzyskać więcej informacji, zobacz AutoML Python API reference (Dokumentacja interfejsu API języka Python rozwiązania AutoML).
Domyślnie rozwiązanie AutoML wybiera metodę imputacji na podstawie typu kolumny i zawartości.
Uwaga
Jeśli określisz metodę imputacji innej niż domyślna, rozwiązanie AutoML nie wykonuje wykrywania typów semantycznych.
Obsługa niezrównoważonych zestawów danych w przypadku problemów z klasyfikacją
W środowisku Databricks Runtime 11.3 LTS ML i nowszym, jeśli rozwiązanie AutoML wykryje, że zestaw danych jest niezrównoważony, próbuje zmniejszyć dysproporcję zestawu danych trenowania przez zmniejszenie liczby głównych klas i dodanie wag klas. Rozwiązanie AutoML równoważy tylko zestaw danych trenowania i nie równoważy zestawów danych testów i walidacji. Dzięki temu wydajność modelu jest zawsze oceniana na niezbogaconym zestawie danych z rzeczywistym rozkładem klas wejściowych.
Aby zrównoważyć niezrównoważony zestaw danych trenowania, rozwiązanie AutoML używa wag klas, które są odwrotnie powiązane z stopniem, w którym dana klasa jest w dół. Jeśli na przykład zestaw danych treningowych z 100 próbkami ma 95 próbek należących do klasy A i pięć próbek należących do klasy B, AutoML zmniejsza tę nierównowagę przez próbkowanie klasy A do 70 próbek, czyli downsampling klasy A o stosunek 70/95 lub 0,736 przy zachowaniu liczby próbek w klasie B na 5. Aby upewnić się, że ostateczny model jest poprawnie skalibrowany, a rozkład prawdopodobieństwa danych wyjściowych modelu jest taki sam jak w przypadku danych wejściowych, automl skaluje w górę wagę klasy A o współczynnik 1/0,736 lub 1,358, przy zachowaniu wagi klasy B jako 1. Następnie rozwiązanie AutoML używa tych wag klas w trenowaniu modelu jako parametru, aby upewnić się, że próbki z każdej klasy są odpowiednio ważone podczas trenowania modelu.
Wybór kolumny
W środowisku Databricks Runtime 10.3 ML i nowszym można określić kolumny, które mają być używane do trenowania. Aby wykluczyć kolumnę w interfejsie użytkownika, usuń zaznaczenie jej w kolumnie Dołączanie . W interfejsie API użyj parametru exclude_cols
. Aby uzyskać więcej informacji, zobacz AutoML Python API reference (Dokumentacja interfejsu API języka Python rozwiązania AutoML).
Nie można usunąć kolumny wybranej jako celu przewidywania lub jako kolumny czasu, aby podzielić dane.
Domyślnie wszystkie kolumny są uwzględniane.
Dzielenie danych na zestawy trenowania, walidacji i testowania
Rozwiązanie AutoML dzieli dane na trzy podziały na potrzeby trenowania, walidacji i testowania. W zależności od typu problemu z uczeniem maszynowym masz różne opcje dzielenia danych.
Użyj następujących metod, aby podzielić dane na zestawy trenowania, walidacji i testowania:
(Ustawienie domyślne) Podział losowy: jeśli strategia podziału danych nie jest określona, zestaw danych jest losowo podzielony na 60% podział pociągu, podział weryfikacji 20% i podział testu 20%. W przypadku klasyfikacji warstwowy podział losowy gwarantuje, że każda klasa jest odpowiednio reprezentowana w zestawach trenowania, walidacji i testowania.
Podział chronologiczny: w środowisku Databricks Runtime 10.4 LTS ML i nowszym można wybrać kolumnę czasu, aby utworzyć chronologiczny pociąg, walidację i podziały testów. Podziały chronologiczne używają najwcześniejszych punktów danych do trenowania, następnego najwcześniejszego sprawdzania poprawności i najnowszych punktów do testowania. Kolumna czasu może być sygnaturą czasową, liczbą całkowitą lub kolumną ciągu.
Podział ręczny: w środowisku Databricks Runtime 15.3 ML i nowszym można użyć interfejsu API do skonfigurowania podziału ręcznego. Określ kolumnę podziału i użyj wartości train
, validate
lub test
, aby zidentyfikować wiersze, których chcesz użyć do trenowania, walidacji i testowania zestawów danych. Wszystkie wiersze z podzielonymi wartościami kolumn innych niż train
, test
lub validate
są ignorowane i zgłaszany jest odpowiedni alert.
Próbkowanie dużych zestawów danych
Mimo że rozwiązanie AutoML dystrybuuje próby dostrajania hiperparametrów w węzłach roboczych klastra, każdy model jest trenowany w jednym węźle roboczym.
Rozwiązanie AutoML automatycznie szacuje pamięć wymaganą do załadowania i wytrenowania zestawu danych oraz przykładów zestawu danych w razie potrzeby.
Wersja środowiska Uruchomieniowego usługi Databricks | Zachowanie próbkowania |
---|---|
9.1 LTS ML — 10,4 LTS ML | Ułamek próbkowania jest stały i nie zależy od typu węzła klastra ani pamięci na węzeł. |
11.x ML | Ułamek próbkowania zwiększa się dla węzłów roboczych z większą ilością pamięci na rdzeń. Aby zwiększyć rozmiar próbki: — Użyj typu wystąpienia zoptymalizowanego pod kątem pamięci. — Dostosuj spark.task.cpus konfigurację platformy Spark. Wartość domyślna to 1, a maksymalna wartość to liczba procesorów CPU w węźle roboczym. Maksymalna wartość to liczba procesorów CPU w węźle procesu roboczego. Po zwiększeniu tej wartości rozmiar próbki jest większy, ale mniej prób jest uruchamianych równolegle.Przykład: na maszynie z 4 rdzeniami i 64 GB pamięci RAM: — W przypadku spark.task.cpus=1 programu cztery wersje próbne są uruchamiane dla każdego procesu roboczego, z których każda korzysta z 16 GB pamięci RAM.— W przypadku spark.task.cpus=4 programu jedna wersja próbna jest uruchamiana dla każdego procesu roboczego, przy użyciu wszystkich 64 GB pamięci RAM. |
11.3 LTS ML i nowsze | Jeśli rozwiązanie AutoML próbkuje zestaw danych, ułamek próbkowania jest wyświetlany na karcie Przegląd w interfejsie użytkownika. |
12.2 LTS ML i nowsze | Rozwiązanie AutoML może obsługiwać większe zestawy danych, przydzielając więcej rdzeni procesora CPU na zadanie trenowania. Zwiększ rozmiar próbki, wybierając wystąpienie z większą ilością całkowitej pamięci. |
W przypadku problemów klasyfikacji rozwiązanie AutoML używa metody PySpark sampleBy
do próbkowania warstwowego w celu zachowania rozkładu etykiet docelowych.
W przypadku problemów z regresją rozwiązanie AutoML używa metody PySpark.sample
Wykrywanie typów semantycznych
Uwaga
- AutoML nie wykonuje wykrywania typów semantycznych dla kolumn, które mają określone niestandardowe metody imputacji .
W środowisku Databricks Runtime 9.1 LTS ML i nowszym rozwiązanie AutoML próbuje wykryć, czy kolumny mają typ semantyczny inny niż typ danych platformy Spark lub biblioteki pandas w schemacie tabeli. Rozwiązanie AutoML traktuje te kolumny jako wykryty typ semantyczny. Te wykrycia są najlepszym rozwiązaniem i czasami pomijają istnienie typów semantycznych. Można również ręcznie ustawić semantyczny typ kolumny lub poinformować automl, aby nie stosować wykrywania typów semantycznych do kolumny przy użyciu adnotacji.
W szczególności rozwiązanie AutoML wprowadza następujące korekty:
- Kolumny ciągów i liczb całkowitych reprezentujące dane daty lub znacznika czasu są traktowane jako typ znacznika czasu.
- Kolumny ciągów reprezentujące dane liczbowe są traktowane jako typ liczbowy.
W przypadku środowiska Databricks Runtime 10.1 ML i nowszego rozwiązanie AutoML wprowadza również następujące korekty:
- Kolumny liczbowe zawierające identyfikatory kategorii są traktowane jako cecha kategorii.
- Kolumny ciągów zawierające tekst w języku angielskim są traktowane jako funkcja tekstowa.
Adnotacje typu semantycznego
W środowisku Databricks Runtime 10.1 ML i nowszym można ręcznie kontrolować przypisany typ semantyczny, umieszczając adnotację typu semantycznego w kolumnie. Aby ręcznie dodać adnotację do semantycznego typu kolumny <column-name>
jako <semantic-type>
, użyj następującej składni:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
może być jednym z następujących elementów:
categorical
: Kolumna zawiera wartości kategorii (na przykład wartości liczbowe, które powinny być traktowane jako identyfikatory).numeric
: Kolumna zawiera wartości liczbowe (na przykład wartości ciągów, które mogą być analizowane w liczbach).datetime
: Kolumna zawiera wartości znacznika czasu (ciąg, wartość liczbowa lub data, które można przekonwertować na znaczniki czasu).text
: Kolumna ciągu zawiera tekst w języku angielskim.
Aby wyłączyć wykrywanie typów semantycznych w kolumnie, użyj specjalnej adnotacji native
słowa kluczowego .