Udostępnij za pośrednictwem


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 nieobsługiwane.

Obsługiwane są następujące typy funkcji:

  • Numeryczne (ByteType, , ShortTypeIntegerType, LongType, FloatTypei DoubleType)
  • 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, validatelub 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, testlub 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=1programu 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=4programu 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 sampleBydo 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

  • Rozwiązanie AutoML nie wykonuje wykrywania typu semantycznego dla kolumn, które mają określone niestandardowe metody imputacji .

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.