Przygotowywanie danych do regresji
W tym artykule opisano, jak rozwiązanie AutoML przygotowuje dane do trenowania regresji 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 API AutoML, zapoznaj się z dokumentacją interfejsu API języka Python.
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 kategoryczny lub angielski)
- Znaczniki czasu (
TimestampType
,DateType
) - ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML i wyższe)
- 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 w kolumnie Impute with 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.
wybór kolumny
W środowisku Databricks Runtime 10.3 ML i nowszych można określić, które kolumny AutoML powinny być używane do trenowania. 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 treningowe, walidacyjne i testowe
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ł na zbiór uczący, 20% podział na zbiór walidacyjny i 20% podział na zbiór 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 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.
AutoML automatycznie szacuje pamięć wymaganą do załadowania i wytrenowania zestawu danych oraz próbuje zestaw 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:
Przykład: na maszynie z 4 rdzeniami i 64 GB pamięci RAM:
|
11.3 LTS ML lub 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 wyższe | 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 Databricks Runtime 10.1 ML i późniejszych wersji, AutoML wprowadza 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
.