【15%の精度向上】Amazonが開発した時系列モデル、DeepARが凄い
Amazonが開発した時系列モデルDeepARについて解説しています。
アルゴリズムやパラメーターの設定、特徴やメリットについて詳しく知れる記事になっています。
目次
DeepARは2019年にAmazonが開発した時系列モデル
Amazonが開発したDeepARは、深層学習を使用して時系列を予測するための教師付き学習アルゴリズムです。論文の投稿年は2019年なので比較的最近のモデルですね。
引用:Salinas, D., Flunkert, V., & Gasthaus, J. (2019). DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks. arXiv:1704.04110v3. Amazon Research Germany.
DeepARは、複数の時系列データを考慮しながら、高い予測精度を目指すものとして設計されています。以下に、DeepARの主要な特徴とメリットについて解説します。
DeepARは、Amazonのクラウド機械学習サービスであるAmazon SageMakerで利用可能です。
私はDataikuで使用して初めてDeepARの存在を知りました。
DeepARのメリット(魅力点)
1.外部の変数を考慮可能
日付データと目的変数のみではなく、他に関連した時系列データも特徴量として組み込み可能です。
2.外部変数データが何百も含まれている場合に真価を発揮する
|可能な限り多くの時系列について DeepAR モデルをトレーニングすることをお勧めします。
|データセットに関連する時系列データが何百も含まれている場合、DeepAR アルゴリズムは標準の方法より優れた性能を発揮するようになります。
|データセットに何百もの関連する時系列データが含まれている場合、DeepAR は標準の ARIMA や ETS メソッドよりも優れています。
引用:DeepAR 予測アルゴリズム – アマゾン SageMaker (amazon.com)
ARIMAモデルより優れている宣言していますね笑
3.最新の方法と比較して精度が約15%向上
|We show through extensive empirical evaluation on several real-world forecasting data sets accuracy improvements of around 15% compared to state-of-the-art methods.
引用:Salinas, D., Flunkert, V., & Gasthaus, J. (2019). DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks. arXiv:1704.04110v3. Amazon Research Germany.
これは魅力的ですよね。
2019年時点での話ではありますが、
4.確率的予測が可能
DeepARは、予測の不確実性を考慮した確率的な予測を提供します。これにより、予測の中央値だけでなく、信頼区間や分布を得ることができ、リスクの評価や意思決定に有益な情報を提供します。
DeepARのデメリット
1.深層学習を使用しているので、説明透明性がない
ここですね~。しょうがないんですけどね。
ランダムフォレストやLightGBMなどと違って、重要な特徴量など説明が難しいです。
また、どうしてこのような結果になったのか説明することが難しいです。
2.説明変数が少ない場合、真価を発揮しない可能性がある
メリットの逆で、十分なデータセットがない場合精度を発揮しないかもしれません。
DeepARのアルゴリズム
トレーニングデータセットからランダムにサンプリングすることで学習する
|DeepAR は、トレーニングデータセットの各時系列からいくつかのトレーニング例をランダムにサンプリングすることによってモデルをトレーニングします。各トレーニング例は、事前定義された固定長を持つ一対の隣接コンテキストと予測ウィンドウで構成されています。context_length ハイパーパラメータは、どの程度の過去まで遡ってネットワークを調べられるのかを制御し、prediction_length ハイパーパラメータは、どの程度の未来まで予測を生成できるかを制御します。
引用:DeepAR アルゴリズムの仕組み – アマゾン SageMaker (amazon.com)
この図でいうと、緑の期間の部分をランダムに定め、青に該当する予測期間でトレーニングするらしいです。
ここでcontext_length
パラメーターはどの程度過去の期間をサンプリングし、学習させるかのパラメーターということになります。
また、prediction_length
では、予測期間のパラメーターですね。
季節性やトレンドを考慮するため、ターゲット時系列から過去の遅延した値も考慮する
|トレーニングされたモデルは、推論のために、トレーニング中に使用されたかどうかにかかわらず、ターゲット時系列を入力として受け取り、それ以降の prediction_length
値の確率分布を予測します。
引用:DeepAR アルゴリズムの仕組み – アマゾン SageMaker (amazon.com)
上記の図の例ですと、t時点の値のみではなく、季節周期を1とし、t-1,t-2,t-3時点などの値のパターンも考慮するらしいです。
新たな時系列特徴量の自動生成
引用:DeepAR アルゴリズムの仕組み – アマゾン SageMaker (amazon.com)
DeepARでは一つの時系列データから特徴を自動的に抽出し、新たな特徴量を作成してくれます。
上の図では、元データから派生した 2 つの時系列の特徴を示しています。ui,1,t はその日の時間を表し、ui,2,t はその曜日を表します。
例えば、時系列の粒度が分単位だった場合に以下の特徴量が生成されます。
時系列の粒度 | 派生する特徴 |
---|---|
Minute | minute-of-hour, hour-of-day, day-of-week, day-of-month, day-of-year |
深層学習ベースの学習
|Figure 2: Summary of the model. Training (left): At each time step t, the inputs to the network are the covariates xi,t, the target value at the previous time step zi,t−1, as well as the previous network output hi,t−1. The network output hi,t = h(hi,t−1, zi,t−1, xi,t, Θ) is then used to compute the parameters θi,t = θ(hi,t, Θ) of the likelihood (z|θ), which is used for training the model parameters. For prediction, the history of the time series zi,t is fed in for t < t0, then in the prediction range (right) for t ≥ t0 a sample zˆi,t ∼
(·|θi,t) is drawn and fed back for the next point until the end of the prediction range t = t0 + T generating one sample trace. Repeating this prediction process yields many traces representing the joint predicted distribution.
このモデルの概要に基づくと、各時点tでのネットワークへの入力は以下のデータです:
1.共変量 xi,t
これは外部からの追加情報や特徴量を指します。例えば、気温やプロモーション活動など、目標変数に影響を与える可能性がある外部の変数です。
2.前の時点 t-1 の目標値 zi,t−1
これは時系列データの前の値を指し、モデルが次の時点の予測を行う際の参照点として使用されます。
3.前のネットワーク出力 hi,t−1
これはネットワークが前の時点で出力した値で、次の時点の予測においても参考として用いられます。
これらの入力を基に、モデルは次の時点tでの目標変数の予測を行います。(正確には分布のパラメーター推定を行う)そして、予測範囲内でのさらなる予測を行う際に、前の予測値が新たな入力として使用され、このプロセスが予測範囲の終わりまで繰り返されます。
DeepARのハイパーパラメーター
主要なものを紹介します。
context_length・・・どの程度過去の期間を遡ってサンプリングし、学習させるか
推奨範囲:MinValue: 1、MaxValue: 200
prediction_length・・・予測期間
epochs・・・トレーニングデータへのパスの最大数
推奨範囲:MinValue: 1、MaxValue: 1000
time_freq・・・データセット内の時系列の詳細度
cardinality・・・カテゴリ別特徴 (cat
) を使用する場合、cardinality
は、カテゴリ別特徴ごとのカテゴリ (グループ) の数を指定する
num_cells・・・RNN の非表示のレイヤーごとに使用するセルの数
推奨範囲:MinValue: 30MaxValue: 200
num_layers・・・RNN の非表示レイヤーの数
推奨範囲:MinValue: 1、MaxValue: 8
参考:DeepAR ハイパーパラメータ – アマゾン SageMaker (amazon.com)
DeepAR モデルを調整する – アマゾン SageMaker (amazon.com)