Udostępnij za pośrednictwem


Cechowanie danych w zautomatyzowanym uczeniu maszynowym

DOTYCZY: Zestaw SDK języka Python azureml w wersji 1

W tym artykule wyjaśniono, jak dostosować ustawienia cechowania danych w usłudze Azure Machine Learning na potrzeby eksperymentów zautomatyzowanego uczenia maszynowego (AutoML).

Inżynieria cech i cechowanie

Dane szkoleniowe składają się z wierszy i kolumn. Każdy wiersz jest obserwacją lub rekordem, a kolumny każdego wiersza to funkcje opisujące każdy rekord. Zazwyczaj funkcje, które najlepiej scharakteryzują wzorce w danych, są wybierane do tworzenia modeli predykcyjnych.

Chociaż wiele nieprzetworzonych pól danych może służyć bezpośrednio do trenowania modelu, często konieczne jest utworzenie innych (zaprojektowanych) funkcji, które zapewniają informacje, które lepiej rozróżniają wzorce w danych. Ten proces jest nazywany inżynierią cech, gdzie wykorzystanie wiedzy o domenie danych służy do tworzenia funkcji, które z kolei pomagają algorytmom uczenia maszynowego lepiej się uczyć.

W usłudze Azure Machine Learning stosowane są techniki skalowania danych i normalizacji w celu ułatwienia inżynierii cech. Łącznie te techniki i ta inżynieria cech są nazywane cechowaniem w eksperymentach zautomatyzowanego uczenia maszynowego (ML).

Wymagania wstępne

W tym artykule założono, że wiesz już, jak skonfigurować eksperyment zautomatyzowanego uczenia maszynowego.

Ważne

Polecenia języka Python w tym artykule wymagają najnowszej azureml-train-automl wersji pakietu.

Aby uzyskać informacje o konfiguracji, zobacz następujące artykuły:

Konfigurowanie cechowania

W każdym eksperymencie zautomatyzowanego uczenia maszynowego domyślnie stosowane są automatyczne techniki skalowania i normalizacji danych. Te techniki to typy cech, które pomagają niektórym algorytmom, które są wrażliwe na funkcje w różnych skalach. Można włączyć więcej cech, takich jak imputacja brakujących wartości, kodowanie i przekształcenia.

Uwaga

Kroki automatycznego uczenia maszynowego (takie jak normalizacja cech, obsługa brakujących danych lub konwertowanie tekstu na liczbowe) stają się częścią podstawowego modelu. Jeśli używasz modelu do przewidywania, te same kroki cechowania, które są stosowane podczas trenowania, są stosowane automatycznie do danych wejściowych.

W przypadku eksperymentów skonfigurowanych przy użyciu zestawu SDK języka Python można włączyć lub wyłączyć ustawienie cechowania, a następnie określić kroki cechowania, które mają być używane w eksperymencie. Jeśli używasz usługi Azure Machine Learning Studio, zobacz kroki umożliwiające włączenie cechowania.

W poniższej tabeli przedstawiono zaakceptowane ustawienia w featurization klasie AutoMLConfig:

Konfiguracja cechowania opis
"featurization": 'auto' Określa, że w ramach wstępnego przetwarzania zabezpieczenia danych i czynności cechowania mają być wykonywane automatycznie. Jest to ustawienie domyślne.
"featurization": 'off' Określa, że kroki cechowania nie mają być wykonywane automatycznie.
"featurization": 'FeaturizationConfig' Określa, że należy użyć dostosowanych kroków cechowania. Dowiedz się, jak dostosować cechowanie.

Automatyczne cechowanie

W poniższej tabeli podsumowano techniki, które są automatycznie stosowane do danych. Te techniki są stosowane w przypadku eksperymentów skonfigurowanych przy użyciu zestawu SDK lub interfejsu użytkownika programu Studio. Aby wyłączyć to zachowanie, ustaw "featurization": 'off' w AutoMLConfig obiekcie.

Uwaga

Jeśli planujesz wyeksportować modele utworzone przez rozwiązanie AutoML do modelu ONNX, w formacie ONNX obsługiwane są tylko opcje cechowania wskazane gwiazdką ("*"). Dowiedz się więcej o konwertowaniu modeli na ONNX.

Kroki cechowania opis
Usuwanie wysokiej kardynalności lub brak funkcji wariancji* Porzucanie tych funkcji z zestawów trenowania i walidacji. Dotyczy funkcji ze wszystkimi brakującymi wartościami, z tą samą wartością we wszystkich wierszach lub z wysoką kardynalnością (na przykład skrótami, identyfikatorami lub identyfikatorami GUID).
Uzupełnianie brakujących wartości* W przypadku funkcji liczbowych imputuj średnią wartości w kolumnie.

W przypadku cech podzielonych na kategorie imputuj z najczęściej spotykaną wartością.
Generowanie większej liczby funkcji* W przypadku funkcji DateTime: Year, Month, Day, Day of week, Day of year, Quarter, Week of the year, Hour, Minute, Second.

W przypadku zadań prognozowania są tworzone następujące dodatkowe funkcje daty/godziny: rok ISO, połowa — pół roku, miesiąc kalendarzowy jako ciąg, Tydzień, Dzień tygodnia jako ciąg, Dzień kwartału, Dzień roku, AM/PM (0, jeśli godzina jest przed południem (12:00), 1 w przeciwnym razie), AM/PM jako ciąg, godzina dnia (podstawa 12-godzinna)

W przypadku funkcji tekstowych: częstotliwość terminów na podstawie jednogramów, bigramów i trigramów. Dowiedz się więcej o tym, jak to zrobić za pomocą narzędzia.
Przekształcanie i kodowanie* Przekształć funkcje liczbowe, które mają kilka unikatowych wartości w funkcjach kategorii.

Kodowanie typu "gorąca" jest używane w przypadku cech kategorii o niskiej kardynalności. Kodowanie skrótów typu gorąca jest używane w przypadku cech kategorii o wysokiej kardynalności.
Osadzanie wyrazów Cecha tekstowa konwertuje wektory tokenów tekstowych na wektory zdań przy użyciu wstępnie wytrenowanego modelu. Każdy wektor osadzania wyrazu w dokumencie jest agregowany z resztą w celu utworzenia wektora funkcji dokumentu.
Odległość klastra Trenuje model klastrowania k-średnich na wszystkich kolumnach liczbowych. Tworzy k nowych funkcji (jedna nowa funkcja liczbowa na klaster), która zawiera odległość każdej próbki do centroid każdego klastra.

W każdym eksperymencie zautomatyzowanego uczenia maszynowego dane są automatycznie skalowane lub znormalizowane, aby ułatwić działanie algorytmów. Podczas trenowania modelu do każdego modelu zastosowano jedną z następujących technik skalowania lub normalizacji.

Skalowanie i przetwarzanie opis
StandardScaleWrapper Standaryzacja funkcji przez usunięcie średniej i skalowania do wariancji jednostkowej.
MinMaxScalar Przekształca funkcje przez skalowanie każdej funkcji według wartości minimalnej i maksymalnej tej kolumny.
MaxAbsScaler Skaluj każdą funkcję według maksymalnej wartości bezwzględnej.
RobustScalar Skaluje funkcje według ich zakresu kwantylu.
PCA Redukcja wymiarów liniowych przy użyciu dekompozycji wartości pojedynczej danych w celu projekcji ich do przestrzeni wymiarowej niższej.
ObcięteSVD Ten transformator wykonuje redukcję wymiarowości liniowej przy użyciu obciętej dekompozycji wartości pojedynczej (SVD). W przeciwieństwie do pcA, ten narzędzie do szacowania nie skupia danych przed obliczenie dekompozycji pojedynczej wartości, co oznacza, że może działać z macierzami scipy.sparse wydajnie.
RozrzednyNormalizer Każda próbka (czyli każdy wiersz macierzy danych) z co najmniej jednym składnikiem niezerowym jest przeskalowana niezależnie od innych próbek, tak aby jej norma (l1 lub l2) równa się jednej.

Zabezpieczenia danych

Zabezpieczenia danych ułatwiają identyfikowanie potencjalnych problemów z danymi (na przykład brak wartości lub brak równowagi klas). Ułatwiają one również podejmowanie działań naprawczych w celu uzyskania lepszych wyników.

Stosowane są zabezpieczenia danych:

  • W przypadku eksperymentów zestawu SDK: gdy parametry "featurization": 'auto' lub validation=auto są określone w AutoMLConfig obiekcie
  • W przypadku eksperymentów studyjnych: po włączeniu automatycznej cechowania

Możesz przejrzeć zabezpieczenia danych dla eksperymentu:

  • show_output=True Ustawiając podczas przesyłania eksperymentu przy użyciu zestawu SDK.
  • W studio na karcie Zabezpieczenia danych zautomatyzowanego przebiegu uczenia maszynowego.

Stany zabezpieczenia danych

Zabezpieczenia danych wyświetlają jeden z trzech stanów:

Stan opis
Wynik pozytywny Nie wykryto żadnych problemów z danymi i nie jest wymagana żadna akcja.
Gotowy Zmiany zostały zastosowane do danych. Zachęcamy do przejrzenia akcji naprawczych podjętych przez rozwiązanie AutoML, aby upewnić się, że zmiany są zgodne z oczekiwanymi wynikami.
Pogotowiu Wykryto problem z danymi, ale nie można go rozwiązać. Zachęcamy do poprawienia i rozwiązania problemu.

Obsługiwane zabezpieczenia danych

W poniższej tabeli opisano zabezpieczenia danych, które są obecnie obsługiwane, oraz skojarzone stany, które mogą być widoczne podczas przesyłania eksperymentu:

Poręcze Stan Warunek wyzwalacza
Brak imputacji wartości funkcji Przekazywane


Gotowe
W danych treningowych nie wykryto brakujących wartości funkcji. Dowiedz się więcej na temat imputacji brakującej wartości.

W danych treningowych wykryto brakujące wartości funkcji i zostały implikowane.
Wykrywanie funkcji o wysokiej kardynalności Przekazywane


Gotowe
Dane wejściowe zostały przeanalizowane i nie wykryto żadnych funkcji o wysokiej kardynalności.

Funkcje o wysokiej kardynalności zostały wykryte w danych wejściowych i zostały obsłużone.
Obsługa podziału walidacji Gotowe Konfiguracja walidacji została ustawiona na 'auto' wartość , a dane szkoleniowe zawierały mniej niż 20 000 wierszy.
Każda iteracja wytrenowanego modelu została zweryfikowana przy użyciu krzyżowej weryfikacji. Dowiedz się więcej o danych walidacji.

Konfiguracja walidacji została ustawiona na 'auto'wartość , a dane szkoleniowe zawierały ponad 20 000 wierszy.
Dane wejściowe zostały podzielone na zestaw danych szkoleniowych i zestaw danych weryfikacji na potrzeby weryfikacji modelu.
Wykrywanie równoważenia klas Przekazywane




Pogotowiu



Gotowe
Dane wejściowe zostały przeanalizowane, a wszystkie klasy są zrównoważone w danych treningowych. Zestaw danych jest uznawany za zrównoważony, jeśli każda klasa ma dobrą reprezentację w zestawie danych, mierzona według liczby i współczynnika próbek.

Wykryto niezrównoważone klasy w danych wejściowych. Aby rozwiązać problem z stronniczą stronniczą modelem, rozwiąż problem z równoważeniem. Dowiedz się więcej o niezrównoważonych danych.

Wykryto niezrównoważone klasy w danych wejściowych, a logika zamiatania ustaliła zastosowanie równoważenia.
Wykrywanie problemów z pamięcią Przekazywane



Gotowe
Wybrane wartości (horyzont, opóźnienie, okno stopniowe) zostały przeanalizowane i nie wykryto potencjalnych problemów z brakiem pamięci. Dowiedz się więcej o konfiguracjach prognozowania szeregów czasowych.

Wybrane wartości (horyzont, opóźnienie, okno stopniowe) zostały przeanalizowane i potencjalnie spowodują, że eksperyment zabraknie pamięci. Konfiguracje opóźnień lub okien krocznych są wyłączone.
Wykrywanie częstotliwości Przekazywane


Gotowe
Szereg czasowy został przeanalizowany, a wszystkie punkty danych są wyrównane do wykrytej częstotliwości.

Szereg czasowy został przeanalizowany, a wykryto punkty danych, które nie są zgodne z wykrytą częstotliwością. Te punkty danych zostały usunięte z zestawu danych.
Krzyżowa walidacja Gotowe Aby dokładnie ocenić modele wytrenowane przez rozwiązanie AutoML, użyjemy zestawu danych, na podstawie którego model nie jest trenowany. W związku z tym, jeśli użytkownik nie udostępnia jawnego zestawu danych weryfikacji, część zestawu danych szkoleniowych jest używana do osiągnięcia tego celu. W przypadku mniejszych zestawów danych (mniej niż 20 000 próbek) używana jest krzyżowa walidacja, a w przeciwnym razie pojedynczy zestaw wstrzymania jest podzielony z danych treningowych, aby służyć jako zestaw danych weryfikacji. W związku z tym w przypadku danych wejściowych używamy krzyżowej weryfikacji z 10 fałdami, jeśli liczba próbek treningowych jest mniejsza niż 1000 i 3 razy w innych przypadkach.
Podział danych trenowania i testowania Gotowe Aby dokładnie ocenić modele wytrenowane przez rozwiązanie AutoML, użyjemy zestawu danych, na podstawie którego model nie jest trenowany. W związku z tym, jeśli użytkownik nie udostępnia jawnego zestawu danych weryfikacji, część zestawu danych szkoleniowych jest używana do osiągnięcia tego celu. W przypadku mniejszych zestawów danych (mniej niż 20 000 próbek) używana jest krzyżowa walidacja, a w przeciwnym razie pojedynczy zestaw wstrzymania jest podzielony z danych treningowych, aby służyć jako zestaw danych weryfikacji. W związku z tym dane wejściowe są podzielone na zestaw danych szkoleniowych i zestaw danych weryfikacji wstrzymania.
Wykrywanie identyfikatorów szeregów czasowych Przekazywane


Stała
Zestaw danych został przeanalizowany i nie wykryto zduplikowanego indeksu czasu.

W zestawie danych znaleziono wiele szeregów czasowych, a identyfikatory szeregów czasowych zostały automatycznie utworzone dla zestawu danych.
Agregacja szeregów czasowych Przekazywane


Stała
Częstotliwość zestawu danych jest zgodna z określoną częstotliwością użytkownika. Nie wykonano agregacji.

Dane zostały zagregowane w celu zachowania zgodności z częstotliwością podaną przez użytkownika.
Obsługa serii krótkiej Przekazywane


Stała
Zautomatyzowane uczenie maszynowe wykryło wystarczającą ilość punktów danych dla każdej serii danych wejściowych, aby kontynuować trenowanie.

Zautomatyzowane uczenie maszynowe wykryło, że niektóre serie nie zawierają wystarczającej liczby punktów danych do wytrenowania modelu. Aby kontynuować szkolenie, te krótkie serie zostały porzucone lub wyściełane.

Dostosowywanie cechowania

Możesz dostosować ustawienia cechowania, aby upewnić się, że dane i funkcje używane do trenowania modelu uczenia maszynowego powodują odpowiednie przewidywania.

Aby dostosować cechowanie, określ "featurization": FeaturizationConfig w AutoMLConfig obiekcie. Jeśli używasz programu Azure Machine Learning Studio do eksperymentu , zobacz artykuł z instrukcjami. Aby dostosować cechowanie typów zadań prognozowania, zapoznaj się z instrukcjami prognozowania.

Obsługiwane dostosowania obejmują:

Dostosowanie Definicja
Aktualizacja celu kolumny Zastąpij automatycznie wykryty typ funkcji dla określonej kolumny.
Aktualizacja parametrów transformatora Zaktualizuj parametry określonego transformatora. Obecnie obsługuje program Imputer (średnia, najczęściej spotykana i mediana) i HashOneHotEncoder.
Usuwanie kolumn Określa kolumny do upuszczania z cechowania.
Transformatory blokowe Określa transformatory blokowe, które mają być używane w procesie cechowania.

Uwaga

Funkcja upuszczania kolumn jest przestarzała w wersji 1.19 zestawu SDK. Porzucanie kolumn z zestawu danych w ramach czyszczenia danych przed użyciem ich w zautomatyzowanym eksperymencie uczenia maszynowego.

Utwórz obiekt przy użyciu wywołań interfejsu FeaturizationConfig API:

featurization_config = FeaturizationConfig()
featurization_config.blocked_transformers = ['LabelEncoder']
featurization_config.drop_columns = ['aspiration', 'stroke']
featurization_config.add_column_purpose('engine-size', 'Numeric')
featurization_config.add_column_purpose('body-style', 'CategoricalHash')
#default strategy mean, add transformer param for 3 columns
featurization_config.add_transformer_params('Imputer', ['engine-size'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['city-mpg'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['bore'], {"strategy": "most_frequent"})
featurization_config.add_transformer_params('HashOneHotEncoder', [], {"number_of_bits": 3})

Przejrzystość cechowania

Każdy model zautomatyzowanego uczenia maszynowego automatycznie stosuje cechowanie. Cechowanie obejmuje zautomatyzowaną inżynierię cech (gdy "featurization": 'auto') oraz skalowanie i normalizację, co wpływa następnie na wybrany algorytm i jego wartości hiperparametryczne. Rozwiązanie AutoML obsługuje różne metody, aby mieć pewność, że masz wgląd w to, co zostało zastosowane do modelu.

Rozważmy ten przykład prognozowania:

  • Istnieją cztery funkcje wejściowe: A (numeryczne), B (numeryczne), C (numeryczne), D (DateTime).
  • Funkcja liczbowa C jest porzucona, ponieważ jest to kolumna ID ze wszystkimi unikatowymi wartościami.
  • Funkcje liczbowe A i B mają brakujące wartości, dlatego są przypisywane przez średnią.
  • Funkcja data/godzina D jest cechowana w 11 różnych funkcjach zaprojektowanych.

Aby uzyskać te informacje, użyj danych wyjściowych z przebiegu eksperymentu fitted_model zautomatyzowanego uczenia maszynowego.

automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()

Zautomatyzowana inżynieria cech

Funkcja get_engineered_feature_names() zwraca listę nazw funkcji zaprojektowanych.

Uwaga

Użyj elementu "timeseriestransformer" dla zadania task="forecasting", w przeciwnym razie użyj elementu "datatransformer" dla zadania "regresja" lub "klasyfikacja".

fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()

Ta lista zawiera wszystkie nazwy funkcji zaprojektowanych.

['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']

Element get_featurization_summary() pobiera podsumowanie cechowania wszystkich funkcji wejściowych.

fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()

Wyjście

[{'RawFeatureName': 'A',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'B',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'C',
  'TypeDetected': 'Numeric',
  'Dropped': 'Yes',
  'EngineeredFeatureCount': 0,
  'Tranformations': []},
 {'RawFeatureName': 'D',
  'TypeDetected': 'DateTime',
  'Dropped': 'No',
  'EngineeredFeatureCount': 11,
  'Tranformations': ['DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime',ateTime','DateTime','DateTime']}]
Wyjście Definicja
RawFeatureName Nazwa funkcji/kolumny wejściowej z podanego zestawu danych.
TypeDetected Wykryto typ danych funkcji wejściowej.
Spadła Wskazuje, czy funkcja wejściowa została porzucona, czy użyta.
EngineeringFeatureCount Liczba funkcji generowanych za pomocą zautomatyzowanych przekształceń inżynierii cech.
Przekształcenia Lista przekształceń zastosowanych do funkcji wejściowych w celu wygenerowania zaprojektowanych funkcji.

Skalowanie i normalizacja

Aby zrozumieć skalowanie/normalizację i wybrany algorytm z jego wartościami hiperparametrów, użyj polecenia fitted_model.steps.

Następujące przykładowe dane wyjściowe są uruchamiane fitted_model.steps dla wybranego przebiegu:

[('RobustScaler', 
  RobustScaler(copy=True, 
  quantile_range=[10, 90], 
  with_centering=True, 
  with_scaling=True)), 

  ('LogisticRegression', 
  LogisticRegression(C=0.18420699693267145, class_weight='balanced', 
  dual=False, 
  fit_intercept=True, 
  intercept_scaling=1, 
  max_iter=100, 
  multi_class='multinomial', 
  n_jobs=1, penalty='l2', 
  random_state=None, 
  solver='newton-cg', 
  tol=0.0001, 
  verbose=0, 
  warm_start=False))]

Aby uzyskać więcej szczegółów, użyj tej funkcji pomocniczej:

from pprint import pprint

def print_model(model, prefix=""):
    for step in model.steps:
        print(prefix + step[0])
        if hasattr(step[1], 'estimators') and hasattr(step[1], 'weights'):
            pprint({'estimators': list(e[0] for e in step[1].estimators), 'weights': step[1].weights})
            print()
            for estimator in step[1].estimators:
                print_model(estimator[1], estimator[0]+ ' - ')
        elif hasattr(step[1], '_base_learners') and hasattr(step[1], '_meta_learner'):
            print("\nMeta Learner")
            pprint(step[1]._meta_learner)
            print()
            for estimator in step[1]._base_learners:
                print_model(estimator[1], estimator[0]+ ' - ')
        else:
            pprint(step[1].get_params())
            print()   

Ta funkcja pomocnika zwraca następujące dane wyjściowe dla określonego przebiegu przy użyciu LogisticRegression with RobustScalar jako określonego algorytmu.

RobustScaler
{'copy': True,
'quantile_range': [10, 90],
'with_centering': True,
'with_scaling': True}

LogisticRegression
{'C': 0.18420699693267145,
'class_weight': 'balanced',
'dual': False,
'fit_intercept': True,
'intercept_scaling': 1,
'max_iter': 100,
'multi_class': 'multinomial',
'n_jobs': 1,
'penalty': 'l2',
'random_state': None,
'solver': 'newton-cg',
'tol': 0.0001,
'verbose': 0,
'warm_start': False}

Przewidywanie prawdopodobieństwa klasy

Modele tworzone przy użyciu zautomatyzowanego uczenia maszynowego mają obiekty otoki, które dublują funkcje z klasy pochodzenia open source. Większość obiektów otoki modelu klasyfikacji zwracanych przez zautomatyzowane uczenie maszynowe implementuje predict_proba() funkcję, która akceptuje próbkę danych macierzy podobnej do tablicy lub rozrzedzonej macierzy funkcji (wartości X) i zwraca tablicę nwymiarową każdego próbki i odpowiednie prawdopodobieństwo klasy.

Zakładając, że pobrano najlepszy przebieg i dopasowany model przy użyciu tych samych wywołań, można wywołać predict_proba() bezpośrednio z dopasowanego modelu, podając X_test przykład w odpowiednim formacie w zależności od typu modelu.

best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)

Jeśli bazowy model nie obsługuje predict_proba() funkcji lub format jest niepoprawny, zgłaszany jest wyjątek specyficzny dla klasy modelu. Zobacz dokumentację referencyjną RandomForestClassifier i XGBoost , aby zapoznać się z przykładami implementacji tej funkcji dla różnych typów modeli.

Integracja w zautomatyzowanym uczeniu maszynowym

jest używany w warstwie cechowania zautomatyzowanego uczenia maszynowego. W tej warstwie, jeśli kolumna zawiera wolny tekst lub innego typu dane, takie jak znaczniki czasu lub proste liczby, oznacza to, że dobór cech jest odpowiednio stosowany.

W przypadku funkcji BERT model jest dostrajany i trenowany przy użyciu etykiet dostarczonych przez użytkownika. W tym miejscu osadzenia dokumentów są wyprowadzone jako funkcje obok innych, takich jak funkcje oparte na znacznikach czasu, dzień tygodnia.

Dowiedz się, jak skonfigurować rozwiązanie AutoML do trenowania modelu przetwarzania języka naturalnego przy użyciu języka Python.

Kroki wywoływania

Aby wywołać, ustaw enable_dnn: True w automl_settings i użyj obliczeń procesora GPU (vm_size = "STANDARD_NC6" lub wyższego procesora GPU). Jeśli jest używane środowisko obliczeniowe procesora CPU, to zamiast rozwiązanie AutoML włącza cechę DNN biLSTM.

Zautomatyzowane uczenie maszynowe wykonuje następujące kroki dla.

  1. Wstępne przetwarzanie i tokenizacja wszystkich kolumn tekstowych. Na przykład StringCast transformator można znaleźć w podsumowaniu cechowania końcowego modelu. Przykład tworzenia podsumowania cech modelu można znaleźć w tym notesie.

  2. Połącz wszystkie kolumny tekstowe w jedną kolumnę tekstową, dlatego StringConcatTransformer w ostatnim modelu.

    Nasza implementacja ogranicza łączną długość tekstu próbki szkoleniowej do 128 tokenów. Oznacza to, że wszystkie kolumny tekstowe podczas łączenia powinny być w idealnym przypadku co najwyżej 128 tokenów długości. Jeśli istnieje wiele kolumn, każda kolumna powinna zostać oczyszczona, aby ten warunek był spełniony. W przeciwnym razie w przypadku kolumn połączonych o długości >128 tokenów warstwa tokenizatora obcina te dane wejściowe do 128 tokenów.

  3. W ramach zamiatania funkcji rozwiązanie AutoML porównuje z punktem odniesienia (torbą cech słów) na przykładzie danych. To porównanie określa, czy daje ulepszenia dokładności. Jeśli działa lepiej niż punkt odniesienia, rozwiązanie AutoML używa do cechowania tekstu dla wszystkich danych. W takim przypadku zobaczysz PretrainedTextDNNTransformer element w ostatnim modelu.

zazwyczaj działa dłużej niż inne featurizery. Aby uzyskać lepszą wydajność, zalecamy używanie STANDARD_NC24r lub STANDARD_NC24rs_V3 dla ich funkcji RDMA.

Rozwiązanie AutoML dystrybuuje trenowanie między wieloma węzłami, jeśli są dostępne (maksymalnie osiem węzłów). Można to zrobić w AutoMLConfig obiekcie, ustawiając max_concurrent_iterations parametr na wyższy niż 1.

Obsługiwane języki dla w rozwiązaniu AutoML

Rozwiązanie AutoML obsługuje obecnie około 100 języków i w zależności od języka zestawu danych rozwiązanie AutoML wybiera odpowiedni model. W przypadku niemieckich danych używamy niemieckiego modelu. W przypadku języka angielskiego używamy angielskiego modelu. W przypadku wszystkich innych języków używamy wielojęzycznego modelu.

W poniższym kodzie jest wyzwalany niemiecki model, ponieważ język zestawu danych jest określony na deu, trzyliterowy kod języka niemieckiego zgodnie z klasyfikacją ISO:

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='deu')

automl_settings = {
    "experiment_timeout_minutes": 120,
    "primary_metric": 'accuracy',
# All other settings you want to use
    "featurization": featurization_config,
    
    "enable_dnn": True, # This enables BERT DNN featurizer
    "enable_voting_ensemble": False,
    "enable_stack_ensemble": False
}