Konfigurowanie trenowania, walidacji, krzyżowego sprawdzania poprawności i testowania danych w zautomatyzowanym uczeniu maszynowym
DOTYCZY: Zestaw SDK języka Python w wersji 1
W tym artykule opisano opcje konfigurowania podziałów danych szkoleniowych i danych walidacji wraz z ustawieniami krzyżowego sprawdzania poprawności dla eksperymentów zautomatyzowanego uczenia maszynowego (zautomatyzowanego uczenia maszynowego). W usłudze Azure Machine Learning, gdy używasz zautomatyzowanego uczenia maszynowego do tworzenia wielu modeli uczenia maszynowego, każde uruchomienie podrzędne musi zweryfikować powiązany model, obliczając metryki jakości dla tego modelu, takie jak dokładność lub obszar pod krzywą ważoną (AUC). Te metryki są obliczane przez porównanie przewidywań wykonanych z każdego modelu z rzeczywistymi etykietami z poprzednich obserwacji w danych walidacji. Eksperymenty zautomatyzowanego uczenia maszynowego automatycznie przeprowadzają walidację modelu.
W poniższych sekcjach opisano sposób dostosowywania ustawień walidacji przy użyciu zestawu SDK języka Python usługi Azure Machine Learning. Aby dowiedzieć się więcej na temat sposobu obliczania metryk na podstawie typu walidacji, zobacz sekcję Ustawianie obliczeń metryk na potrzeby krzyżowego sprawdzania poprawności . Jeśli interesuje Cię środowisko z małą ilością kodu lub bez kodu, zobacz Tworzenie eksperymentów zautomatyzowanego uczenia maszynowego w usłudze Azure Machine Learning Studio.
Wymagania wstępne
Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów obszaru roboczego.
Znajomość konfigurowania zautomatyzowanego eksperymentu uczenia maszynowego przy użyciu zestawu Azure Machine Learning SDK. Aby zapoznać się z podstawowymi wzorcami projektowania eksperymentów zautomatyzowanego uczenia maszynowego, ukończ samouczek Trenowanie modelu wykrywania obiektów lub przewodnik Konfigurowanie trenowania automatycznego uczenia maszynowego przy użyciu języka Python .
Znajomość podziałów danych trenowania/walidacji i krzyżowego sprawdzania poprawności jako pojęć dotyczących uczenia maszynowego. Aby zapoznać się z ogólnym wyjaśnieniem, zobacz następujące artykuły:
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.
Ustawianie domyślnych podziałów danych i krzyżowej walidacji w uczeniu maszynowym
Aby ustawić domyślne podziały danych i krzyżową walidację w uczeniu maszynowym, użyj obiektu Klasa AutoMLConfig , aby zdefiniować ustawienia eksperymentu i trenowania. W poniższym przykładzie zdefiniowano tylko wymagane parametry. Parametry n_cross_validations
i validation_data
nie są uwzględniane.
Uwaga
W scenariuszach prognozowania domyślne podziały danych i krzyżowe sprawdzanie poprawności nie są obsługiwane.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'Class'
)
Jeśli nie określisz jawnie parametru validation_data
lub n_cross_validations
, zautomatyzowane uczenie maszynowe stosuje techniki domyślne w zależności od liczby wierszy podanych w pojedynczym zestawie danych training_data
.
Rozmiar danych treningowych | Technika walidacji |
---|---|
Więcej niż 20 000 wierszy | Zastosowano podział danych trenowania/walidacji. Wartość domyślna to 10% początkowego zestawu danych treningowych jako zestawu weryfikacji. Z kolei ten zestaw weryfikacji jest używany do obliczania metryk. |
Mniejsze niż 20 000 wierszy | Zastosowano podejście do krzyżowego sprawdzania poprawności. Domyślna liczba składań zależy od liczby wierszy. — Jeśli zestaw danych jest mniejszy niż 1000 wierszy, używane jest 10 razy. - Jeśli wiersze mają od 1000 do 20 000, są używane trzy razy. |
Zapewnianie zestawu danych weryfikacji
Dostępne są dwie opcje udostępniania danych weryfikacji. Możesz rozpocząć od jednego pliku danych i podzielić go na dane szkoleniowe i zestawy danych weryfikacji lub udostępnić oddzielny plik danych dla zestawu weryfikacji. Tak czy inaczej, parametr w AutoMLConfig
obiekcie przypisuje dane, validation_data
które mają być używane jako zestaw weryfikacji. Ten parametr akceptuje tylko zestawy danych w postaci zestawu danych usługi Azure Machine Learning lub ramki danych biblioteki pandas.
Poniżej przedstawiono kilka innych zagadnień dotyczących pracy z parametrami walidacji:
- Można ustawić tylko jeden parametr weryfikacji,
validation_data
parametr lubn_cross_validations
parametr, ale nie oba. - W przypadku używania parametru
validation_data
należy również określićtraining_data
parametry ilabel_column_name
.
W poniższym przykładzie jawnie zdefiniowano, która część elementu dataset
ma być używana do trenowania (training_data
) i weryfikacji (validation_data
):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
training_data, validation_data = dataset.random_split(percentage=0.8, seed=1)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = training_data,
validation_data = validation_data,
label_column_name = 'Class'
)
Podaj rozmiar zestawu danych weryfikacji
Po podaniu rozmiaru zestawu weryfikacji należy podać tylko jeden zestaw danych dla eksperymentu. Nie validation_data
określono parametru, a podany zestaw danych jest przypisywany do parametru training_data
.
AutoMLConfig
W obiekcie można ustawić validation_size
parametr tak, aby przechowywał część danych treningowych na potrzeby walidacji. W przypadku tej strategii zadanie zautomatyzowanego uczenia maszynowego dzieli zestaw weryfikacji z dostarczanego początkowego zestawu training_data
. Wartość powinna należeć do przedziału od 0,0 do 1,0 (na przykład 0,2 oznacza, że 20% danych jest przechowywanych na potrzeby danych weryfikacji).
Uwaga
W scenariuszach validation_size
prognozowania parametr nie jest obsługiwany.
W poniższym przykładzie przedstawiono pojedynczy dataset
element dla eksperymentu. Uzyskuje training_data
dostęp do pełnego zestawu danych, a 20% zestawu danych jest przydzielane do weryfikacji (validation_size = 0.2
):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
validation_size = 0.2,
label_column_name = 'Class'
)
Wykonywanie k-fold krzyżowej walidacji
Aby wykonać k-fold krzyżową walidację n_cross_validations
, należy dołączyć parametr i zdefiniować liczbę fałd. Ten parametr określa liczbę wykonań krzyżowych walidacji na podstawie tej samej liczby składań.
Uwaga
W scenariuszach klasyfikacji korzystających z głębokich sieci neuronowych (DNN) n_cross_validations
parametr nie jest obsługiwany.
W przypadku scenariuszy prognozowania zobacz, jak jest stosowana krzyżowa walidacja w temacie Konfigurowanie automatycznego uczenia maszynowego w celu trenowania modelu prognozowania szeregów czasowych.
W poniższym przykładzie zdefiniowano pięć fałdów na potrzeby krzyżowej weryfikacji. Proces uruchamia pięć różnych szkoleń, w których każde trenowanie używa 4/5 danych. Każda walidacja używa 1/5 danych z inną częścią blokady za każdym razem. W rezultacie metryki są obliczane ze średnią pięciu metryk walidacji.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 5
label_column_name = 'Class'
)
Wykonywanie krzyżowego sprawdzania poprawności monte carlo
Aby przeprowadzić krzyżową walidację monte carlo, należy uwzględnić parametry validation_size
i n_cross_validations
w AutoMLConfig
obiekcie .
W przypadku krzyżowej weryfikacji Monte Carlo zautomatyzowane uczenie maszynowe odkłada część danych treningowych określonych przez validation_size
parametr do weryfikacji, a następnie przypisuje pozostałe dane do trenowania. Ten proces jest następnie powtarzany na podstawie wartości określonej w parametrze n_cross_validations
, która generuje nowe podziały trenowania i walidacji, losowo za każdym razem.
Uwaga
W scenariuszach prognozowania krzyżowa walidacja Monte Carlo nie jest obsługiwana.
W poniższym przykładzie zdefiniowano siedem razy na potrzeby krzyżowej weryfikacji i 20% danych treningowych na potrzeby weryfikacji. Proces uruchamia siedem różnych szkoleń, w których każde trenowanie używa 80% danych. Każda walidacja używa 20% danych z inną częścią blokady za każdym razem.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 7
validation_size = 0.2,
label_column_name = 'Class'
)
Określanie niestandardowych fałdów danych krzyżowych
Możesz również podać własne fałdy danych krzyżowych (CV). Takie podejście jest uznawane za bardziej zaawansowany scenariusz, ponieważ określasz kolumny do dzielenia i używania do walidacji. Niestandardowe kolumny podzielone CV są uwzględniane w danych treningowych i określają, które kolumny są wypełniane przez wypełnianie nazw kolumn w parametrze cv_split_column_names
. Każda kolumna reprezentuje jeden podział krzyżowo walidacji i ma wartość całkowitą 1 lub 0. Wartość 1 wskazuje, że wiersz powinien być używany do trenowania. Wartość 0 wskazuje, że wiersz powinien być używany do walidacji.
Uwaga
W scenariuszach cv_split_column_names
prognozowania parametr nie jest obsługiwany.
Poniższy przykład zawiera dane marketingowe banku z dwoma podzielonymi kolumnami cv1
CV i cv2
:
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_with_cv.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'y',
cv_split_column_names = ['cv1', 'cv2']
)
Uwaga
Aby używać z cv_split_column_names
training_data
programem i label_column_name
, uaktualnij zestaw SDK języka Python usługi Azure Machine Learning w wersji 1.6.0 lub nowszej. W przypadku poprzednich wersji zestawu SDK zapoznaj się z tematem , cv_splits_indices
ale pamiętaj, że jest on używany tylko z danymi wejściowymi X
zestawu danych i y
.
Ustawianie obliczeń metryk na potrzeby krzyżowego sprawdzania poprawności
W przypadku użycia krzyżowego sprawdzania poprawności metodą k-fold lub Monte Carlo metryki są obliczane na każdym fałszowaniu weryfikacji, a następnie agregowane. Operacja agregacji jest średnią dla metryk skalarnych i sumą dla wykresów. Metryki obliczane podczas krzyżowej walidacji są oparte na wszystkich składach i dlatego wszystkie próbki z zestawu treningowego. Aby uzyskać więcej informacji, zobacz Ocena wyników eksperymentu zautomatyzowanego uczenia maszynowego.
Jeśli jest używany niestandardowy zestaw weryfikacji lub automatycznie wybrany zestaw weryfikacji, metryki oceny modelu są obliczane tylko z tego zestawu weryfikacji, a nie danych treningowych.
Podaj testowy zestaw danych (wersja zapoznawcza)
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Możesz również podać dane testowe, aby ocenić zalecany model generowany przez zautomatyzowane uczenie maszynowe po zakończeniu eksperymentu. Po podaniu danych testowych dane są uznawane za oddzielone od trenowania i walidacji, aby zapobiec wszelkim wpływom stronniczości na wyniki przebiegu testu zalecanego modelu. Aby uzyskać więcej informacji, zobacz Szkolenie, walidacja i dane testowe.
Ostrzeżenie
Funkcja testowego zestawu danych nie jest dostępna w następujących scenariuszach zautomatyzowanego uczenia maszynowego:
- Zadania przetwarzania obrazów
- Wiele modeli i hiearchical time-series (HTS) prognozowanie trenowania (wersja zapoznawcza)
- Prognozowanie zadań, w których włączono sieci neuronowe uczenia głębokiego (DNN)
- Zautomatyzowane uczenie maszynowe działa z lokalnych obliczeń lub klastrów usługi Azure Databricks
Zestawy danych testowych muszą być w postaci zestawu danych tabelarycznych usługi Azure Machine Learning. Możesz określić testowy zestaw danych z parametrami test_data
i test_size
w AutoMLConfig
obiekcie . Te parametry wzajemnie się wykluczają i nie można ich określić w tym samym czasie ani z parametrami cv_split_column_names
lub cv_splits_indices
.
AutoMLConfig
W obiekcie użyj parametru test_data
, aby określić istniejący zestaw danych:
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Aby użyć podziału trenowania/testu zamiast bezpośredniego podawania danych testowych, użyj parametru test_size
podczas tworzenia .AutoMLConfig
Ten parametr musi być wartością zmiennoprzecinkową z zakresu od 0,0 do 1,0 na wyłączność. Określa wartość procentową zestawu danych trenowania do użycia dla zestawu danych testowych.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
Poniżej przedstawiono kilka innych zagadnień dotyczących pracy z testowym zestawem danych:
- W przypadku zadań regresji używane jest losowe próbkowanie.
- W przypadku zadań klasyfikacji używane jest próbkowanie warstwowe, ale próbkowanie losowe jest używane jako rezerwowe, gdy próbkowanie warstwowe nie jest możliwe.
Uwaga
W scenariuszach prognozowania nie można obecnie określić zestawu danych testowego przy użyciu podziału trenowania/testu z parametrem test_size
.
Przekazanie test_data
parametrów lub test_size
do AutoMLConfig
obiektu powoduje automatyczne wyzwolenie zdalnego przebiegu testu po zakończeniu eksperymentu. Ten przebieg testu używa podanych danych testowych do oceny najlepszego modelu zalecanego przez zautomatyzowane uczenie maszynowe. Aby uzyskać więcej informacji, zobacz Pobieranie wyników zadania testowego.