

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# DeepAR アルゴリズムの仕組み
<a name="deepar_how-it-works"></a>

トレーニング中、DeepAR はトレーニングデータセットとオプションのテストデータセットを受け入れます。テストデータセットは、トレーニングされたモデルを評価するために使用されます。一般的に、データセットに同じ一連の時系列を含める必要はありません。特定のトレーニングセットでトレーニングされたモデルを使用すると、トレーニングセット内の時系列の今後の予測と他の時系列の予測を生成できます。トレーニングデータセットとテストデータセットはどちらも 1 つまたは複数 (可能な場合) のターゲット時系列で構成されています。各ターゲット時系列は、必要に応じて特徴時系列のベクトルおよびカテゴリ別特徴のベクトルと関連付けることができます。詳細については、「[DeepAR アルゴリズムの入出力インターフェイス](deepar.md#deepar-inputoutput)」を参照してください。

次の例は、*i* によりインデックス付けされたトレーニングセットの要素であり、ターゲット時系列 *Zi,t* と 2 つの関連する特徴の時系列 *Xi,1,t* と *Xi,2,t* から構成されます。

![\[図 1: ターゲット時系列と関連付けられた特徴時系列\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/ts-full-159.base.png)


ターゲット時系列には欠損値が含まれている可能性があり、これらは時系列では切れ目で表されています。DeepAR\$1 は、今後認識される特徴の時系列のみをサポートします。これにより、「what-if」 シナリオを実行できます。たとえば、商品の価格を何らかの方法で変更した場合はどうなりますか?

各ターゲット時系列は、複数のカテゴリ別特徴に関連付けることもできます。これらの特徴を使用すると、時系列がどのグループに属するかをエンコードできます。カテゴリ別特徴を使用すると、モデルはグループの典型的な動作を学習できます。これを使用してモデルの精度を高めることができます。DeepAR はこれを実装するために、グループ内のすべての時系列の共通プロパティをキャプチャする各グループの埋め込みベクトルを学習します。

## DeepAR アルゴリズムでの特徴時系列の仕組み
<a name="deepar_under-the-hood"></a>

週末の急増などの時間依存パターンの学習を容易にするために、DeepAR はターゲット時系列の頻度に基づいて特徴の時系列を自動的に作成します。DeepAR は、このように派生した特徴の時系列を使用するだけでなく、トレーニングと推論の間にユーザーが提供するカスタムの特徴の時系列も使用します。次の図は、派生した 2 つの時系列の特徴を示しています。*ui,1,t* はその日の時間を表し、*ui,2,t* はその曜日を表します。

![\[図 2: 派生した時系列\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/ts-full-159.derived.png)


DeepAR アルゴリズムは、これらの時系列データを自動的に生成します。次の表に、サポートされている基本的な時間頻度で派生する特徴をリストします。


| 時系列の頻度 | 派生する特徴 | 
| --- | --- | 
| Minute |  `minute-of-hour`, `hour-of-day`, `day-of-week`, `day-of-month`, `day-of-year`  | 
| Hour |  `hour-of-day`, `day-of-week`, `day-of-month`, `day-of-year`  | 
| Day |  `day-of-week`, `day-of-month`, `day-of-year`  | 
| Week |  `day-of-month`, `week-of-year`  | 
| Month |  月  | 

DeepAR は、トレーニングデータセットの各時系列からいくつかのトレーニング例をランダムにサンプリングすることによってモデルをトレーニングします。各トレーニング例は、事前定義された固定長を持つ一対の隣接コンテキストと予測ウィンドウで構成されています。`context_length` ハイパーパラメータは、どの程度の過去まで遡ってネットワークを調べられるのかを制御し、`prediction_length` ハイパーパラメータは、どの程度の未来まで予測を生成できるかを制御します。トレーニング中、アルゴリズムは指定された予測長より短い時系列を含むトレーニングセット要素を無視します。次の図は、要素 *i* から抽出された、コンテキストの長さが 12 時間、予測の長さが 6 時間の 5 つのサンプルを示しています。簡潔にするために、特徴時系列 *xi,1,t* と *ui,2,t* は省略しました。

![\[図 3: サンプリングされた時系列\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/ts-full-159.sampled.png)


季節的パターンをキャプチャするために、DeepAR はターゲット時系列から遅延した値も自動的にフィードします。頻度が 1 時間に 1 回の例では、時間インデックス *t = T* ごとに、モデルは過去約 1、2、3 日に発生した *zi,t* の値を公開します。

![\[図 4: 遅延した時系列\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/ts-full-159.lags.png)


トレーニングされたモデルは、推論のために、トレーニング中に使用されたかどうかにかかわらず、ターゲット時系列を入力として受け取り、それ以降の `prediction_length` 値の確率分布を予測します。DeepAR はデータセット全体についてトレーニングされるため、予測では同様の時系列から学習したパターンが考慮されます。

DeepAR の背後にある数学の詳細については、[DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks (DeepAR: 自己回帰反復ネットワークによる確率予測) ](https://arxiv.org/abs/1704.04110)を参照してください。