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
, ,ShortType
IntegerType
,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 celów szkoleniowych. Aby wykluczyć kolumnę w interfejsie użytkownika, usuń zaznaczenie jej w kolumnie Uwzględnij. 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 cel przewidywania lub 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żesz wybrać kolumnę czasową, aby utworzyć podziały na dane treningowe, walidacyjne i testowe. 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.
ręczne dzielenie: W środowisku Databricks Runtime 15.3 ML i nowszych można użyć 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
Począwszy od środowiska Databricks Runtime 9.1 LTS ML i nowszych, AutoML próbuje wykryć, czy kolumny mają typ semantyczny inny niż typ danych Spark lub 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 ustawić AutoML, aby nie stosował wykrywania typów semantycznych do kolumny za pomocą 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 można przeanalizować w liczbach). -
datetime
: Kolumna zawiera wartości znacznika czasu (dane ciągowe, liczbowe lub datowe, 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 słowa kluczowego native
.