Udostępnij za pośrednictwem


Przygotowywanie i przetwarzanie danych w usłudze Azure Databricks AutoML

W tym artykule opisano, jak usługa Azure Databricks AutoML przygotowuje dane do trenowania uczenia maszynowego 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

Typy funkcji, których nie wymieniono poniżej, nie są obsługiwane. Na przykład obrazy nie są obsługiwane.

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

  • Numeryczne (ByteType, , IntegerTypeShortType, 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)

Wybór kolumny

Uwaga

Ta funkcja jest dostępna tylko w przypadku problemów klasyfikacji i regresji

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 Azure Databricks AutoML Python API reference (Dokumentacja interfejsu API języka Python usługi Azure Databricks).

Nie można usunąć kolumny wybranej jako celu przewidywania lub jako kolumny czasu, aby podzielić dane.

Domyślnie wszystkie kolumny są uwzględniane.

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 Azure Databricks AutoML Python API reference (Dokumentacja interfejsu API języka Python usługi Azure Databricks).

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.

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.

Dzielenie danych na potrzeby regresji i klasyfikacji

Użyj następujących metod, aby podzielić dane na zestawy trenowania, walidacji i testowania na potrzeby zadań regresji i klasyfikacji:

(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, 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.

Dzielenie danych na potrzeby prognozowania

W przypadku zadań prognozowania rozwiązanie AutoML używa krzyżowego sprawdzania poprawności szeregów czasowych. Ta metoda przyrostowo rozszerza chronologicznie zestaw danych trenowania i przeprowadza walidację w kolejnych punktach czasowych. Krzyżowa walidacja zapewnia niezawodną ocenę wydajności modelu w różnych segmentach czasowych. Gwarantuje to, że model prognozowania jest rygorystycznie testowany pod kątem nienajdących przyszłych danych, zachowując istotność i dokładność przewidywań.

Liczba składań krzyżowych zależy od cech tabeli wejściowej, takich jak liczba szeregów czasowych, obecność kowariantów i długość szeregów czasowych.

Próbkowanie dużych zestawów danych

Uwaga

Próbkowanie nie jest stosowane do problemów z prognozowaniem.

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.

W środowisku Databricks Runtime 9.1 LTS ML za pośrednictwem środowiska Databricks Runtime 10.4 LTS ML ułamek próbkowania nie zależy od typu węzła klastra ani ilości pamięci w każdym węźle.

W środowisku Databricks Runtime 11.x ML:

  • Ułamek próbkowania zwiększa się dla węzłów roboczych, które mają więcej pamięci na rdzeń. Rozmiar próbki można zwiększyć, wybierając typ wystąpienia zoptymalizowanego pod kątem pamięci.
  • Możesz jeszcze bardziej zwiększyć rozmiar próbki, wybierając większą wartość w spark.task.cpus konfiguracji platformy Spark dla klastra. Ustawieniem domyślnym jest 1; 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. Na przykład na maszynie z czterema rdzeniami i łączną ilością 64 GB pamięci RAM domyślnie spark.task.cpus=1 są uruchamiane cztery wersje próbne na proces roboczy, a każda wersja próbna jest ograniczona do 16 GB pamięci RAM. W przypadku ustawienia spark.task.cpus=4każdy proces roboczy uruchamia tylko jedną wersję próbną, ale ta wersja próbna może używać 64 GB pamięci RAM.

W środowisku Databricks Runtime 12.2 LTS ML lub nowszym rozwiązanie AutoML może trenować na większych zestawach danych, przydzielając więcej rdzeni procesora CPU na zadanie trenowania. Rozmiar próbki można zwiększyć, wybierając rozmiar wystąpienia z większą ilością całkowitej pamięci.

W środowisku Databricks Runtime 11.3 LTS ML i nowszym, jeśli zestaw danych został próbkowany przez rozwiązanie AutoML, ułamek próbkowania jest wyświetlany na karcie Przegląd w interfejsie użytkownika.

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

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.

Agregacja szeregów czasowych

W przypadku problemów z prognozowaniem, gdy w szeregach czasowych istnieje wiele wartości, automl używa średniej wartości.

Aby zamiast tego użyć sumy, zmodyfikuj notes kodu źródłowego wygenerowany przez przebiegi wersji próbnej. W komórce Agregowanie danych według ... zmień wartość .agg(y=(target_col, "avg")) na .agg(y=(target_col, "sum")), jak pokazano:

group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
  .groupby(group_cols) \
  .agg(y=(target_col, "sum")) \
  .reset_index() \
  .rename(columns={ time_col : "ds" })

Wykrywanie typów semantycznych

Uwaga

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 nativesłowa kluczowego .

Integracja z magazynem funkcji

W środowisku Databricks Runtime 11.3 LTS ML i nowszym można użyć istniejących tabel funkcji w magazynie funkcji, aby rozszerzyć oryginalny zestaw danych wejściowych na potrzeby problemów z klasyfikacją i regresją.

W środowisku Databricks Runtime 12.2 LTS ML i nowszym można użyć istniejących tabel funkcji w magazynie funkcji, aby rozszerzyć oryginalny zestaw danych wejściowych dla wszystkich problemów z rozwiązaniem AutoML: klasyfikacja, regresja i prognozowanie.

Aby utworzyć tabelę cech, zobacz Inżynieria funkcji i obsługa.

Aby użyć istniejących tabel funkcji, możesz wybrać tabele funkcji za pomocą interfejsu użytkownika rozwiązania AutoML lub ustawić feature_store_lookups parametr w specyfikacji uruchamiania rozwiązania AutoML.

feature_store_lookups = [
  {
     "table_name": "example.trip_pickup_features",
     "lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
  },
  {
      "table_name": "example.trip_dropoff_features",
     "lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
  }
]

Przykład notesu: Eksperyment automatycznego uczenia maszynowego z magazynem funkcji

W poniższym notesie pokazano, jak wytrenować model uczenia maszynowego przy użyciu tabel funkcji AutoML i Feature Store.

Przykładowy notes dotyczący eksperymentu automatycznego uczenia maszynowego z magazynem funkcji

Pobierz notes