Udostępnij za pośrednictwem


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

Ważne

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

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 lub n_cross_validations parametr, ale nie oba.
  • W przypadku używania parametru validation_data należy również określić training_data parametry i label_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_indicesale 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.

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.