Konfigurowanie eksperymentów zautomatyzowanego uczenia maszynowego w języku PythonConfigure automated ML experiments in Python

W tym przewodniku dowiesz się, jak definiować różne ustawienia konfiguracji zautomatyzowanych eksperymentów uczenia maszynowego za pomocą zestawu SDK Azure Machine Learning.In this guide, learn how to define various configuration settings of your automated machine learning experiments with the Azure Machine Learning SDK. Automatyczne Uczenie maszynowe wybiera algorytm i parametry i tworzy model gotowy do wdrożenia.Automated machine learning picks an algorithm and hyperparameters for you and generates a model ready for deployment. Istnieje kilka opcji, których można użyć do skonfigurowania zautomatyzowanych eksperymentów w usłudze Machine Learning.There are several options that you can use to configure automated machine learning experiments.

Aby wyświetlić przykłady zautomatyzowanych eksperymentów dotyczących uczenia maszynowego, zobacz Samouczek: uczenie modelu klasyfikacji przy użyciu zautomatyzowanego uczenia maszynowego lub modeli szkoleń z automatycznym uczeniem maszynowym w chmurze.To view examples of automated machine learning experiments, see Tutorial: Train a classification model with automated machine learning or Train models with automated machine learning in the cloud.

Opcje konfiguracji dostępne w ramach automatycznego uczenia maszynowego:Configuration options available in automated machine learning:

  • Wybierz typ eksperymentu: klasyfikację, regresję lub prognozowanie szeregów czasowychSelect your experiment type: Classification, Regression, or Time Series Forecasting
  • Źródło danych, formaty i pobieranie danychData source, formats, and fetch data
  • Wybierz obiekt docelowy obliczeń: lokalny lub zdalnyChoose your compute target: local or remote
  • Ustawienia zautomatyzowanego eksperymentu w usłudze Machine LearningAutomated machine learning experiment settings
  • Uruchamianie eksperymentu zautomatyzowanego uczenia maszynowegoRun an automated machine learning experiment
  • Eksplorowanie metryk modeluExplore model metrics
  • Zarejestruj i Wdróż modelRegister and deploy model

Jeśli wolisz nie używać kodu, możesz również utworzyć automatyczne eksperymenty uczenia maszynowego w programie Azure Machine Learning Studio.If you prefer a no code experience, you can also Create your automated machine learning experiments in Azure Machine Learning studio.

Wymagania wstępnePrerequisites

W tym artykule należyFor this article you need,

Wybieranie typu eksperymentuSelect your experiment type

Przed rozpoczęciem eksperymentu należy określić rodzaj rozwiązywanego problemu z uczeniem maszynowym.Before you begin your experiment, you should determine the kind of machine learning problem you are solving. Automatyczne Uczenie maszynowe obsługuje typy zadań classification , regression i forecasting .Automated machine learning supports task types of classification, regression, and forecasting. Dowiedz się więcej o typach zadań.Learn more about task types.

Poniższy kod używa task parametru w AutoMLConfig konstruktorze, aby określić typ eksperymentu jako classification .The following code uses the task parameter in the AutoMLConfig constructor to specify the experiment type as classification.

from azureml.train.automl import AutoMLConfig

# task can be one of classification, regression, forecasting
automl_config = AutoMLConfig(task = "classification")

Źródło i format danychData source and format

Zautomatyzowane uczenie maszynowe obsługuje dane, które znajdują się na komputerze lokalnym lub w chmurze, na przykład w usłudze Azure Blob Storage.Automated machine learning supports data that resides on your local desktop or in the cloud such as Azure Blob Storage. Dane można odczytać do Pandas Dataframe lub Azure Machine Learning TabularDataset.The data can be read into a Pandas DataFrame or an Azure Machine Learning TabularDataset. Dowiedz się więcej o zestawach danych.Learn more about datasets.

Wymagania dotyczące danych szkoleniowych w usłudze Machine Learning:Requirements for training data in machine learning:

  • Dane muszą być w formie tabelarycznej.Data must be in tabular form.
  • Wartość do przewidywania, kolumna docelowa, musi znajdować się w danych.The value to predict, target column, must be in the data.

W przypadku eksperymentów zdalnych dane szkoleniowe muszą być dostępne ze zdalnych obliczeń.For remote experiments, training data must be accessible from the remote compute. Zautomatyzowane uczenie maszynowe akceptuje tabelaryczne zestawy danych usługi Azure Machine Learning tylko podczas pracy na zdalnych zasobach obliczeniowych.AutoML only accepts Azure Machine Learning TabularDatasets when working on a remote compute.

Zestawy danych usługi Azure Machine Learning udostępniają następujące funkcje:Azure Machine Learning datasets expose functionality to:

  • Łatwo Transferuj dane ze źródeł plików statycznych lub adresów URL do obszaru roboczego.Easily transfer data from static files or URL sources into your workspace.
  • Udostępnianie danych dla skryptów szkoleniowych w przypadku korzystania z zasobów obliczeniowych w chmurze.Make your data available to training scripts when running on cloud compute resources. Zobacz, jak uczenie się z zestawami danych , aby zapoznać się z przykładem użycia Dataset klasy do instalowania danych do zdalnego obiektu docelowego obliczeń.See How to train with datasets for an example of using the Dataset class to mount data to your remote compute target.

Poniższy kod tworzy TabularDataset na podstawie adresu URL sieci Web.The following code creates a TabularDataset from a web url. Zobacz Create a TabularDatasets for Code — przykłady dotyczące tworzenia zestawów danych z innych źródeł, takich jak pliki lokalne i magazyny danych.See Create a TabularDatasets for code examples on how to create datasets from other sources like local files and datastores.

from azureml.core.dataset import Dataset
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)

W przypadku lokalnych eksperymentów obliczeniowych zalecamy Pandas dataframes w celu skrócenia czasu przetwarzania.For local compute experiments, we recommend pandas dataframes for faster processing times.

import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.read_csv("your-local-file.csv")
train_data, test_data = train_test_split(df, test_size=0.1, random_state=42)
label = "label-col-name"

Szkolenia, walidacja i dane testoweTraining, validation, and test data

Możesz określić oddzielne dane szkoleniowe i zestawy danych sprawdzania poprawności bezpośrednio w AutoMLConfig konstruktorze.You can specify separate training data and validation data sets directly in the AutoMLConfig constructor. Dowiedz się więcej na temat sposobu konfigurowania podziałów danych i krzyżowego sprawdzania poprawności dla eksperymentów AutoML.Learn more about how to configure data splits and cross validation for your AutoML experiments.

Jeśli nie określisz jawnie validation_data n_cross_validation parametru lub, zautomatyzowanej sieci stosuje domyślne techniki, aby określić sposób sprawdzania poprawności.If you do not explicitly specify a validation_data or n_cross_validation parameter, automated ML applies default techniques to determine how validation is performed. To obliczanie zależy od liczby wierszy w zestawie danych przypisanych do training_data parametru.This determination depends on the number of rows in the dataset assigned to your training_data parameter.

 Rozmiar danych szkoleniowych  Training data size Technika walidacjiValidation technique
Więcej   niż   20 000   wierszyLarger than 20,000 rows Zastosowano podział danych szkolenia/walidacji.Train/validation data split is applied. Wartość domyślna to przejęcie 10% początkowego zestawu danych szkoleniowych jako zestawu walidacji.The default is to take 10% of the initial training data set as the validation set. Z kolei ten zestaw walidacji jest używany do obliczania metryk.In turn, that validation set is used for metrics calculation.
Mniejsze   niż   20 000   wierszySmaller than 20,000 rows Stosowana jest metoda weryfikacji krzyżowej.Cross-validation approach is applied. Domyślna liczba zagięć zależy od liczby wierszy.The default number of folds depends on the number of rows.
Jeśli zestaw danych jest mniejszy niż 1 000 wierszy, używane są 10 zagięć.If the dataset is less than 1,000 rows, 10 folds are used.
Jeśli wiersze są z zakresu od 1 000 do 20 000, używane są trzy składowe.If the rows are between 1,000 and 20,000, then three folds are used.

W tej chwili należy podać własne dane testowe do oceny modelu.At this time, you need to provide your own test data for model evaluation. Przykładowy kod służący do wprowadzania własnych danych testowych do oceny modelu znajduje się w sekcji test tego notesu Jupyter.For a code example of bringing your own test data for model evaluation see the Test section of this Jupyter notebook.

Obliczenia w celu uruchomienia eksperymentuCompute to run experiment

Następnie określ, gdzie będzie szkolony model.Next determine where the model will be trained. Eksperyment treningowy zautomatyzowanego uczenia maszynowego można uruchomić w następujących opcjach obliczeniowych.An automated machine learning training experiment can run on the following compute options. Poznaj zalety i wady lokalnych i zdalnych opcji obliczeniowych.Learn the pros and cons of local and remote compute options.

  • Komputer lokalny , taki jak pulpit lokalny lub laptop, zazwyczaj w przypadku małego zestawu danych i nadal w fazie eksploracji.Your local machine such as a local desktop or laptop – Generally when you have a small dataset and you are still in the exploration stage. Zapoznaj się z tym notesem zawierającym przykład obliczeń lokalnych.See this notebook for a local compute example.

  • Maszyna zdalna w chmurze — Azure Machine Learning zarządzane obliczenia to usługa zarządzana, która umożliwia uczenie modeli uczenia maszynowego w klastrach maszyn wirtualnych platformy Azure.A remote machine in the cloud – Azure Machine Learning Managed Compute is a managed service that enables the ability to train machine learning models on clusters of Azure virtual machines.

    Zobacz ten notes, aby zapoznać się z przykładem obliczeń zdalnych przy użyciu usługi Azure Machine Learning Managed Compute.See this notebook for a remote example using Azure Machine Learning Managed Compute.

  • Klaster Azure Databricks w ramach subskrypcji platformy Azure.An Azure Databricks cluster in your Azure subscription. Więcej szczegółów można znaleźć w temacie Konfigurowanie klastra Azure Databricks na potrzeby zautomatyzowanej ml.You can find more details in Set up an Azure Databricks cluster for automated ML. Zobacz tę witrynę w witrynie GitHub , aby zapoznać się z przykładami notesów z Azure Databricks.See this GitHub site for examples of notebooks with Azure Databricks.

Skonfiguruj ustawienia eksperymentuConfigure your experiment settings

Istnieje kilka opcji, których można użyć do skonfigurowania automatycznego eksperymentu uczenia maszynowego.There are several options that you can use to configure your automated machine learning experiment. Te parametry są ustawiane przez utworzenie wystąpienia AutoMLConfig obiektu.These parameters are set by instantiating an AutoMLConfig object. Zapoznaj się z pełną listą parametrów w klasie AutoMLConfig .See the AutoMLConfig class for a full list of parameters.

Oto niektóre przykłady:Some examples include:

  1. Eksperyment klasyfikacji korzystający z AUC ważone jako Metryka podstawowa z limitem czasu eksperymentu w minutach ustawionym na 30 minut i 2 zgięcia wzajemnej walidacji.Classification experiment using AUC weighted as the primary metric with experiment timeout minutes set to 30 minutes and 2 cross-validation folds.

        automl_classifier=AutoMLConfig(task='classification',
                                       primary_metric='AUC_weighted',
                                       experiment_timeout_minutes=30,
                                       blocked_models=['XGBoostClassifier'],
                                       training_data=train_data,
                                       label_column_name=label,
                                       n_cross_validations=2)
    
  2. Poniższy przykład to eksperyment regresji ustawiony na koniec po 60 minutach z pięcioma zgięciami krzyżowymi.The following example is a regression experiment set to end after 60 minutes with five validation cross folds.

       automl_regressor = AutoMLConfig(task='regression',
                                       experiment_timeout_minutes=60,
                                       allowed_models=['KNN'],
                                       primary_metric='r2_score',
                                       training_data=train_data,
                                       label_column_name=label,
                                       n_cross_validations=5)
    
  3. Zadania prognozowania wymagają dodatkowej instalacji, aby uzyskać więcej informacji, zobacz artykuł model prognozowania "autouczenie" .Forecasting tasks require extra setup, see the Autotrain a time-series forecast model article for more details.

    time_series_settings = {
        'time_column_name': time_column_name,
        'time_series_id_column_names': time_series_id_column_names,
        'forecast_horizon': n_test_periods
    }
    
    automl_config = AutoMLConfig(task = 'forecasting',
                                 debug_log='automl_oj_sales_errors.log',
                                 primary_metric='normalized_root_mean_squared_error',
                                 experiment_timeout_minutes=20,
                                 training_data=train_data,
                                 label_column_name=label,
                                 n_cross_validations=5,
                                 path=project_folder,
                                 verbosity=logging.INFO,
                                 **time_series_settings)
    

Obsługiwane modeleSupported models

Automatyczne Uczenie maszynowe próbuje różne modele i algorytmy podczas procesu automatyzacji i dostrajania.Automated machine learning tries different models and algorithms during the automation and tuning process. Jako użytkownik nie ma potrzeby określania algorytmu.As a user, there is no need for you to specify the algorithm.

Trzy różne task wartości parametrów określają listę algorytmów lub modeli, które mają zostać zastosowane.The three different task parameter values determine the list of algorithms, or models, to apply. Użyj allowed_models parametrów lub, blocked_models Aby kontynuować modyfikowanie iteracji z dostępnymi modelami do dołączania lub wykluczania.Use the allowed_models or blocked_models parameters to further modify iterations with the available models to include or exclude.

Poniższa tabela zawiera podsumowanie obsługiwanych modeli według typu zadania.The following table summarizes the supported models by task type.

Uwaga

Jeśli planujesz eksportować modele utworzone przez funkcję automl do modelu ONNX, tylko te algorytmy wskazywane przez * są możliwe do przekonwertowania na format ONNX.If you plan to export your auto ML created models to an ONNX model, only those algorithms indicated with an * are able to be converted to the ONNX format. Dowiedz się więcej o konwertowaniu modeli na ONNX.Learn more about converting models to ONNX.

Należy również pamiętać, że w tym momencie ONNX obsługuje tylko zadania klasyfikacji i regresji.Also note, ONNX only supports classification and regression tasks at this time.

KlasyfikacjaClassification RegresjaRegression Prognozowanie szeregów czasowychTime Series Forecasting
Regresja logistyczna*Logistic Regression* Sieć elastyczna*Elastic Net* Sieć elastycznaElastic Net
Lekki GBM*Light GBM* Lekki GBM*Light GBM* Lekki GBMLight GBM
Zwiększanie gradientu*Gradient Boosting* Zwiększanie gradientu*Gradient Boosting* Zwiększanie gradientuGradient Boosting
Drzewo decyzyjne*Decision Tree* Drzewo decyzyjne*Decision Tree* Drzewo decyzyjneDecision Tree
Najbliższe sąsiednie sąsiedzi*K Nearest Neighbors* Najbliższe sąsiednie sąsiedzi*K Nearest Neighbors* Najbliższe sąsiednie sąsiedziK Nearest Neighbors
Liniowy SVC*Linear SVC* LARS Lasso*LARS Lasso* LARS/LassoLARS Lasso
Klasyfikacja wektorów pomocy technicznej (SVC)*Support Vector Classification (SVC)* Stochastycznego gradientu (SGD)*Stochastic Gradient Descent (SGD)* Stochastycznego gradientu (SGD)Stochastic Gradient Descent (SGD)
Las losowy*Random Forest* Las losowy*Random Forest* Las losowyRandom Forest
Skrajnie losowe drzewa*Extremely Randomized Trees* Skrajnie losowe drzewa*Extremely Randomized Trees* Skrajnie losowe drzewaExtremely Randomized Trees
Xgboost*Xgboost* Xgboost*Xgboost* XgboostXgboost
Klasyfikator średniej PerceptronAveraged Perceptron Classifier Gradient online z RegresoremOnline Gradient Descent Regressor AutoARIMAAuto-ARIMA
Algorytm Bayesa Bayesa*Naive Bayes* Szybka Regresor liniowaFast Linear Regressor ProphetProphet
Stochastycznego gradientu (SGD)*Stochastic Gradient Descent (SGD)* ForecastTCNForecastTCN
Klasyfikator liniowy SVM*Linear SVM Classifier*

Metryka podstawowaPrimary Metric

primary metricParametr określa metrykę, która ma być używana podczas uczenia modelu na potrzeby optymalizacji.The primary metric parameter determines the metric to be used during model training for optimization. Dostępne metryki, które można wybrać, są określane przez wybrany typ zadania, a w poniższej tabeli przedstawiono prawidłowe Podstawowe metryki dla każdego typu zadania.The available metrics you can select is determined by the task type you choose, and the following table shows valid primary metrics for each task type.

Wybór głównej metryki dla zautomatyzowanej uczenia maszynowego w celu optymalizacji zależy od wielu czynników.Choosing a primary metric for automated machine learning to optimize depends on many factors. Zalecamy podstawowe zagadnienie, aby wybrać metrykę, która najlepiej odpowiada Twoim potrzebom biznesowym.We recommend your primary consideration be to choose a metric which best represents your business needs. Następnie należy rozważyć, czy Metryka jest odpowiednia dla profilu zestawu danych (rozmiar danych, zakres, dystrybucja klas itp.).Then consider if the metric is suitable for your dataset profile (data size, range, class distribution, etc.).

Zapoznaj się z określonymi definicjami tych metryk w temacie Omówienie zautomatyzowanych wyników uczenia maszynowego.Learn about the specific definitions of these metrics in Understand automated machine learning results.

KlasyfikacjaClassification RegresjaRegression Prognozowanie szeregów czasowychTime Series Forecasting
accuracy spearman_correlation spearman_correlation
AUC_weighted normalized_root_mean_squared_error normalized_root_mean_squared_error
average_precision_score_weighted r2_score r2_score
norm_macro_recall normalized_mean_absolute_error normalized_mean_absolute_error
precision_score_weighted

Podstawowe metryki dla scenariuszy klasyfikacjiPrimary metrics for classification scenarios

Metryki po stronie progowej, takie jak accuracy ,, average_precision_score_weighted norm_macro_recall i precision_score_weighted mogą nie optymalizować dla zestawów danych, które są małe, mają bardzo duże pochylenie klas (niezrównoważone klasy) lub gdy oczekiwana wartość metryki jest bardzo bliska 0,0 lub 1,0.Post thresholded metrics, like accuracy, average_precision_score_weighted, norm_macro_recall, and precision_score_weighted may not optimize as well for datasets which are small, have very large class skew (class imbalance), or when the expected metric value is very close to 0.0 or 1.0. W takich przypadkach AUC_weighted może być lepszym wyborem dla metryki głównej.In those cases, AUC_weighted can be a better choice for the primary metric. Po zakończeniu automatycznego uczenia maszynowego można wybrać model, który zostanie utworzony na podstawie metryki najlepiej dopasowanej do potrzeb Twojej firmy.After automated machine learning completes, you can choose the winning model based on the metric best suited to your business needs.

MetricMetric Przykładowe przypadki użycia:Example use case(s)
accuracy Klasyfikacja obrazu, analiza tonacji, Prognoza zmianImage classification, Sentiment analysis, Churn prediction
AUC_weighted Wykrywanie oszustw, klasyfikacja obrazu, wykrywanie anomalii/wykrywanie spamuFraud detection, Image classification, Anomaly detection/spam detection
average_precision_score_weighted Analiza tonacjiSentiment analysis
norm_macro_recall Prognoza zmianChurn prediction
precision_score_weighted

Podstawowe metryki dla scenariuszy regresjiPrimary metrics for regression scenarios

Metryki takie jak r2_score i spearman_correlation mogą lepiej reprezentować jakość modelu, gdy skala wartości do przewidywania obejmuje wiele zamówień wielkości.Metrics like r2_score and spearman_correlation can better represent the quality of model when the scale of the value-to-predict covers many orders of magnitude. W przypadku oszacowania wynagrodzeń na wystąpieniach, gdzie wiele osób ma wynagrodzenie $20 000 do $100 000, ale skala jest bardzo wysoka z niektórymi zarobkami w zakresie $100 mln.For instance salary estimation, where many people have a salary of $20k to $100k, but the scale goes very high with some salaries in the $100M range.

normalized_mean_absolute_error``normalized_root_mean_squared_errorw takim przypadku w tym przypadku błąd przewidywania $20 000 jest taki sam dla procesu roboczego z wynagrodzeniem $30k jako proces roboczy, który ma wartość $20 mln.normalized_mean_absolute_error and normalized_root_mean_squared_error would in this case treat a $20k prediction error the same for a worker with a $30k salary as a worker making $20M. W rzeczywistości przewidywanie tylko $20 000 wyłączone z wynagrodzenia $20 mln jest bardzo bliskie (mała 0,1% różnicy względnej), natomiast $20 000 off from $30k nie jest bliski (duża wartość 67%).While in reality, predicting only $20k off from a $20M salary is very close (a small 0.1% relative difference), whereas $20k off from $30k is not close (a large 67% relative difference). normalized_mean_absolute_error i normalized_root_mean_squared_error są przydatne, gdy wartości do przewidywania są w podobnej skali.normalized_mean_absolute_error and normalized_root_mean_squared_error are useful when the values to predict are in a similar scale.

MetricMetric Przykładowe przypadki użycia:Example use case(s)
spearman_correlation
normalized_root_mean_squared_error Prognoza cenowa (dom/produkt/Porada), przegląd prognozowania ocenyPrice prediction (house/product/tip), Review score prediction
r2_score Opóźnienie linii lotniczej, oszacowanie wynagrodzeń, czas rozpoznawania usterekAirline delay, Salary estimation, Bug resolution time
normalized_mean_absolute_error

Podstawowe metryki dla scenariuszy prognozowania szeregów czasowychPrimary metrics for time series forecasting scenarios

Zobacz uwagi dotyczące regresji powyżej.See regression notes, above.

MetricMetric Przykładowe przypadki użycia:Example use case(s)
spearman_correlation
normalized_root_mean_squared_error Prognozowanie cen (prognozowanie), optymalizacja spisu, prognozowanie popytuPrice prediction (forecasting), Inventory optimization, Demand forecasting
r2_score Prognozowanie cen (prognozowanie), optymalizacja spisu, prognozowanie popytuPrice prediction (forecasting), Inventory optimization, Demand forecasting
normalized_mean_absolute_error

Cechowania danychData featurization

W każdym automatycznym doświadczeniu uczenia maszynowego Twoje dane są automatycznie skalowane i znormalizowane, aby ułatwić określonym algorytmom, które są wrażliwe na funkcje różnej skali.In every automated machine learning experiment, your data is automatically scaled and normalized to help certain algorithms that are sensitive to features that are on different scales. Takie skalowanie i normalizacja są określane jako cechowania.This scaling and normalization is referred to as featurization. Zobacz cechowania in AutoML , aby uzyskać szczegółowe informacje i przykłady kodu.See Featurization in AutoML for more detail and code examples.

Podczas konfigurowania eksperymentów w AutoMLConfig obiekcie można włączyć/wyłączyć ustawienie featurization .When configuring your experiments in your AutoMLConfig object, you can enable/disable the setting featurization. W poniższej tabeli przedstawiono zaakceptowane ustawienia dla cechowania w obiekcie AutoMLConfig.The following table shows the accepted settings for featurization in the AutoMLConfig object.

Konfiguracja cechowaniaFeaturization Configuration OpisDescription
"featurization": 'auto' Wskazuje, że w ramach przetwarzania wstępnego guardrails danych i kroki cechowania są wykonywane automatycznie.Indicates that as part of preprocessing, data guardrails and featurization steps are performed automatically. Ustawienie domyślne.Default setting.
"featurization": 'off' Wskazuje, że krok cechowania nie powinien być wykonywany automatycznie.Indicates featurization step shouldn't be done automatically.
"featurization": 'FeaturizationConfig' Wskazuje dostosowany krok cechowania.Indicates customized featurization step should be used. Dowiedz się, jak dostosować cechowania.Learn how to customize featurization.

Uwaga

Zautomatyzowane kroki cechowania uczenia maszynowego (normalizacja funkcji, obsługa brakujących danych, konwertowanie tekstu na liczbowe itp.) staje się częścią modelu źródłowego.Automated machine learning featurization steps (feature normalization, handling missing data, converting text to numeric, etc.) become part of the underlying model. Korzystając z modelu dla prognoz, te same kroki cechowania stosowane podczas uczenia są automatycznie stosowane do danych wejściowych.When using the model for predictions, the same featurization steps applied during training are applied to your input data automatically.

Konfiguracja kompletnaEnsemble configuration

Modele kompletów są domyślnie włączone i pojawiają się jako ostateczne iteracje przebiegu w AutoML.Ensemble models are enabled by default, and appear as the final run iterations in an AutoML run. Obecnie VotingEnsemble i StackEnsemble są obsługiwane.Currently VotingEnsemble and StackEnsemble are supported.

Głosowanie implementuje rozdanie głosu, które używa średnich ważonych.Voting implements soft-voting, which uses weighted averages. Implementacja stosu korzysta z dwóch implementacji warstwy, w której pierwsza warstwa ma takie same modele jak kompletna prawa głosu, a drugi model warstwy służy do znajdowania optymalnej kombinacji modeli z pierwszej warstwy.The stacking implementation uses a two layer implementation, where the first layer has the same models as the voting ensemble, and the second layer model is used to find the optimal combination of the models from the first layer.

W przypadku korzystania z modeli ONNX lub z włączonym wyjaśnieniem modelu stos jest wyłączony i wykorzystane jest tylko głosowanie.If you are using ONNX models, or have model-explainability enabled, stacking is disabled and only voting is utilized.

Szkolenia typu "kompletność" można wyłączyć za pomocą enable_voting_ensemble enable_stack_ensemble parametrów i.Ensemble training can be disabled by using the enable_voting_ensemble and enable_stack_ensemble boolean parameters.

automl_classifier = AutoMLConfig(
        task='classification',
        primary_metric='AUC_weighted',
        experiment_timeout_minutes=30,
        training_data=data_train,
        label_column_name=label,
        n_cross_validations=5,
        enable_voting_ensemble=False,
        enable_stack_ensemble=False
        )

Aby zmienić domyślne zachowanie funkcji, istnieje wiele argumentów domyślnych, które mogą być dostarczane jako kwargs AutoMLConfig obiekty.To alter the default ensemble behavior, there are multiple default arguments that can be provided as kwargs in an AutoMLConfig object.

Ważne

Następujące parametry nie są jawnymi parametrami klasy AutoMLConfig.The following parameters aren't explicit parameters of the AutoMLConfig class.

  • ensemble_download_models_timeout_sec: Podczas generowania modelu VotingEnsemble i StackEnsemble pobierane są liczne dopasowane modele z poprzednich uruchomień podrzędnych.ensemble_download_models_timeout_sec: During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded. Jeśli wystąpi ten błąd: AutoMLEnsembleException: Could not find any models for running ensembling , może być konieczne dostarczenie więcej czasu na pobranie modeli.If you encounter this error: AutoMLEnsembleException: Could not find any models for running ensembling, then you may need to provide more time for the models to be downloaded. Wartość domyślna to 300 sekund do pobierania tych modeli równolegle i nie obowiązuje limit maksymalnego limitu czasu.The default value is 300 seconds for downloading these models in parallel and there is no maximum timeout limit. Skonfiguruj ten parametr o wyższej wartości niż 300 s, jeśli potrzebujesz więcej czasu.Configure this parameter with a higher value than 300 secs, if more time is needed.

    Uwaga

    Jeśli zostanie osiągnięty limit czasu i zostaną pobrane modele, ensembling kontynuuje pracę z dowolną liczbą modeli, które zostały pobrane.If the timeout is reached and there are models downloaded, then the ensembling proceeds with as many models it has downloaded. Nie jest wymagane, aby wszystkie modele musiały zostać pobrane do końca przed upływem tego limitu czasu.It's not required that all the models need to be downloaded to finish within that timeout.

Następujące parametry dotyczą tylko modeli StackEnsemble :The following parameters only apply to StackEnsemble models:

  • stack_meta_learner_type: meta-uczyć się model przeszkolony w danych wyjściowych poszczególnych modeli heterogenicznych.stack_meta_learner_type: the meta-learner is a model trained on the output of the individual heterogeneous models. Domyślne meta uczy są LogisticRegression przeznaczone do zadań klasyfikacji (lub LogisticRegressionCV w przypadku włączenia wzajemnej walidacji) oraz ElasticNet dla zadań regresji/prognozowania (lub w ElasticNetCV przypadku włączenia weryfikacji krzyżowej).Default meta-learners are LogisticRegression for classification tasks (or LogisticRegressionCV if cross-validation is enabled) and ElasticNet for regression/forecasting tasks (or ElasticNetCV if cross-validation is enabled). Ten parametr może być jednym z następujących ciągów:,,,,, LogisticRegression LogisticRegressionCV LightGBMClassifier ElasticNet ElasticNetCV LightGBMRegressor , lub LinearRegression .This parameter can be one of the following strings: LogisticRegression, LogisticRegressionCV, LightGBMClassifier, ElasticNet, ElasticNetCV, LightGBMRegressor, or LinearRegression.

  • stack_meta_learner_train_percentage: określa proporcję zestawu szkoleniowego (podczas wybierania typu uczenia i walidacji), które mają zostać zarezerwowane do uczenia się.stack_meta_learner_train_percentage: specifies the proportion of the training set (when choosing train and validation type of training) to be reserved for training the meta-learner. Wartość domyślna to 0.2.Default value is 0.2.

  • stack_meta_learner_kwargs: parametry opcjonalne do przekazania do inicjatora meta.stack_meta_learner_kwargs: optional parameters to pass to the initializer of the meta-learner. Te parametry i typy parametrów stanowią duplikaty parametrów i typów parametrów z odpowiedniego konstruktora modelu i są przekazywane do konstruktora modelu.These parameters and parameter types mirror the parameters and parameter types from the corresponding model constructor, and are forwarded to the model constructor.

Poniższy kod przedstawia przykład określania zachowania niestandardowego w AutoMLConfig obiekcie.The following code shows an example of specifying custom ensemble behavior in an AutoMLConfig object.

ensemble_settings = {
    "ensemble_download_models_timeout_sec": 600
    "stack_meta_learner_type": "LogisticRegressionCV",
    "stack_meta_learner_train_percentage": 0.3,
    "stack_meta_learner_kwargs": {
        "refit": True,
        "fit_intercept": False,
        "class_weight": "balanced",
        "multi_class": "auto",
        "n_jobs": -1
    }
}

automl_classifier = AutoMLConfig(
        task='classification',
        primary_metric='AUC_weighted',
        experiment_timeout_minutes=30,
        training_data=train_data,
        label_column_name=label,
        n_cross_validations=5,
        **ensemble_settings
        )

Kryteria wyjściaExit criteria

Istnieje kilka opcji, które można zdefiniować w AutoMLConfig, aby zakończyć eksperyment.There are a few options you can define in your AutoMLConfig to end your experiment.

KryteriaCriteria description (opis)description
Brak   kryteriówNo criteria Jeśli nie określisz żadnych parametrów zakończenia, eksperyment kontynuuje działanie, dopóki nie zostanie wprowadzony kolejny postęp w głównej metryce.If you do not define any exit parameters the experiment continues until no further progress is made on your primary metric.
Po upływie     dłuższego     czasuAfter a length of time Użyj experiment_timeout_minutes Ustawienia w ustawieniach, aby określić czas, w ciągu którego eksperyment powinien nadal działać.Use experiment_timeout_minutes in your settings to define how long, in minutes, your experiment should continue to run.

Aby zapobiec błędom przekroczenia limitu czasu eksperymentu, istnieje co najmniej 15 minut lub 60 minut, jeśli rozmiar wiersza według kolumny przekracza 10 000 000.To help avoid experiment time out failures, there is a minimum of 15 minutes, or 60 minutes if your row by column size exceeds 10 million.
        Osiągnięto wynikA score has been reached Użyj experiment_exit_score kończenia eksperymentu po osiągnięciu określonego podstawowego wyniku metryki.Use experiment_exit_score completes the experiment after a specified primary metric score has been reached.

Uruchom eksperymentRun experiment

Dla zautomatyzowanej tablicy należy utworzyć Experiment obiekt, który jest obiektem nazwanym w Workspace używanym do uruchamiania eksperymentów.For automated ML, you create an Experiment object, which is a named object in a Workspace used to run experiments.

from azureml.core.experiment import Experiment

ws = Workspace.from_config()

# Choose a name for the experiment and specify the project folder.
experiment_name = 'Tutorial-automl'
project_folder = './sample_projects/automl-classification'

experiment = Experiment(ws, experiment_name)

Prześlij eksperyment, aby uruchomić i wygenerować model.Submit the experiment to run and generate a model. Przekaż AutoMLConfig do metody w submit celu wygenerowania modelu.Pass the AutoMLConfig to the submit method to generate the model.

run = experiment.submit(automl_config, show_output=True)

Uwaga

Zależności są najpierw instalowane na nowym komputerze.Dependencies are first installed on a new machine. Przed wyświetleniem danych wyjściowych może upłynąć do 10 minut.It may take up to 10 minutes before output is shown. Ustawienie show_output powoduje True , że dane wyjściowe są wyświetlane w konsoli programu.Setting show_output to True results in output being shown on the console.

Wiele przebiegów podrzędnych w klastrachMultiple child runs on clusters

Na klastrze, na którym jest już uruchomiony inny eksperyment, można wykonywać zautomatyzowane uruchomienia eksperymentów z systemem.Automated ML experiment child runs can be performed on a cluster that is already running another experiment. Jednak czas zależy od liczby węzłów w klastrze, a jeśli te węzły są dostępne do uruchamiania innego eksperymentu.However, the timing depends on how many nodes the cluster has, and if those nodes are available to run a different experiment.

Każdy węzeł w klastrze działa jako indywidualna maszyna wirtualna (VM), która może wykonywać pojedynczy przebieg szkoleniowy; w przypadku zautomatyzowanej ML oznacza to uruchomienie podrzędne.Each node in the cluster acts as an individual virtual machine (VM) that can accomplish a single training run; for automated ML this means a child run. Jeśli wszystkie węzły są zajęte, nowy eksperyment zostanie umieszczony w kolejce.If all the nodes are busy, the new experiment is queued. Jeśli jednak istnieją wolne węzły, nowy eksperyment uruchomi automatyczne uruchamianie elementów podrzędnych ML w ramach dostępnych węzłów/maszyn wirtualnych.But if there are free nodes, the new experiment will run automated ML child runs in parallel in the available nodes/VMs.

Aby ułatwić zarządzanie uruchomieniami podrzędnymi i kiedy można je wykonać, zalecamy utworzenie dedykowanego klastra na eksperyment i dopasowanie max_concurrent_iterations do liczby węzłów w klastrze.To help manage child runs and when they can be performed, we recommend you create a dedicated cluster per experiment, and match the number of max_concurrent_iterations of your experiment to the number of nodes in the cluster. W ten sposób można używać wszystkich węzłów klastra w tym samym czasie z liczbą współbieżnych uruchomień/iteracji podrzędnych.This way, you use all the nodes of the cluster at the same time with the number of concurrent child runs/iterations you want.

Skonfiguruj max_concurrent_iterations w AutoMLConfig obiekcie.Configure max_concurrent_iterations in your AutoMLConfig object. Jeśli nie jest skonfigurowany, domyślnie dozwolone jest tylko jedno współbieżne uruchomienie/iteracja na eksperymentie.If it is not configured, then by default only one concurrent child run/iteration is allowed per experiment.

Eksplorowanie modeli i metrykExplore models and metrics

Opcja zautomatyzowanej sieci umożliwia monitorowanie i ocenę wyników szkoleniowych.Automated ML offers options for you to monitor and evaluate your training results.

Można wyświetlić parametry, metody skalowania i normalizacji oraz algorytm stosowany do konkretnej zautomatyzowanej sieci, uruchamiając następujące niestandardowe rozwiązanie kodu.You can view the hyperparameters, the scaling and normalization techniques, and algorithm applied to a specific automated ML run with the following custom code solution.

Poniżej definiuje metodę niestandardową, print_model() która drukuje parametry każdego kroku potoku szkolenia automatu ml.The following defines the custom method, print_model(), which prints the hyperparameters of each step of the automated ML training pipeline.

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()   

W przypadku przebiegu lokalnego lub zdalnego, który został właśnie przesłany i przeszkolony z poziomu tego samego notesu eksperymentu, można przekazać najlepszy model przy użyciu get_output() metody.For a local or remote run that was just submitted and trained from within the same experiment notebook, you can pass in the best model using the get_output() method.

best_run, fitted_model = run.get_output()
print(best_run)
         
print_model(fitted_model)

Następujące dane wyjściowe wskazują, że:The following output indicates that:

  • Technika StandardScalerWrapper została użyta do skalowania i normalizacji danych przed szkoleniem.The StandardScalerWrapper technique was used to scale and normalize the data prior to training.

  • Algorytm XGBoostClassifier został zidentyfikowany jako najlepszy przebieg, a także zawiera wartości parametrów.The XGBoostClassifier algorithm was identified as the best run, and also shows the hyperparameter values.

StandardScalerWrapper
{'class_name': 'StandardScaler',
 'copy': True,
 'module_name': 'sklearn.preprocessing.data',
 'with_mean': False,
 'with_std': False}

XGBoostClassifier
{'base_score': 0.5,
 'booster': 'gbtree',
 'colsample_bylevel': 1,
 'colsample_bynode': 1,
 'colsample_bytree': 0.6,
 'eta': 0.4,
 'gamma': 0,
 'learning_rate': 0.1,
 'max_delta_step': 0,
 'max_depth': 8,
 'max_leaves': 0,
 'min_child_weight': 1,
 'missing': nan,
 'n_estimators': 400,
 'n_jobs': 1,
 'nthread': None,
 'objective': 'multi:softprob',
 'random_state': 0,
 'reg_alpha': 0,
 'reg_lambda': 1.6666666666666667,
 'scale_pos_weight': 1,
 'seed': None,
 'silent': None,
 'subsample': 0.8,
 'tree_method': 'auto',
 'verbose': -10,
 'verbosity': 1}

W przypadku istniejącego przebiegu z innego eksperymentu w obszarze roboczym Uzyskaj konkretny identyfikator uruchomienia, który chcesz zbadać i przekazać do print_model() metody.For an existing run from a different experiment in your workspace, obtain the specific run ID you want to explore and pass that into the print_model() method.

from azureml.train.automl.run import AutoMLRun

ws = Workspace.from_config()
experiment = ws.experiments['automl-classification']
automl_run = AutoMLRun(experiment, run_id = 'AutoML_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')

automl_run
best_run, model_from_aml = automl_run.get_output()

print_model(model_from_aml)

Uwaga

Algorytmy zautomatyzowanej sieci mają nieodłączną losowość, która może spowodować nieznaczne wahania w końcowym wyniku metryk, na przykład dokładność.The algorithms automated ML employs have inherent randomness that can cause slight variation in a recommended model's final metrics score, like accuracy. Zautomatyzowanej ML wykonuje również operacje na danych, takie jak podzielenie testów pociągowych, podzielone lub krzyżowe sprawdzanie poprawności w razie potrzeby.Automated ML also performs operations on data such as train-test split, train-validation split or cross-validation when necessary. Dlatego w przypadku uruchamiania eksperymentu z tymi samymi ustawieniami konfiguracji i metryką podstawową wiele razy prawdopodobnie zobaczysz zmiany w przypadku wszystkich eksperymentów końcowych metryk, ze względu na te czynniki.So if you run an experiment with the same configuration settings and primary metric multiple times, you'll likely see variation in each experiments final metrics score due to these factors.

Rejestrowanie i wdrażanie modeliRegister and deploy models

Możesz zarejestrować model, aby można było wrócić do niego do późniejszego użycia.You can register a model, so you can come back to it for later use.

Aby zarejestrować model na podstawie zautomatyzowanego przebiegu ML, użyj register_model() metody.To register a model from an automated ML run, use the register_model() method.


best_run, fitted_model = run.get_output()
print(fitted_model.steps)

model_name = best_run.properties['model_name']
description = 'AutoML forecast example'
tags = None

model = remote_run.register_model(model_name = model_name, 
                                  description = description, 
                                  tags = tags)

Aby uzyskać szczegółowe informacje na temat sposobu tworzenia konfiguracji wdrożenia i wdrażania zarejestrowanego modelu w usłudze sieci Web, zobacz jak i gdzie wdrożyć model.For details on how to create a deployment configuration and deploy a registered model to a web service, see how and where to deploy a model.

Porada

W przypadku zarejestrowanych modeli wdrożenie jednym kliknięciem jest dostępne za pośrednictwem Azure Machine Learning Studio.For registered models, one-click deployment is available via the Azure Machine Learning studio. Zobacz jak wdrożyć zarejestrowane modele z programu Studio.See how to deploy registered models from the studio.

Możliwość interpretowania modeluModel interpretability

Funkcja interpretacji modelu umożliwia zrozumienie, dlaczego modele są realizowane, oraz wartości ważności funkcji.Model interpretability allows you to understand why your models made predictions, and the underlying feature importance values. Zestaw SDK zawiera różne pakiety umożliwiające włączenie funkcji interpretacji modelu zarówno w przypadku szkolenia, jak i czasu wnioskowania dla modeli lokalnych i wdrożonych.The SDK includes various packages for enabling model interpretability features, both at training and inference time, for local and deployed models.

Zapoznaj się z przykładami dotyczącymi sposobu włączania funkcji interpretacji w ramach zautomatyzowanych eksperymentów usługi Machine Learning.See the how-to for code samples on how to enable interpretability features specifically within automated machine learning experiments.

Aby uzyskać ogólne informacje na temat sposobu włączenia wyjaśnień modelu i ważności funkcji w innych obszarach zestawu SDK poza funkcją automatycznego uczenia maszynowego, zapoznaj się z artykułem koncepcja w zakresie interpretacji.For general information on how model explanations and feature importance can be enabled in other areas of the SDK outside of automated machine learning, see the concept article on interpretability.

Uwaga

Model ForecastTCN nie jest obecnie obsługiwany przez klienta wyjaśnień.The ForecastTCN model is not currently supported by the Explanation Client. Ten model nie zwróci pulpitu nawigacyjnego wyjaśnienie, jeśli jest zwracany jako najlepszy model i nie obsługuje uruchomionych wyjaśnień na żądanie.This model will not return an explanation dashboard if it is returned as the best model, and does not support on-demand explanation runs.

Następne krokiNext steps