Automated Machine Learning の新機能を使用して予測の精度を向上

2019年6月6日 に投稿済み

Senior Program Manager, Azure Machine Learning

このたび、Azure Machine Learning サービスの時系列予測に含まれる新機能がリリースされました。予測のプレビューが 2018 年 12 月にリリースされて以来、お客様から強い関心をお寄せいただき嬉しく思います。私たちは、こうしたお客様の声に耳を傾けており、フィードバックをお寄せくださった皆様に感謝しています。今回のマイルストーンを達成することができたのは、皆様からの反響があったからこそです。この場をお借りして御礼申し上げます。

特集画像、Automated Machine Learning 時系列予測の一般提供開始

収益、在庫、売上、顧客の需要など、予測の作成はあらゆるビジネスに不可欠です。機械学習モデルの構築は複雑で時間がかかり、アルゴリズムの反復、ハイパーパラメーターのチューニング、特徴量エンジニアリングなど、考慮すべき要素が数多くあります。時系列データの場合には、これらの選択肢が倍増し、トレンド、季節性、祝日、トレーニング データの効果的な分割方法など、追加の考慮事項が生じます。

今回 Automated Machine Learning (Automated ML) の予測に、推奨モデルの精度とパフォーマンスを向上させる新機能が追加されました。

  • 新しい予測関数
  • Rolling-Origin Cross Validation
  • 構成可能なラグ
  • ローリング ウィンドウ集計特徴量
  • 祝日の検出と特徴付け

予測関数の拡張

予測タスク タイプの予測値を取得する新しい方法が導入されました。時系列データを扱う場合、予測時にさまざまなシナリオが発生するため、慎重に検討する必要があります。たとえば、予測ごとにモデルを再トレーニングできるか、将来の予測ドライバーはあるか、過去のデータにギャップがある場合どのように予測できるか、などです。新しい予測関数は、これらすべてのシナリオに対応することができます。

新しい予測関数を使用する場合のトレーニング データと予測データのシナリオの一般的な構成について詳しく見てみましょう。Automated ML における予測の起点 (forecast origin) とは、予測値の予測を開始する時点を指します。予測期間 (forecast horizon) とは、将来のどの時点まで予測を行うかを表します。

多くの場合、トレーニングと予測に時間のギャップはありません。利用可能な最新のデータによってモデルをトレーニングできるため、これは理想的なモデルです。予測間隔に再トレーニングを行う余裕がある場合 (財務予測率や、過去の収益または既知の注文量を使用するサプライ チェーン アプリケーションのように、データが比較的固定されている状況など) は、予測をこのように設定することを推奨します。

トレーニング データと予測データに時間のギャップがない場合の理想的なユース ケース

予測時には、事前に将来の値が判明している場合もあります。これらの値は、コンテキスト情報として、予測の精度を大幅に向上させることができます。たとえば、スーパーの商品の価格は数週間前には判明しており、「sales (売上)」のターゲット変数に大きく影響します。あるいは、what-if 分析を実行する場合に、為替レートなどのドライバーの将来の値を使用して実験を行うことができます。これらのシナリオでは、予測インターフェイスを使用して、予測が必要な期間を表す予測ドライバー (Xfuture) を指定できます。 

トレーニング データと予測データに時間のギャップがある場合、トレーニングされたモデルは古くなります。たとえば、IoT などの高頻度のアプリケーションでは、他のデバイスや天候などの外部要因に依存しているセンサーから取得するデータが高速に変化するため、モデルを毎回再トレーニングすることは困難です。このような場合は、ターゲット (Ypast) およびドライバー (Xpast) の最新の値を使用して予測コンテキストを提供することで、予測の精度を向上できます。予測関数はギャップを適切に処理し、必要に応じてトレーニングおよび予測コンテキストから値を補完します。

トレーニング データと予測データに時間のギャップがある場合にコンテキスト データを使用して予測をサポート

売上、収益、顧客維持率などのシナリオでは、将来の期間について利用可能なコンテキスト情報が存在しない可能性があります。このような場合、予測関数では「終点」の時点まで前提データなしで予測を作成することができます。予測の終点 (forecast destination) とは、予測期間が終了する時点を指します。モデルの最大期間 (model maximum horizon) とは、モデルが予測するようにトレーニングされた期間の数であり、予測期間の長さを制限する場合があります。

トレーニング データと予測データに時間のギャップがなく、利用可能なコンテキスト データが存在しない場合のユース ケース

予測モデルは、入力データのエンリッチメント (祝日の特徴量を追加するなど) を行い、欠損値を補完します。予測では、エンリッチメントおよび補完されたデータが返されます。

GitHub (英語) では、売上予測 (英語)自転車の需要 (英語)エネルギー予測 (英語) のサンプル ノートブックを公開しています。

Rolling-Origin Cross Validation

クロス検証 (CV) は、モデルのサンプル外の誤差を推定、削減するうえで不可欠な手順です。時系列データの場合は、テスト データよりも過去の値のみを使用してトレーニングを行うようにする必要があります。時間を考慮せずにデータを分割すると、データが運用環境で利用される方法と一致しないため、予測器の汎化誤差の推定が不正確になる可能性があります。

評価の正確性を期すために、時系列データの機械学習モデルを評価するための標準的な方法として Rolling-Origin Cross Validation (ROCV: 起点のローリングによるクロス検証) が追加されました。ROCV では、起点となる時点を使用して、系列をトレーニング データと検証データに分割します。時間の起点をスライドさせると、クロス検証分割が生成されます。

ROCV を使用しない場合の例として、40 の観測値を含む架空の時系列を考えてみましょう。ここでのタスクは、将来の最大 4 つの時点の系列を予測するモデルをトレーニングすることだとします。以下の画像は、標準的な 10 分割クロス検証 (CV) 戦略を示したものです。画像の Y 軸は作成される CV 分割を表しており、トレーニング ポイント (青) と検証ポイント (オレンジ) は色分けされています。以下の 10 分割の例では、1 ~ 9 番目の分割について、モデルのトレーニング セットに検証セットよりも未来の日付が含まれている点に注目してください。これにより、トレーニングおよび検証結果が不正確になります。

クロス検証では、各分割のトレーニング ポイントが複数の時点に分散しており、検証中のデータ漏えいが発生する

時系列の場合、このシナリオは回避する必要があります。代わりに、以下のように ROCV 戦略を使用すれば、時系列データの整合性を維持して、データ漏えいのリスクを排除できます。

Rolling-Origin Cross Validation (ROCV) では、各分割のトレーニング ポイントが期間の最後に分散しており、検証中のデータ漏えいを排除できる

予測では、ROCV は自動的に使用されるため、トレーニング データと検証データを一緒に渡し、クロス検証分割の数を設定するだけで済みます。Automated ML では、実験に定義した time 列と grain 列を使用して対象期間を考慮した方法でデータを分割します。また、Automated ML では、最新の最も有益なデータ (Rolling-Origin の分割方法では検証セット) を利用するために、トレーニングおよび検証セットの組み合わせによって選択したモデルの再トレーニングを行います。

ラグとローリング ウィンドウ集計

多くの場合、予測器に提供できる最も有益な情報はターゲットの最新の値です。ターゲットのラグと累積統計を作成すると、予測の精度が向上します。

Automated ML では、モデルの特徴量としてターゲット ラグを指定できるようになりました。ラグの長さを追加すると、時間間隔に基づいてラグを追加する行数を指定できます。たとえば、2 単位時間のラグを追加したい場合は、ラグの長さのパラメーターを 2 に設定します。

以下の表は、ラグの長さ 2 が処理される方法を示しています。緑色の列は、特徴量をエンジニアリングして、売上に 1 日および 2 日のラグを追加したものです。青い矢印は、トレーニング データによって各ラグが生成されることを示しています。対象のラグ期間にサンプル データが存在しない場合は、NaN (Not a Number) が作成されます。

ラグの長さ 2 が処理される方法を示す表

ラグに加えて、データ値のローリング集計を特徴量として追加する必要がある場合もあります。たとえば、エネルギー需要を予測する場合には、加熱された空間の温度変化を考慮するために、3 日のローリング ウィンドウ特徴量を追加することができます。以下の表は、ウィンドウ集計を適用した場合の特徴量エンジニアリングを示しています。min (最小値)、max (最大値)、sum (合計値) の列は、定義された設定に基づいて、3 日分スライドしたウィンドウに生成されます。各行には計算によって新しい特徴量が追加されます。たとえば、2017 年 1 月 4 日の最大値、最小値、合計値は、2017 年 1 月 1 日、2017 年 1 月 2 日、2017 年 1 月 3 日の一時値を使用して計算されます。この「3」というウィンドウは残りの行にも同様にシフトされてデータが作成されます。

ウィンドウ集計を適用した場合の特徴量エンジニアリングを示す表

これらの追加の特徴量を生成し、追加のコンテキスト データとして使用すると、トレーニングしたモデルの精度が向上します。実験の設定に少数のパラメーターを追加するだけで、これらをすべて実現できます。

祝日の特徴量

多くの時系列シナリオでは、祝日はモデル化したシステムの動作に大きく影響します。特に売上や製品需要などのシナリオでは、祝日前、祝日当日、祝日後に系列のパターンが変化する可能性があります。Automated ML では、日別のデータセットによるモデル トレーニングの入力値として追加の特徴量が作成されます。祝日ごとに既存のデータセットにウィンドウが生成され、学習器が効果を割り当てることができます。今回のアップデートでは、110 か国以上の 2,000 以上の祝日がサポートされます。この特徴量を使用するには、時系列の設定の一部として国コードを渡します。以下の例では、左の表に入力データを示し、右の表に祝日の特徴付けが適用された更新後のデータセットを示しています。追加の特徴量または列を生成することで、モデルのトレーニング時にさらなるコンテキストが追加され、精度が向上します。

左側のトレーニング データには祝日の特徴量が適用されておらず、右側の表には適用されている

Automated ML の時系列予測の利用を開始する

今回の新機能により Automated ML では、複雑な予測シナリオにまでサポートが拡大され、ラグやウィンドウ集計を使用してトレーニング データの構成を細かく制御できるようになったほか、新しい祝日の特徴付けや ROCV によって精度を向上させることができるようになりました。Azure Machine Learning の目標は、あらゆるスキル レベルのデータ サイエンティストが強力な機械学習テクノロジを使用して、プロセスを簡素化し、モデルのトレーニングに費やす時間を短縮できるようにすることです。まずはこちらのドキュメントにアクセスし、皆様のご意見をお聞かせください。引き続き Automated ML の強化に取り組んでまいります。

Azure Machine Learning サービスの詳細を確認し、ぜひ無料試用版をお試しください。