Python で時系列予測モデルをトレーニングするために、AutoML を設定する
適用対象: Python SDK azure-ai-ml v2 (現行)
この記事では、Azure Machine Learning Python SDK で、Azure Machine Learning 自動 ML を使用して時系列予測モデルをトレーニングするために、AutoML を設定する方法を説明します。
これを行うには、次の手順を実行します。
- トレーニング用のデータを準備します。
- 予測ジョブで特定の時系列パラメーターを構成します。
- トレーニング済みの時系列モデルから予測を取得します。
Azure Machine Learning スタジオの自動 ML を使用して、ロー コードで時系列予測を行う例は、「チュートリアル:自動機械学習を使用して需要を予測する」をご覧ください。
AutoML では、標準の機械学習モデルと既知の時系列モデルを使用して予測を作成します。 このアプローチでは、トレーニング中に複数のコンテキスト変数とそれらの相互関係を組み込みます。 複数の要因が予測に影響を与える可能性があるため、この方法は実際の予測シナリオに適しています。 たとえば、売上の予測では、履歴による傾向とのインタラクション、為替レート、価格がすべて、売上の結果に貢献すると考えられます。 詳細については、予測手法に関する記事を参照してください。
前提条件
この記事では、以下が必要です。
Azure Machine Learning ワークスペース。 ワークスペースを作成するには、「ワークスペース リソースの作成」を参照してください。
AutoML トレーニング ジョブを起動できること。 詳細については、AutoML の設定に関する攻略ガイドに従ってください。
データをトレーニングして検証する
AutoML 予測の入力データには、有効な時系列が表形式で含まれている必要があります。 各変数には、それに対応する独自の列がデータ テーブルに入っている必要があります。 AutoML には、少なくとも 2 つの列 (時間軸を表す時間列と、予測する数量であるターゲット列) が必要です。 他の列は予測器として機能します。 詳細については、「AutoML でのデータの使用方法」を参照してください。
重要
将来の値を予測するためにモデルをトレーニングするときは、目的のトレーニングで使用されるすべての機能が、意図した期間の予測を実行するときに使用できることを確認してください。
たとえば、現在の株価の特徴を含めれば、トレーニングの精度を大幅に高めることができます。 ただし、長期間にわたり予測する予定の場合、将来の時系列ポイントに応じた将来の株価を正確に予測できない可能性があり、モデルの精度が低下することがあります。
AutoML 予測ジョブでは、トレーニング データが MLTable オブジェクトとして表される必要があります。 MLTable では、データ ソースと、データを読み込む手順を指定します。 詳細とユース ケースについては、MLTable の攻略ガイドを参照してください。 簡単な例として、トレーニング データがローカル ディレクトリ ./train_data/timeseries_train.csv
の CSV ファイルに含まれているとします。 新しい MLTable を定義するには、次の YAML コードを新しいファイル ./train_data/MLTable
にコピーします。
$schema: https://azuremlschemas.azureedge.net/latest/MLTable.schema.json
type: mltable
paths:
- file: ./timeseries_train.csv
transformations:
- read_delimited:
delimiter: ','
encoding: ascii
これで、次のように Azure Machine Learning Python SDK を使用して、トレーニング ジョブを開始するために必要な入力データ オブジェクトを定義できます。
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import Input
# Training MLTable defined locally, with local data to be uploaded
my_training_data_input = Input(
type=AssetTypes.MLTABLE, path="./train_data"
)
検証データは、MLTable と入力データ オブジェクトを作成して、同様の方法で指定できます。 または、検証データを指定しない場合、AutoML によってトレーニング データからクロス検証分割が自動的に作成され、モデルの選択に使用されます。 詳細については、予測モデルの選択に関する記事を参照してください。 予測モデルを正常にトレーニングするために必要なトレーニング データの量の詳細については、トレーニング データの長さの要件に関する記事も参照してください。
AutoML でクロス検証を適用してオーバーフィットを防止する方法について、詳細情報をご覧ください。
実験を実行するために計算する
AutoML では、フル マネージド コンピューティング リソースである Azure Machine Learning コンピューティングを使用してトレーニング ジョブを実行します。 次の例では、cpu-compute
という名前のコンピューティング クラスターが作成されます。
from azure.ai.ml.entities import AmlCompute
# specify aml compute name.
cpu_compute_target = "cpu-cluster"
try:
ml_client.compute.get(cpu_compute_target)
except Exception:
print("Creating a new cpu compute target...")
compute = AmlCompute(
name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
)
ml_client.compute.begin_create_or_update(compute).result()
実験を構成する
AutoML 予測実験を構成するときは、いくつかのオプションを使用できます。 これらの構成パラメーターは、automl.forecasting() タスク メソッドに設定します。 また、ジョブ トレーニング設定と終了基準も、それぞれ set_training() および set_limits() 関数を使用して設定できます。
次の例では、プライマリ メトリックとして正規化された二乗平均平方根誤差を使用し、さらに自動的に構成されたクロス検証フォールドを使用して予測ジョブを作成する方法を示します。
from azure.ai.ml import automl
# note that the below is a code snippet -- you might have to modify the variable values to run it successfully
forecasting_job = automl.forecasting(
compute=compute_name,
experiment_name=exp_name,
training_data=my_training_data_input,
target_column_name=target_column_name,
primary_metric="NormalizedRootMeanSquaredError",
n_cross_validations="auto",
)
# Limits are all optional
forecasting_job.set_limits(
timeout_minutes=120,
trial_timeout_minutes=30,
max_concurrent_trials=4,
)
構成設定
予測タスクには、予測固有の多くの設定があります。 予測パラメーターを設定するには、ForecastingJob の set_forecast_settings() メソッドを使用します。 次の例では、トレーニング データの時間列の名前を指定し、予測期間を設定します。
# Forecasting specific configuration
forecasting_job.set_forecast_settings(
time_column_name=time_column_name,
forecast_horizon=24
)
時間列の名前は必須の設定であり、予測許可は通常、予測シナリオに従って設定する必要があります。 データに複数の時系列が含まれている場合は、時系列 ID 列の名前を指定できます。 これらの列をグループ化して、個々の系列を定義します。 たとえば、異なる店舗やブランドからの時間ごとの売上で構成されるデータがあるとします。 次の例では、データに "store" と "brand" という名前の列が含まれていると想定した場合の、時系列 ID 列の設定方法を示しています。
# Forecasting specific configuration
# Add time series IDs for store and brand
forecasting_job.set_forecast_settings(
..., # other settings
time_series_id_column_names=['store', 'brand']
)
AutoML では、何も指定されない場合、データ内の時系列 ID 列を自動的に検出しようとします。
その他の設定はオプションであり、「オプション設定」セクションで確認します。
オプション設定
ディープ ラーニングの有効化やターゲットのローリング ウィンドウ集計の指定など、予測タスクに対してオプションの構成を使用できます。 すべてのパラメーターの一覧については、forecast_settings API のドキュメントを参照してください。
モデルの検索設定
AutoML で最適なモデル allowed_training_algorithms
と blocked_training_algorithms
を検索するモデル空間を制御するオプション設定は、2 つあります。 検索空間を特定のモデル クラス セットに制限するには、次の例のように allowed_training_algorithms を使用します。
# Only search ExponentialSmoothing and ElasticNet models
forecasting_job.set_training(
allowed_training_algorithms=["ExponentialSmoothing", "ElasticNet"]
)
この場合、予測ジョブでは、指数平滑法および Elastic Net モデル クラス "のみ" を検索します。 検索空間から特定のモデル クラス セットを削除するには、次の例のように blocked_training_algorithms を使用します。
# Search over all model classes except Prophet
forecasting_job.set_training(
blocked_training_algorithms=["Prophet"]
)
これで、Prophet を "除く" すべてのモデル クラスがこのジョブで検索されます。 allowed_training_algorithms
と blocked_training_algorithms
で許容される予測モデル名の一覧については、サポートされている予測モデルとサポートされている回帰モデルに関するページを参照してください。
ディープ ラーニングを有効にする
AutoML には、TCNForecaster
と呼ばれるカスタムのディープ ニューラル ネットワーク (DNN) モデルが付属しています。 このモデルは、時系列モデリングに一般的なイメージング タスク メソッドを適用する、テンポラル畳み込みネットワーク (TCN) です。 つまり、1 次元 "因果" 畳み込みによってこのネットワークのバックボーンが形成され、モデルがトレーニング履歴の長期間にわたる複雑なパターンを学習できます。 詳細については、TCNForecaster の記事を参照してください。
TCNForecaster では、多くの場合、トレーニング履歴内に数千以上にもなる観測値があるときは標準の時系列モデルより高い精度を実現します。 ただし、それと同時に、容量が大きいため、TCNForecaster モデルのトレーニングとスイープに時間がかかります。
AutoML で TCNForecaster を有効にするには、次のように set_training() メソッドで enable_dnn_training
フラグを設定します。
# Include TCNForecaster models in the model search
forecasting_job.set_training(
enable_dnn_training=True
)
Azure Machine Learning スタジオで作成された AutoML 実験用の DNN を有効にするには、Studio UI 入門にあるタスクの種類の設定に関するページを参照してください。
注意
- SDK を使用して作成された実験に対して DNN を有効にすると、最適なモデル説明が無効になります。
- 自動機械学習での予測のための DNN サポートは、Databricks で開始して実行することはできません。
- DNN トレーニングが有効になっている場合、コンピューティングの種類には GPU をお勧めします
ターゲットのローリング ウィンドウ集計
ターゲットの最近の値は、多くの場合、予測モデルで影響力の大きい特徴です。 ローリング ウィンドウ集計を使用すると、データ値のローリング集計を特徴として追加できます。 これらの特徴を追加のコンテキスト データとして生成および使用すると、トレーニング モデルの精度が向上します。
気象データと過去の需要が利用可能になっている、エネルギー需要予測のシナリオについて考えてみます。 この表は、ウィンドウ集計が直近 3 時間に適用されたときに発生する特徴エンジニアリングを示しています。 最小値、最大値、合計値の列は、定義された設定に基づいて、3 時間のスライディング ウィンドウで生成されます。 たとえば、2017 年 9 月 8 日の午前 4:00 に有効な観測値では、最大値、最小値、合計値は、2017 年 9 月 8 日午前 1:00 から午前 3:00 までの需要値を使用して計算されます。 この 3 時間のウィンドウは、残りの行のデータを設定するためにシフトされます。
ローリング ウィンドウ集計機能を有効にし、set_forecast_settings() メソッドを使用してウィンドウ サイズを設定できます。 次の例では、AutoML によってデータに適切な値が自動的に決定されるように、ウィンドウ サイズを "auto" に設定しています。
forecasting_job.set_forecast_settings(
..., # other settings
target_rolling_window_size='auto'
)
短い系列の処理
自動 ML では、モデル開発のトレーニングと検証のフェーズを実施するのに十分なデータ ポイントがない場合、時系列は短い系列と見なされます。 長さの要件の詳細については、トレーニング データの長さの要件に関するページを参照してください。
AutoML には、短い系列に対して実行できるアクションがいくつか存在します。 これらのアクションは、short_series_handling_config
設定を使用して構成できます。 既定値は "auto" です。次の表では、設定について説明します。
設定 | 説明 |
---|---|
auto |
短い系列処理の既定値。 - "すべての系列が短い" 場合は、データを埋め込みます。 - "すべてが短い系列というわけではない" 場合は、短い系列をドロップします。 |
pad |
short_series_handling_config = pad の場合、自動 ML によって、検出されたそれぞれの短い系列に対してランダムの値が追加されます。 次に、列の型と、それらに埋め込まれる内容を示します。- オブジェクト列には NAN - 数値列には 0 - ブール/論理列には False - ターゲット列には、平均が 0、標準偏差が 1 のランダムな値が埋め込まれます。 |
drop |
short_series_handling_config = drop の場合、短い系列は自動 ML によってドロップされ、トレーニングや予測には使用されません。 これらの系列の予測では、NAN が返されます。 |
None |
埋め込まれる、またはドロップされる系列はありません。 |
次の例では、すべての短い系列が最小長にまで埋め込まれるように、短い系列の処理を設定します。
forecasting_job.set_forecast_settings(
..., # other settings
short_series_handling_config='pad'
)
警告
失敗せずに過去のトレーニングが受けられるように人為的なデータを用いるため、データが埋め込まれると、結果のモデルの精度に影響が及ぶ可能性があります。 短い系列が多くなる場合、説明可能性の結果に影響が生じる可能性があります。
頻度とターゲット データの集計
頻度とデータ集計のオプションを使用して、不規則なデータによる障害が発生しないようにします。 毎時や毎日など、一定の頻度に従っていない場合、そのデータは不規則です。 販売時点データは、不規則なデータの良い例です。 これらの場合、AutoML では、目的の頻度にデータを集計し、その集計から予測モデルを構築できます。
不規則なデータを処理するには、frequency
と target_aggregate_function
の設定値を設定する必要があります。 頻度の設定には、Pandas DateOffset 文字列を入力として使用できます。 集計関数でサポートされている値は次のとおりです。
機能 | 説明 |
---|---|
sum |
ターゲット値の合計 |
mean |
ターゲット値の中数または平均 |
min |
ターゲットの最小値 |
max |
ターゲットの最大値 |
- ターゲット列の値が、指定された操作に従って集計されます。 通常、ほとんどのシナリオでは sum が適しています。
- データ内の数値予測列は、合計、平均、最小値、最大値で集計されます。 その結果、自動 ML では、末尾に集計関数名が付いた新しい列が生成され、選択した集計操作が適用されます。
- カテゴリ予測列の場合、データは、ウィンドウ内で最も目立つカテゴリであるモードで集計されます。
- 日付予測列は、最小値、最大値、モードで集計されます。
次の例では、頻度を毎時に設定し、集計関数を合計に設定します。
# Aggregate the data to hourly frequency
forecasting_job.set_forecast_settings(
..., # other settings
frequency='H',
target_aggregate_function='sum'
)
カスタムのクロス検証設定
予測ジョブのクロス検証を制御するカスタマイズ可能な設定は 2 つあり、フォールドの数 n_cross_validations
と、フォールド間の時間オフセットを定義するステップ サイズ cv_step_size
です。 これらのパラメーターの意味の詳細については、予測モデルの選択に関するページを参照してください。 既定では、両方の設定はデータの特性に基づいて AutoML によって自動的に設定されますが、上級ユーザーは手動で設定できます。 たとえば、毎日の売上データがあり、隣接するフォールド間のオフセットが 7 日間である 5 つのフォールドで構成されるように、検証を設定するとします。 次のコード サンプルでは、これらの設定方法を示します。
from azure.ai.ml import automl
# Create a job with five CV folds
forecasting_job = automl.forecasting(
..., # other training parameters
n_cross_validations=5,
)
# Set the step size between folds to seven days
forecasting_job.set_forecast_settings(
..., # other settings
cv_step_size=7
)
カスタムの特徴量化
既定では、モデルの精度を向上するため、AutoML で、トレーニング データをエンジニアリングされた特徴で拡張します。 詳細については、「自動化された特徴エンジニア リング」を参照してください。 前処理手順の一部は、予測ジョブの set_featurization()
メソッドを使用してカスタマイズできます。
予測でサポートされているカスタマイズは次のとおりです。
カスタマイズ | 説明 | Options |
---|---|---|
列の目的の更新 | 指定した列の自動検出された特徴の種類をオーバーライドします。 | "Categorical"、"DateTime"、"Numeric" |
トランスフォーマー パラメーターの更新 | 指定した imputer のパラメーターを更新します。 | {"strategy": "constant", "fill_value": <value>} , {"strategy": "median"} , {"strategy": "ffill"} |
たとえば、データに価格、"セール中" フラグ、商品の種類などの特徴が含まれる小売需要シナリオがあるとします。 次の例は、これらの特徴のカスタマイズされた種類と imputer を設定する方法を示しています。
from azure.ai.ml.automl import ColumnTransformer
# Customize imputation methods for price and is_on_sale features
# Median value imputation for price, constant value of zero for is_on_sale
transformer_params = {
"imputer": [
ColumnTransformer(fields=["price"], parameters={"strategy": "median"}),
ColumnTransformer(fields=["is_on_sale"], parameters={"strategy": "constant", "fill_value": 0}),
],
}
# Set the featurization
# Ensure that product_type feature is interpreted as categorical
forecasting_job.set_featurization(
mode="custom",
transformer_params=transformer_params,
column_name_and_types={"product_type": "Categorical"},
)
Azure Machine Learning Studio を実験に使用している場合は、Studio で特徴量化をカスタマイズする方法に関する記事を参照してください。
実験を実行する
すべての設定を構成したら、次のように mlcient
を使用して予測ジョブを起動できます。
# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
forecasting_job
)
print(f"Created job: {returned_job}")
# Get a URL for the status of the job
returned_job.services["Studio"].endpoint
トレーニング済みモデルを使用した予測
AutoML を使用して最適なモデルをトレーニングして選択したら、次の手順ではモデルを評価します。 要件を満たしていれば、それを使用して将来への予測を生成できます。 このセクションでは、評価して予測するために Python スクリプトを記述する方法について説明します。 推論スクリプトを使用してトレーニング済みのモデルをデプロイする例については、ノートブックの例を参照してください。
ローリング予測を使用したモデルの精度の評価
モデルを運用する前に、トレーニング データから提供されたテスト セットでその精度を評価する必要があります。 ベスト プラクティスの手順は、ローリング評価です。これは、トレーニングされた予測機能をテスト セット全体で時間的にロール フォワードし、複数の予測ウィンドウでエラー メトリックを平均します。 理想的には、評価のテスト セットは、モデルの予測期間と比べて長くなります。 予測エラーの推定値は、統計的にノイズが多いため、信頼性が低い可能性があります。
たとえば、日次売上のモデルをトレーニングして、将来最大 2 週間 (14 日) の需要を予測するとします。 使用可能な十分な履歴データがある場合は、テスト セットのデータの最後の数か月から 1 年間を予約できます。 ローリング評価は、テスト セットの最初の 2 週間の 14 日前の予測の生成から始まります。 その後、予測機能はテスト セットで数日進み、新しい位置から別の 14 日前の予測を生成します。 このプロセスは、テスト セットの最後に到達するまで続行されます。
ローリング評価を行うには、fitted_model
の rolling_forecast
メソッドを呼び出し、結果に対して必要なメトリックを計算します。 ローリング評価の推論スクリプトを次のコード サンプルに示します。
"""
This is the script that is executed on the compute instance. It relies
on the model.pkl file which is uploaded along with this script to the
compute instance.
"""
import os
import pandas as pd
from sklearn.externals import joblib
def init():
global target_column_name
global fitted_model
target_column_name = os.environ["TARGET_COLUMN_NAME"]
# AZUREML_MODEL_DIR is an environment variable created during deployment
# It is the path to the model folder (./azureml-models)
# Please provide your model's folder name if there's one
model_path = os.path.join(os.environ["AZUREML_MODEL_DIR"], "model.pkl")
try:
fitted_model = joblib.load(model_path)
except Exception:
print("Loading pickle failed. Trying torch.load()")
import torch
model_path = os.path.join(os.environ["AZUREML_MODEL_DIR"], "model.pt")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
fitted_model = torch.load(model_path, map_location=device)
def run(mini_batch):
print(f"run method start: {__file__}, run({mini_batch})")
resultList = []
for test in mini_batch:
if not test.endswith(".csv"):
continue
X_test = pd.read_csv(test, parse_dates=[fitted_model.time_column_name])
y_test = X_test.pop(target_column_name).values
# Make a rolling forecast, advancing the forecast origin by 1 period on each iteration through the test set
X_rf = fitted_model.rolling_forecast(
X_test, y_test, step=1, ignore_data_errors=True
)
resultList.append(X_rf)
return pd.concat(resultList, sort=False, ignore_index=True)
このサンプルでは、ローリング予測のステップ サイズは 1 に設定されています。これは、予測機能が各イテレーションで 1 期間、つまり需要予測の例では 1 日進んでいることを意味します。 rolling_forecast
によって返される予測の合計数は、テスト セットの長さとこのステップ サイズによって異なります。 詳細と例については、rolling_forecast() のドキュメントとトレーニング データからの予測に関するノートブックを参照してください。
将来への予測
forecast_quantiles() では、予測分布の特定の分位点の予測を生成します。 したがって、このメソッドを使用すると、ポイント予測を、それを囲む不確実性の円すいを使用して取得できます。 詳細については、「トレーニング データ ノートブックから離れた予測」を参照してください。
次の例では、最初に y_pred
のすべての値を NaN
に置き換えます。 このケースでは、予測の始まりはトレーニング データの最後です。 ただし、y_pred
の後半部分のみを NaN
に置き換えた場合、この関数では前半の数値を変更しないまま、後半の NaN
の値を予測します。 この関数は、予測値と調整された特徴の両方を返します。
forecast_quantiles()
関数の forecast_destination
パラメーターを使用して、指定した日付までの値を予測することもできます。
label_query = test_labels.copy().astype(np.float)
label_query.fill(np.nan)
label_fcst, data_trans = fitted_model.forecast_quantiles(
test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8)
)
ここでは分位点が指定されていないため、ポイント予測のみが生成されます。 分布の特定の分位点での予測を把握する必要がある場合があります。 たとえば、予測を使用して、在庫 (食料品や、クラウド サービスの仮想マシンなど) を制御します。 このような場合、コントロール ポイントは通常、"その品目を在庫として持ち、間違いなく不足にはならないようにしたい" といったことです。 次の例では、50 パーセンタイルや 95 パーセンタイルなどの予測分位点を指定する方法を示します。
# Get forecasts for the 5th, 50th, and 90th percentiles
fitted_model.quantiles = [0.05, 0.5, 0.9]
fitted_model.forecast_quantiles(
test_dataset, label_query, forecast_destination=pd.Timestamp(2019, 1, 8)
)
モデルのパフォーマンスを見積もるのに役立つ、二乗平均平方根誤差 (RMSE) や平均絶対誤差率 (MAPE) のようなモデル メトリックを計算できます。 例については、Bike share demand ノートブックの Evaluate セクションを参照してください。
モデル全体の精度が判別した後、最も現実的な次の手順は、モデルを使用して不明な将来の値を予測することです。
テスト セット test_dataset
と同じ形式ですが将来の日時を使用してデータ セットを提供すると、結果の予測セットは時系列手順ごとに予測された値になります。 データ セット内の最後のレコードは 2018 年 12 月 31 日のものだったとします。 需要を予測するには、2019 年 1 月 1 日からの各店舗の時系列レコードを作成します。
day_datetime,store,week_of_year
01/01/2019,A,1
01/01/2019,A,1
必要な手順を繰り返して、この将来のデータをデータ フレームに読み込んで、best_run.forecast_quantiles(test_dataset)
を実行して将来の値を予測します。
注意
target_lags
や target_rolling_window_size
が有効になっている場合、サンプル内の予測は、自動 ML を使用した予測ではサポートされません。
大規模な予測
重要
現在、多くのモデルと階層時系列は Azure Machine Learning v1 でのみサポートされています。 Azure Machine Learning v2 は今後サポートされる予定です。
機械学習モデルの数が 1 つでは不十分で、複数の機械学習モデルが必要になるシナリオがあります。 たとえば、1 つのブランドについて店舗ごとに売上を予測したり、個々のユーザーに合わせてエクスペリエンスを調整したりするような場合です。 インスタンスごとにモデルを構築すると、多くの機械学習の問題で結果が向上する可能性があります。
グループ化とは、時系列を組み合わせてグループごとに個々のモデルをトレーニングできる時系列予測の概念です。 このアプローチは、平滑化やフィリングが必要な時系列がある場合、つまりグループ内で他のエンティティの履歴や傾向が役立つ可能性があるエンティティがある場合に特に役立ちます。 多数モデルおよび階層型時系列予測は、これらの大規模な予測シナリオ向けに自動機械学習を利用したソリューションです。
多数モデル
自動機械学習を備えた Azure Machine Learning 多数モデル ソリューションを使用すると、ユーザーは何百万ものモデルを並列でトレーニングおよび管理できます。 多数モデル ソリューション アクセラレータでは、Azure Machine Learning パイプラインを利用してモデルをトレーニングします。 具体的には、Pipeline オブジェクトと ParalleRunStep が使用されるため、ParallelRunConfig を介して設定された特定の構成パラメーターが必要です。
次の図は、多数モデル ソリューションのワークフローを示しています。
次のコードは、ユーザーが多数モデルの実行を設定するために必要な主要なパラメーターを示しています。 多くのモデル予測の例については、「多くのモデル - 自動 ML ノートブック」を参照してください
from azureml.train.automl.runtime._many_models.many_models_parameters import ManyModelsTrainParameters
partition_column_names = ['Store', 'Brand']
automl_settings = {"task" : 'forecasting',
"primary_metric" : 'normalized_root_mean_squared_error',
"iteration_timeout_minutes" : 10, #This needs to be changed based on the dataset. Explore how long training is taking before setting this value
"iterations" : 15,
"experiment_timeout_hours" : 1,
"label_column_name" : 'Quantity',
"n_cross_validations" : "auto", # Could be customized as an integer
"cv_step_size" : "auto", # Could be customized as an integer
"time_column_name": 'WeekStarting',
"max_horizon" : 6,
"track_child_runs": False,
"pipeline_fetch_max_batch_size": 15,}
mm_paramters = ManyModelsTrainParameters(automl_settings=automl_settings, partition_column_names=partition_column_names)
階層型時系列予測
ほとんどのアプリケーションでは、お客様はマクロ レベルとミクロ レベルでビジネスの予測を理解する必要があります。つまり、異なる地理的な場所での製品の売上を予測したり、会社のさまざまな組織に対して予想される従業員の要求を把握したりといったことです。 機械学習モデルをトレーニングして階層データをインテリジェントに予測する機能が不可欠です。
階層時系列は、入れ子になった属性が系列に含まれる構造です。 地理的または製品カタログの属性は、最適な例です。 次の例は、階層を形成する一意の属性を含むデータを示しています。 この階層は、ヘッドフォンやタブレットなどの製品の種類、製品の種類をアクセサリーとデバイスに分割する製品カテゴリ、製品が販売されている地域によって定義されます。
これをさらに視覚化するために、階層のリーフ レベルには、属性値の一意の組み合わせを含むすべての時系列が含まれています。 階層内のレベルを 1 つ上がるごとに、時系列を定義するためのディメンションが 1 つ少なくなると考えられ、下位レベルの子ノードの各セットが親ノードに集計されます。
階層型時系列ソリューションは、多数モデル ソリューションを基盤として構築され、同じ構成設定を共有します。
次のコードは、階層型時系列予測の実行を設定するための主要なパラメーターを示しています。 エンド ツー エンドの例については、「階層時系列 - 自動化された ML ノートブック」を参照してください。
from azureml.train.automl.runtime._hts.hts_parameters import HTSTrainParameters
model_explainability = True
engineered_explanations = False # Define your hierarchy. Adjust the settings below based on your dataset.
hierarchy = ["state", "store_id", "product_category", "SKU"]
training_level = "SKU"# Set your forecast parameters. Adjust the settings below based on your dataset.
time_column_name = "date"
label_column_name = "quantity"
forecast_horizon = 7
automl_settings = {"task" : "forecasting",
"primary_metric" : "normalized_root_mean_squared_error",
"label_column_name": label_column_name,
"time_column_name": time_column_name,
"forecast_horizon": forecast_horizon,
"hierarchy_column_names": hierarchy,
"hierarchy_training_level": training_level,
"track_child_runs": False,
"pipeline_fetch_max_batch_size": 15,
"model_explainability": model_explainability,# The following settings are specific to this sample and should be adjusted according to your own needs.
"iteration_timeout_minutes" : 10,
"iterations" : 10,
"n_cross_validations" : "auto", # Could be customized as an integer
"cv_step_size" : "auto", # Could be customized as an integer
}
hts_parameters = HTSTrainParameters(
automl_settings=automl_settings,
hierarchy_column_names=hierarchy,
training_level=training_level,
enable_engineered_explanations=engineered_explanations
)
サンプルの Notebook
次のような高度な予測の構成の詳細なコード例については、予測サンプル ノートブックを参照してください。
次のステップ
- 詳細については、「AutoML モデルをオンライン エンドポイントにデプロイする方法」を参照してください。
- 解釈可能性: 自動機械学習のモデルの説明 (プレビュー) について学習する。
- AutoML で予測モデルを構築する方法について学習する。
- さまざまな予測シナリオ用に AutoML を構成する方法について学習する。