Cechowanie danych w zautomatyzowanym uczeniu maszynowym
DOTYCZY: Zestaw SDK języka Python 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.
- Zainstaluj najnowszy
azureml-train-automl
pakiet w środowisku lokalnym. - Aby uzyskać szczegółowe informacje na temat najnowszego
azureml-train-automl
pakietu, zobacz informacje o wersji.
Aby uzyskać informacje o konfiguracji, zobacz następujące artykuły:
- Aby uzyskać środowisko code-first: Konfigurowanie trenowania automatycznego uczenia maszynowego przy użyciu języka Python
- W przypadku środowiska bez kodu: Konfigurowanie trenowania automatycznego uczenia maszynowego bez kodu na potrzeby danych tabelarycznych przy użyciu interfejsu użytkownika programu Studio
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'
lubvalidation=auto
są określone wAutoMLConfig
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.
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.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.
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
}