Python で自動 ML の実験を構成するConfigure automated ML experiments in Python

このガイドでは、Azure Machine Learning SDK を使用して、自動機械学習の実験のさまざまな構成設定を定義する方法について説明します。In this guide, learn how to define various configuration settings of your automated machine learning experiments with the Azure Machine Learning SDK. 自動機械学習は、アルゴリズムとハイパーパラメーターを自動的に選択して、デプロイできる状態のモデルを生成します。Automated machine learning picks an algorithm and hyperparameters for you and generates a model ready for deployment. 自動機械学習の実験の構成に使用できるオプションはいくつかあります。There are several options that you can use to configure automated machine learning experiments.

自動機械学習の実験の例を確認するには、自動機械学習を使用した分類モデルのトレーニングのチュートリアルに関するページか、「クラウドで自動機械学習を使用してモデルをトレーニングする」をご覧ください。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.

自動機械学習で使用できる構成オプション:Configuration options available in automated machine learning:

  • 実験の種類を選択する:分類、回帰、または時系列予測Select your experiment type: Classification, Regression, or Time Series Forecasting
  • データ ソース、形式、およびデータのフェッチData source, formats, and fetch data
  • コンピューティング先を選択する: ローカルまたはリモートChoose your compute target: local or remote
  • 自動機械学習の実験の設定Automated machine learning experiment settings
  • 自動機械学習の実験を実行するRun an automated machine learning experiment
  • モデル メトリックを探索するExplore model metrics
  • モデルを登録して展開するRegister and deploy model

コードを使用しないエクスペリエンスを希望する場合は、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.

前提条件Prerequisites

この記事では、以下が必要です。For this article you need,

実験の種類を選択するSelect your experiment type

実験を始める前に、解決する機械学習の問題の種類を決める必要があります。Before you begin your experiment, you should determine the kind of machine learning problem you are solving. 自動機械学習によって、classificationregressionforecasting というタスクの種類がサポートされています。Automated machine learning supports task types of classification, regression, and forecasting. タスクの種類についての詳細情報を参照してください。Learn more about task types.

次のコードでは、AutoMLConfig コンストラクターで task パラメーターが使用され、実験の種類が 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")

データ ソースと形式Data source and format

自動機械学習では、ローカル デスクトップ上またはクラウド (Azure Blob Storage など) に存在するデータがサポートされます。Automated machine learning supports data that resides on your local desktop or in the cloud such as Azure Blob Storage. データは、Pandas DataFrame または Azure Machine Learning TabularDataset に読み込むことができます。The data can be read into a Pandas DataFrame or an Azure Machine Learning TabularDataset. データセットの詳細情報.Learn more about datasets.

機械学習でのトレーニング データの要件:Requirements for training data in machine learning:

  • データは表形式である必要があります。Data must be in tabular form.
  • 予測する値、ターゲット列は、データ内にある必要があります。The value to predict, target column, must be in the data.

リモート実験の場合、トレーニング データにリモート コンピューティングからアクセスできる必要があります。For remote experiments, training data must be accessible from the remote compute. AutoML により、リモート コンピューティングでの作業時に Azure Machine Learning TabularDatasets のみが受け入れられます。AutoML only accepts Azure Machine Learning TabularDatasets when working on a remote compute.

Azure Machine Learning のデータセットによって、次の機能が公開されます。Azure Machine Learning datasets expose functionality to:

  • 静的ファイルまたは URL ソースからワークスペースにデータを簡単に転送する。Easily transfer data from static files or URL sources into your workspace.
  • クラウド コンピューティング リソースでの実行時にデータをトレーニング スクリプトで使用できるようにする。Make your data available to training scripts when running on cloud compute resources. Dataset クラスを使用してコンピューティング ターゲットにデータをマウントする例については、データセットを使ってトレーニングする方法を参照してください。See How to train with datasets for an example of using the Dataset class to mount data to your remote compute target.

次のコードにより、Web URL から TabularDataset が作成されます。The following code creates a TabularDataset from a web url. ローカル ファイルやデータストアなどの他のソースからデータセットを作成する方法のコード例については、「TabularDatasets を作成する」を参照してください。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)

ローカル コンピューティングの実験の場合、より高速な処理時間を実現するために、pandas dataframes をお勧めします。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"

トレーニング、検証、テストのデータTraining, validation, and test data

AutoMLConfig コンストラクターでは、個別の トレーニング データと検証データのセット を直接指定できます。You can specify separate training data and validation data sets directly in the AutoMLConfig constructor. AutoML 実験用にデータの分割とクロス検証を構成する方法に関するページをご確認ください。Learn more about how to configure data splits and cross validation for your AutoML experiments.

validation_data または n_cross_validation パラメーターを明示的に指定しない場合、自動 ML では、既定の手法を適用して検証の実行方法を決定します。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. この決定は、training_data パラメーターに割り当てられたデータセット内の行の数によって異なります。This determination depends on the number of rows in the dataset assigned to your training_data parameter.

トレーニング データ のサイズTraining data size 検証の方法Validation technique
20,000 行 より 多いLarger than 20,000 rows トレーニング/検証データの分割が適用されます。Train/validation data split is applied. 既定では、初期トレーニング データ セットの 10% が検証セットとして取得されます。The default is to take 10% of the initial training data set as the validation set. 次に、その検証セットがメトリックの計算に使用されます。In turn, that validation set is used for metrics calculation.
20,000 行 より 少ないSmaller than 20,000 rows クロス検証アプローチが適用されます。Cross-validation approach is applied. フォールドの既定の数は行数によって異なります。The default number of folds depends on the number of rows.
データセットが 1,000 行より少ない場合は、10 個のフォールドが使用されます。If the dataset is less than 1,000 rows, 10 folds are used.
行が 1,000 から 20,000 の間の場合は、3 つのフォールドが使用されます。If the rows are between 1,000 and 20,000, then three folds are used.

現時点では、モデルの評価用に独自の テストデータ を提供する必要があります。At this time, you need to provide your own test data for model evaluation. モデル評価のために独自のテスト データを取り込むコード例については、この Jupyter ノートブックテスト に関するセクションを参照してください。For a code example of bringing your own test data for model evaluation see the Test section of this Jupyter notebook.

実験を実行するために計算するCompute to run experiment

次に、モデルをトレーニングする場所を決定します。Next determine where the model will be trained. 自動機械学習のトレーニング実験は、次のコンピューティング オプションで実行できます。An automated machine learning training experiment can run on the following compute options. ローカルおよびリモートのコンピューティングの長所と短所のオプションについて説明します。Learn the pros and cons of local and remote compute options.

  • ローカル デスクトップやノート PC などの ローカル コンピューター – 一般に、データセットが小さく、まだ探索ステージにいる場合。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. ローカル コンピューティングの例については、このノートブックを参照してください。See this notebook for a local compute example.

  • クラウド上の リモート マシン – Azure Machine Learning Managed Compute は、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.

    Azure Machine Learning Managed Compute を使用したリモートの例については、このノートブックを参照してください。See this notebook for a remote example using Azure Machine Learning Managed Compute.

  • Azure サブスクリプション内の Azure Databricks クラスターAn Azure Databricks cluster in your Azure subscription. 詳細については、自動 ML のための Azure Databricks クラスターの構成に関する記事を参照してください。You can find more details in Set up an Azure Databricks cluster for automated ML. Azure Databricks でのノートブックの例については、こちらの GitHub サイトをご覧ください。See this GitHub site for examples of notebooks with Azure Databricks.

実験の設定を構成するConfigure your experiment settings

自動機械学習の実験を構成するために使用できるオプションがいくつかあります。There are several options that you can use to configure your automated machine learning experiment. これらのパラメーターは、AutoMLConfig オブジェクトをインスタンス化することによって設定します。These parameters are set by instantiating an AutoMLConfig object. パラメーターの完全な一覧については、「AutoMLConfig クラス」をご覧ください。See the AutoMLConfig class for a full list of parameters.

次に例をいくつか示します。Some examples include:

  1. プライマリ メトリックとして重み付けされた AUC を使用する分類の実験。実験のタイムアウトの分数は 30 分間、クロス検証フォールドは 2 つに設定されます。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. 次の例は、60 分後に、検証交差の分割を 5 つ使って終了するよう設定された回帰実験です。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. 予測タスクには、追加の設定が必要です。詳細については、「時系列予測モデルを自動トレーニングする」の記事を参照してください。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)
    

サポートされているモデルSupported models

自動機械学習によって、自動化とチューニングのプロセス中にさまざまなモデルとアルゴリズムが試行されます。Automated machine learning tries different models and algorithms during the automation and tuning process. ユーザーは、アルゴリズムを指定する必要はありません。As a user, there is no need for you to specify the algorithm.

3 つの異なる task パラメーター値によって、適用するアルゴリズムまたはモデルの一覧が決定されます。The three different task parameter values determine the list of algorithms, or models, to apply. 使用可能なモデルを包含または除外してさらにイテレーションを変更するには、allowed_models または blocked_models パラメーターを使用します。Use the allowed_models or blocked_models parameters to further modify iterations with the available models to include or exclude.

次の表は、サポートされるモデルをタスクの種類別にまとめたものです。The following table summarizes the supported models by task type.

注意

自動 ML で作成されたモデルを ONNX モデルにエクスポートする予定がある場合は、* で示されたアルゴリズムのみを 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. モデルの ONNX への変換の詳細についてご確認ください。Learn more about converting models to ONNX.

また、ONNX では現在、分類と回帰のタスクのみがサポートされていることにもご注意ください。Also note, ONNX only supports classification and regression tasks at this time.

分類Classification 回帰Regression 時系列予測Time Series Forecasting
ロジスティック回帰*Logistic Regression* Elastic Net*Elastic Net* Elastic NetElastic Net
Light GBM*Light GBM* Light GBM*Light GBM* Light GBMLight GBM
勾配ブースティング*Gradient Boosting* 勾配ブースティング*Gradient Boosting* 勾配ブースティングGradient Boosting
デシジョン ツリー*Decision Tree* デシジョン ツリー*Decision Tree* デシジョン ツリーDecision Tree
K ニアレスト ネイバー*K Nearest Neighbors* K ニアレスト ネイバー*K Nearest Neighbors* K ニアレスト ネイバーK Nearest Neighbors
Linear SVC*Linear SVC* LARS Lasso*LARS Lasso* LARS LassoLARS Lasso
サポート ベクター分類 (SVC)*Support Vector Classification (SVC)* 確率的勾配降下法 (SGD)*Stochastic Gradient Descent (SGD)* 確率的勾配降下法 (SGD)Stochastic Gradient Descent (SGD)
ランダム フォレスト*Random Forest* ランダム フォレスト*Random Forest* ランダム フォレストRandom Forest
Extremely Randomized Trees*Extremely Randomized Trees* Extremely Randomized Trees*Extremely Randomized Trees* Extremely Randomized TreesExtremely Randomized Trees
Xgboost*Xgboost* Xgboost*Xgboost* XgboostXgboost
平均化パーセプトロン分類子Averaged Perceptron Classifier オンライン勾配降下リグレッサーOnline Gradient Descent Regressor 自動 ARIMAAuto-ARIMA
単純ベイズ*Naive Bayes* 高速線形リグレッサーFast Linear Regressor ProphetProphet
確率的勾配降下法 (SGD)*Stochastic Gradient Descent (SGD)* ForecastTCNForecastTCN
Linear SVM Classifier*Linear SVM Classifier*

主要メトリックPrimary Metric

primary metric パラメーターによって、モデルのトレーニング中に最適化のために使用されるメトリックが決まります。The primary metric parameter determines the metric to be used during model training for optimization. 選択できるメトリックは、選択したタスクの種類によって決まります。次の表に、各タスクの種類に有効な主要メトリックを示します。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.

自動機械学習を最適化するための主要メトリックの選択は、多くの要因に基づきます。Choosing a primary metric for automated machine learning to optimize depends on many factors. 最優先の考慮事項としてお勧めするのは、ビジネス ニーズを最も適切に表すメトリックを選択することです。We recommend your primary consideration be to choose a metric which best represents your business needs. 次に、メトリックがデータセット プロファイル (データのサイズ、範囲、クラスの分布など) に適しているかどうかを考慮します。Then consider if the metric is suitable for your dataset profile (data size, range, class distribution, etc.).

これらのメトリックの具体的な定義については、「自動化機械学習の結果の概要」を参照してください。Learn about the specific definitions of these metrics in Understand automated machine learning results.

分類Classification 回帰Regression 時系列予測Time 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

分類シナリオの主要メトリックPrimary metrics for classification scenarios

accuracyaverage_precision_score_weightednorm_macro_recallprecision_score_weighted などのしきい値化された後のメトリックでは、小さいデータセット、非常に大きいクラス傾斜 (クラスの不均衡) があるデータセットに対して、または予期されるメトリック値が 0.0 または 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. このような場合、主要メトリックには AUC_weighted が適しています。In those cases, AUC_weighted can be a better choice for the primary metric. 自動機械学習の完了後、ビジネス ニーズに最も適したメトリックに基づいて、優先されるモデルを選択できます。After automated machine learning completes, you can choose the winning model based on the metric best suited to your business needs.

メトリックMetric ユース ケースの例Example use case(s)
accuracy 画像分類、感情分析、チャーン予測Image classification, Sentiment analysis, Churn prediction
AUC_weighted 不正行為の検出、画像分類、異常検出/スパム検出Fraud detection, Image classification, Anomaly detection/spam detection
average_precision_score_weighted センチメント分析Sentiment analysis
norm_macro_recall チャーン予測Churn prediction
precision_score_weighted

回帰シナリオの主要メトリックPrimary metrics for regression scenarios

r2_scorespearman_correlation などのメトリックは、予測する値の規模が多くの桁数に及ぶ場合に、モデルの品質をより適切に表すことができます。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. たとえば、給与の推定では、多くの人の給与は 20,000 ドルから 100,000 ドルですが、一部の給与は 100,000,000 ドルの範囲になり、非常に規模が大きくなります。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_errornormalized_root_mean_squared_error では、給与が 30,000 ドルの人と、給与が 20,000,000 ドルの人に対して、同じように 20,000 ドルの予測誤差が処理されます。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. 実際には、20000 ドルと隔たった 20000000 ドルの給与のみ予測することは非常に近く (相対差異は 0.1% で小さい)、一方 20000 ドルと隔たった 30000 ドルを予測することは近くありません (相対差異は 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_errornormalized_root_mean_squared_error は、予測する値が同じ規模になる場合に便利です。normalized_mean_absolute_error and normalized_root_mean_squared_error are useful when the values to predict are in a similar scale.

メトリックMetric ユース ケースの例Example use case(s)
spearman_correlation
normalized_root_mean_squared_error 価格の予測 (家/製品/チップ)、レビュー スコアの予測Price prediction (house/product/tip), Review score prediction
r2_score 飛行機の遅延、給与の見積もり、バグの解決時間Airline delay, Salary estimation, Bug resolution time
normalized_mean_absolute_error

時系列予測シナリオの主要メトリックPrimary metrics for time series forecasting scenarios

上記の回帰の説明を参照してください。See regression notes, above.

メトリックMetric ユース ケースの例Example use case(s)
spearman_correlation
normalized_root_mean_squared_error 価格の予測 (予想)、在庫の最適化、需要の予測Price prediction (forecasting), Inventory optimization, Demand forecasting
r2_score 価格の予測 (予想)、在庫の最適化、需要の予測Price prediction (forecasting), Inventory optimization, Demand forecasting
normalized_mean_absolute_error

データの特徴付けData featurization

すべての自動機械学習実験では、さまざまなスケールの特徴を検知できる特定のアルゴリズムをサポートできるように、データが 自動的にスケーリングおよび正規化 されます。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. このスケーリングと正規化は特徴量化と呼ばれます。This scaling and normalization is referred to as featurization. 詳細とコード例については、AutoML での特徴量化に関するページを参照してください。See Featurization in AutoML for more detail and code examples.

AutoMLConfig オブジェクトで実験を構成するときに、設定 featurization の有効と無効を切り替えることができます。When configuring your experiments in your AutoMLConfig object, you can enable/disable the setting featurization. 次の表は、AutoMLConfig プロジェクトの特徴量化で許可されている設定です。The following table shows the accepted settings for featurization in the AutoMLConfig object.

特徴付けの構成Featurization Configuration 説明Description
"featurization": 'auto' 前処理の一環として、データ ガードレールと特徴付けの手順が自動的に実行されることを示します。Indicates that as part of preprocessing, data guardrails and featurization steps are performed automatically. 既定の設定 です。Default setting.
"featurization": 'off' 特徴量化の手順が自動的には実行されないことを示します。Indicates featurization step shouldn't be done automatically.
"featurization": 'FeaturizationConfig' カスタマイズされた特徴付け手順を使用する必要があることを示します。Indicates customized featurization step should be used. 特徴付けをカスタマイズする方法の詳細Learn how to customize featurization.

注意

自動化された機械学習の特徴付け手順 (機能の正規化、欠損データの処理、テキストから数値への変換など) は、基になるモデルの一部になります。Automated machine learning featurization steps (feature normalization, handling missing data, converting text to numeric, etc.) become part of the underlying model. このモデルを予測に使用する場合、トレーニング中に適用されたのと同じ特徴付けの手順がご自分の入力データに自動的に適用されます。When using the model for predictions, the same featurization steps applied during training are applied to your input data automatically.

アンサンブル構成Ensemble configuration

アンサンブル モデルは既定で有効になっており、AutoML の実行での最終実行イテレーションとして表示されます。Ensemble models are enabled by default, and appear as the final run iterations in an AutoML run. 現在は VotingEnsembleStackEnsemble がサポートされています。Currently VotingEnsemble and StackEnsemble are supported.

投票では、加重平均を使用したソフト投票を実装します。Voting implements soft-voting, which uses weighted averages. スタッキング実装は 2 層の実装を使用します。ここでは、第 1 層は投票アンサンブルと同じモデルを持ち、第 2 層のモデルは、第 1 層からのモデルの最適な組み合わせを見つけるために使用されます。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.

ONNX モデルを使用している場合、または モデルの説明を有効にしている場合、スタッキングは無効になり、投票だけが使用されます。If you are using ONNX models, or have model-explainability enabled, stacking is disabled and only voting is utilized.

アンサンブル トレーニングは、enable_voting_ensemble および enable_stack_ensemble のブール型パラメーターを使用して無効にすることができます。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
        )

既定のアンサンブル動作を変更するために、AutoMLConfig オブジェクトに kwargs として提供できる既定の引数が複数あります。To alter the default ensemble behavior, there are multiple default arguments that can be provided as kwargs in an AutoMLConfig object.

重要

次のパラメーターは、AutoMLConfig クラスの明示的なパラメーターではありません。The following parameters aren't explicit parameters of the AutoMLConfig class.

  • ensemble_download_models_timeout_sec:VotingEnsembleStackEnsemble モデルの生成中に、以前の子実行の複数の適合モデルがダウンロードされます。ensemble_download_models_timeout_sec: During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded. AutoMLEnsembleException: Could not find any models for running ensembling のエラーが発生した場合は、モデルのダウンロードにより長い時間が必要になることがあります。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. 既定値は、これらのモデルを並列でダウンロードする場合は 300 秒で、タイムアウトの上限はありません。The default value is 300 seconds for downloading these models in parallel and there is no maximum timeout limit. より長い時間が必要な場合は、このパラメーターを 300 秒より大きい値に設定します。Configure this parameter with a higher value than 300 secs, if more time is needed.

    注意

    タイムアウトに達し、ダウンロードしたモデルがある場合は、アンサンブルはダウンロードしたモデルと同じ数だけ処理を続行します。If the timeout is reached and there are models downloaded, then the ensembling proceeds with as many models it has downloaded. そのタイムアウト以内にすべてのモデルのダウンロードを終える必要はありません。It's not required that all the models need to be downloaded to finish within that timeout.

次のパラメーターは、StackEnsemble モデルにのみ適用されます。The following parameters only apply to StackEnsemble models:

  • stack_meta_learner_type: メタ学習器は、個々の異種モデルの出力でトレーニングされたモデルです。stack_meta_learner_type: the meta-learner is a model trained on the output of the individual heterogeneous models. 既定のメタ学習器は、分類タスクには LogisticRegression (またはクロス検証が有効になっている場合は LogisticRegressionCV) で、回帰/予測タスクには ElasticNet (またはクロス検証が有効になっている場合は ElasticNetCV) です。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). このパラメーターは、LogisticRegressionLogisticRegressionCVLightGBMClassifierElasticNetElasticNetCVLightGBMRegressor、または LinearRegression のいずれかの文字列になります。This parameter can be one of the following strings: LogisticRegression, LogisticRegressionCV, LightGBMClassifier, ElasticNet, ElasticNetCV, LightGBMRegressor, or LinearRegression.

  • stack_meta_learner_train_percentage: メタ学習器のトレーニング用に予約されるトレーニング セットの割合を指定します。(トレーニングと、トレーニングの検証の種類を選択する場合)。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. 既定値は 0.2 です。Default value is 0.2.

  • stack_meta_learner_kwargs: メタ学習器の初期化子に渡す省略可能なパラメーター。stack_meta_learner_kwargs: optional parameters to pass to the initializer of the meta-learner. これらのパラメーターとパラメーターの型は、対応するモデル コンストラクターからのパラメーターとパラメーターの型を反映しており、モデル コンストラクターに転送されます。These parameters and parameter types mirror the parameters and parameter types from the corresponding model constructor, and are forwarded to the model constructor.

次のコードは、AutoMLConfig オブジェクトでカスタムのアンサンブル動作を指定する例を示します。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
        )

終了基準Exit criteria

実験を終了するために AutoMLConfig で定義できるオプションはいくつかあります。There are a few options you can define in your AutoMLConfig to end your experiment.

条件Criteria descriptiondescription
基準なしNo criteria 終了パラメーターを定義しない場合、実験は、主なメトリックでそれ以上の進歩が見られなくなるまで続けられます。If you do not define any exit parameters the experiment continues until no further progress is made on your primary metric.
一定時間が経過した後After a length of time 設定で experiment_timeout_minutes を使用すると、実験の実行を継続する時間を分単位で定義できます。Use experiment_timeout_minutes in your settings to define how long, in minutes, your experiment should continue to run.

実験のタイムアウト エラーを回避するため、最小値は 15 分です (行と列を掛けたサイズが 1,000 万を超える場合は 60 分)。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.
スコアに達した後A score has been reached experiment_exit_score を使用すると、指定した主要メトリックのスコアに達した後に実験が完了します。Use experiment_exit_score completes the experiment after a specified primary metric score has been reached.

実験を実行するRun experiment

自動化された ML の場合は Experiment オブジェクトを作成します。これは、実験を実行するために使用される Workspace 内の名前付きオブジェクトです。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)

実験を送信して実行し、モデルを生成します。Submit the experiment to run and generate a model. モデルを生成するには、AutoMLConfigsubmit メソッドに渡します。Pass the AutoMLConfig to the submit method to generate the model.

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

注意

最初に依存関係が新しいマシンにインストールされます。Dependencies are first installed on a new machine. 出力が表示されるまで、最大で 10 分間かかる場合があります。It may take up to 10 minutes before output is shown. show_outputTrue に設定すると、コンソールに出力が表示されます。Setting show_output to True results in output being shown on the console.

クラスターでの複数回の子実行Multiple child runs on clusters

自動 ML での子実行の実験は、既に別の実験が実行されているクラスターで実行することができます。Automated ML experiment child runs can be performed on a cluster that is already running another experiment. ただし、タイミングは、クラスターに含まれるノード数によって、および別の実験を実行するためにそれらのノードを使用できるかどうかによって異なります。However, the timing depends on how many nodes the cluster has, and if those nodes are available to run a different experiment.

クラスター内の各ノードは、1 回のトレーニング実行を完了できる個別の仮想マシン (VM) として機能します。自動 ML の場合、これは子実行を意味します。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. すべてのノードがビジー状態の場合は、新しい実験がキューに登録されます。If all the nodes are busy, the new experiment is queued. ただし、空きノードがある場合は、使用可能なノードと VM で、新しい実験によって自動 ML 子実行が並行して実行されます。But if there are free nodes, the new experiment will run automated ML child runs in parallel in the available nodes/VMs.

子実行とそれが実行されるタイミングを管理するには、実験ごとに専用のクラスターを作成し、実験の max_concurrent_iterations 数をクラスター内のノード数と一致させることをお勧めします。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. このようにして、必要な同時子実行とイテレーションの数で、クラスターのノードをすべて同時に使用します。This way, you use all the nodes of the cluster at the same time with the number of concurrent child runs/iterations you want.

AutoMLConfig オブジェクトで max_concurrent_iterations を構成します。Configure max_concurrent_iterations in your AutoMLConfig object. 構成されていない場合は、1 回の実験につき 1 回の同時子実行とイテレーションのみが既定で許可されます。If it is not configured, then by default only one concurrent child run/iteration is allowed per experiment.

モデルとメトリックを探索するExplore models and metrics

自動 ML では、トレーニング結果を監視および評価するためのオプションが提供されます。Automated ML offers options for you to monitor and evaluate your training results.

次のカスタム コード ソリューションを使用して、ハイパーパラメーター、スケーリングと正規化の手法、および特定の自動 ML の実行に適用されるアルゴリズムを表示できます。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.

次の例では、自動 ML のトレーニング パイプラインにおける各手順のハイパーパラメーターを出力するカスタム メソッド print_model() を定義しています。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()   

同じ実験ノートブック内から送信およびトレーニングされたローカルまたはリモートの実行については、get_output() メソッドを使用して最適なモデルを渡すことができます。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)

次の出力は、以下のことを示しています。The following output indicates that:

  • トレーニングの前にデータをスケーリングおよび正規化するために、StandardScalerWrapper 手法が使用された。The StandardScalerWrapper technique was used to scale and normalize the data prior to training.

  • XGBoostClassifier アルゴリズムが最適な実行として識別され、ハイパーパラメーターの値も表示される。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}

ワークスペース内にある異なる実験からの既存の実行については、調査する特定の実行 ID を取得し、それを print_model() メソッドに渡す必要があります。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)

注意

自動 ML のアルゴリズムには特有のランダム性があり、推奨モデルの最終的なメトリック スコア (精度など) にわずかな変動が生じる可能性があります。The algorithms automated ML employs have inherent randomness that can cause slight variation in a recommended model's final metrics score, like accuracy. 自動 ML によって、トレーニングとテストの分割、トレーニングと検証の分割、クロス検証などのデータに対する操作も必要に応じて実行されます。Automated ML also performs operations on data such as train-test split, train-validation split or cross-validation when necessary. そのため、同じ構成設定とプライマリ メトリックを使用して実験を複数回実行した場合、これらの要因により、各実験の最終的なメトリック スコアに変動が見られる可能性があります。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.

モデルを登録してデプロイするRegister and deploy models

モデルは登録できます。そのため、後で使用するためにモデルに戻ることができます。You can register a model, so you can come back to it for later use.

自動化された ML 実行からモデルを登録するには、register_model() メソッドを使用します。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)

デプロイ構成を作成し、登録済みのモデルを Web サービスにデプロイする方法の詳細については、モデルをデプロイする方法と場所に関するページを参照してください。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.

ヒント

登録済みのモデルの場合、Azure Machine Learning スタジオを使用してワンクリックでデプロイできます。For registered models, one-click deployment is available via the Azure Machine Learning studio. 登録済みのモデルをスタジオからデプロイする方法に関するページを参照してください。See how to deploy registered models from the studio.

モデルの解釈可能性Model interpretability

モデルの解釈機能を使用すると、モデルで予測が行われた理由や、基になる特徴の重要度の値を把握できます。Model interpretability allows you to understand why your models made predictions, and the underlying feature importance values. SDK には、トレーニングと推論時間の両方で、ローカル モデルとデプロイされたモデルについて、モデルの解釈可能性の特徴を有効にするためのさまざまなパッケージが含まれています。The SDK includes various packages for enabling model interpretability features, both at training and inference time, for local and deployed models.

特に自動化された機械学習の実験で解釈可能性の特徴を有効にする方法のコード サンプルについては、その方法を参照してください。See the how-to for code samples on how to enable interpretability features specifically within automated machine learning experiments.

自動機械学習ではない SDK の他の領域で、モデルの説明と特徴の重要度を有効にする方法の一般情報については、解釈可能性の概念に関する記事を参照してください。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.

注意

現在、ForecastTCN モデルは説明クライアントではサポートされていません。The ForecastTCN model is not currently supported by the Explanation Client. このモデルが最適なモデルとして返された場合、説明ダッシュボードは返されず、オンデマンドでの説明の実行はサポートされません。This model will not return an explanation dashboard if it is returned as the best model, and does not support on-demand explanation runs.

次のステップNext steps