Udostępnij przez


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 AutoML, zapoznaj się z dokumentacją interfejsu API języka Python dla 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 i DoubleType)
  • logiczny
  • Ciąg (tekst kategoryczny lub angielski)
  • Znaczniki czasu (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML i nowsze)
  • DecimalType (Databricks Runtime 11.3 LTS ML i wyższe wersje)

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 w kolumnie Uzupełnij za pomocą 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, stara się zredukować to niezrównoważenie poprzez próbkowanie w dół klas dominujących 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 treningowych, AutoML używa wag klas, które są odwrotnie powiązane ze stopniem redukcji liczby próbek danej klasy. 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 zmniejszenie liczby próbek klasy A do 70, czyli zmniejszenie liczby próbek klasy A w stosunku 70/95 lub 0,736, zachowując liczbę próbek w klasie B na poziomie 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ć, jakie kolumny AutoML powinno używać do szkolenia. 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.

Podziel dane 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 nie określono strategii podziału danych, zestaw danych jest losowo podzielony na 60% podziału treningowego, 20% podział walidacyjny i 20% podział testowy. 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ępnych najwcześniejszych do walidacji, a 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.

AutoML automatycznie szacuje pamięć wymaganą do załadowania i wytrenowania zestawu danych oraz dokonuje próbkowania zestawu danych w razie potrzeby.

Wersja środowiska Uruchomieniowego usługi Databricks Proces 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 w konfiguracji platformy Spark. Wartość domyślna to 1, a maksymalna wartość to liczba procesorów CPU w węźle roboczym. Maksymalna wartość to liczba CPU w węźle roboczym. 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=1cztery próby są uruchamiane na pracownika, przy czym każda z nich korzysta z 16 GB pamięci RAM.
  • W przypadku spark.task.cpus=4jedno próbne uruchomienie jest wykonywane dla każdego pracownika, 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 klasyfikacyjnych AutoML używa metody sampleByPySpark 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

  • 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.

Dla Databricks Runtime 10.1 ML i wyższych, 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.