付録 A: よくある質問
Q: Amazon Forecast の使用を開始するにはどうすればよいですか。
-
まず、AWS アカウント が必要です。
-
次に、AWS Management Console
で Forecast サービスを開いてデータセットグループを作成し、 .csvファイルを対象とする時系列データセットにインポートします (必須)。作業開始に最低限必要となるデータは、予測対象分の履歴データです (各世帯のタイムスタンプごとの電力量など)。 -
最後に CreatePredictor を実行してモデルを作成し、CreateForecast を実行して予測結果を生成します。詳細については、「Getting Started (はじめに)」 のドキュメントページを参照してください。
また、「GitHub Introduction and Best Practice (GitHub 入門とベストプラクティス) ガイド」
Q: Amazon Forecast は私に適したツールですか。
機械学習の問題のすべてが予測の問題に関するものであるわけではありません。最初に尋ねるべきは、「現在直面しているビジネス上の問題に時系列データが含まれているか」という質問です。例えば、将来の特定の日時における特定の値のみが必要なのでしょうか。時系列予測は通常、不正行為の検出やユーザーに対して映画作品をお勧めするなど、(特定の日時を問わない) 静的な問題には適していません。静的な問題には、より迅速に問題を解決できるソリューションがあります。
時系列データに加えて、データ自体の「密度」が高く、長期間の履歴がある必要があります。次の表にこれらの情報がまとめられています。
表 2 — 条件と Amazon Forecast アルゴリズムクラス
| 条件 | Amazon Forecast アルゴリズムクラス |
|---|---|
| 同様のパターンを持つ最大 500 万の時系列を含む大規模なデータセット + 季節的影響 + 関連データ。各時系列には長い期間の履歴が必要です。年間イベントをキャプチャする場合、理想的には 2 年以上の履歴、各時系列 300 以上、できれば最低 1,000 個のデータポイントが必要です。 | Amazon Forecast 独自の深層学習である DeepAR+、CNN-QR |
| ほとんどの時系列に 300 個以上のデータポイントがあり、季節的影響と関連データを含む 1~100 の時系列で構成される小規模のデータセット。 | Prophet |
| ほとんどの時系列に 300 個以上のデータポイントがあり、季節的影響を含む 1~数十の時系列で構成される小規模のデータセット。 | ETS、ARIMA |
| 時系列の大半に 300 個以上のデータポイントがあり、1~数十の時系列で構成される断続的な (多数の 0 を含む断続的な) データセット。 | Amazon Forecast 独自の NPTS |
| ほとんどの時系列に 300 個未満のデータポイントがあり、1~数十の時系列で構成される小規模の (通常または断続的な) データセット。 | このデータは Amazon Forecast には小規模すぎます。代わりに Excel の ETS や、従来の統計モデルである ARIMA や Prophet をお試しください。 |
初めてデータ作業を行う際には、Predictor の AutoML モードでトレーニングを行うことが、ベストプラクティスです。AutoML を使用すると、すべてのアルゴリズムが自動的に実行され (Deep Learning アルゴリズムはハイパーパラメータ調整 (HPO) がオンの状態で実行)、対象データに最適なアルゴリズムを判断できます。
Q: データの欠損についてはどう対応しますか。 妥当な予測を生成するうえでデータの欠落が多すぎるのはどのような場合ですか。
データの記録に問題がある場合や、データの集計レベルが低すぎたり高すぎたりする場合があります。原則として、トレーニングデータの 1/3 を超えて予測の対象期間を設定することはできません。
欠損データの量以外にも、欠損データの代入も考慮すべきです。すべての 0 を NULL に変換して、欠損値を自動的に入力するという煩雑な作業は Amazon Forecast に任せることができます。Amazon Forecast を使用すると、欠損値の原因が新製品の導入 (コールドスタート) によるものか、製造中止の製品によるものかが自動的に検出されます。値、中央値、最小値、最大値、ゼロ、平均、nan (ターゲット時系列のみ) など、いくつかの欠損値ロジックを使用できます。NULL 入力構文の詳細については、ドキュメントを参照してください。
-
「frontfill」— (TTS のみ) 新商品やコールドスタートする商品と、その商品の履歴が発生する前の null 処理方法を指します
-
「middlefill」— 時系列値の途中の null を指します
-
「backfill」— 販売終了商品と、商品の販売が停止した後の null の処理方法を指します。
-
「futurefill」— (RTS のみ) トレーニングデータ終了後に発生する null を指します
Q: 入力履歴データには負の値はないのに、需要予測には負の値が表示されています。 どのような理由でこのような予測になりますか。 これを回避するにはどう対処できますか。
NPTS (負の数値を含まないデータを使用したトレーニング) モデルと DeepAR (負の 2 項確率関数を使用) モデル以外のすべてのモデルを使用すると、負の数値が生成されない保証はありません。上記のモデルのいずれかに変更するか、予測値の負の値を切り捨てることが解決策です。
Q: 精度指標が分位数で異なるのはなぜですか。 モデルが同じならば、同じエラーになるはずではないのですか。
加重が分位数に依存する方法の詳細については、重み付き分位損失 (wQL) を参照してください。
例えば、すべての予測が p10、p50、p90 の 3 つの異なる分位数にある場合、この 3 つの予測自体は確率変数です。精度は、各分位レベルの実績値と予測値間で個別に算出されます。以下のような重み付き分位損失の「wQL」の表が表示される場合があります。この wQL 値は相互に決定的な関係にあるわけではありません。(リコール損失はエラーを意味するため、非順序です。ただし、分位数の予測は順序付けられています)。したがって、例えば、p90 の wQL が p50 の wQL 以上であるべき根拠はありません。
表 3 — 予測分位数の例
| A | B | C | |
|---|---|---|---|
| 1 | P10 wQL | P50 wQL | P90 wQL |
| 2 | 0.18647 | 0.50879 | 0.30428 |
Q: 予測の精度を向上するにはどうすればよいですか。
予測の精度は、適切なデータが適切な量と質で入手できるかどうかに依存します。精度が不十分な場合は、問題の予測可能性の程度 (またはデータのランダム性、ノイズの有無、定常性のレベル) を把握することが、適切である場合があります。考慮すべきその他の要素には、さまざまなモデルの評価、ハイパーパラメータの設定、関連する時系列と商品のメタデータデータセットを使用した追加機能の組み込みなどがあります。具体的な提案については、GitHub に掲載されいるこのベストプラクティスドキュメントを参照してください
Q: 取り組んでいるユースケースに非常に適したアルゴリズムがあっても、Amazon Forecast では提供されていません。どうすればよいですか。
Amazon Forecast チームが該当のユースケースについてのサポートを提供します。Amazon Forecast<amazonforecast-poc@amazon.com> サービスチームにメールでお問い合わせください。