[レポート]未来を予測する! Amazon Forecast の Tips と ユースケース #AWSSummit

2020.09.08

どーもsutoです。

開催中となるAWS Summit Onlineの「未来を予測する! Amazon Forecast の Tips と ユースケース」のセッションレポートです。

セッション情報

概要

2019 年に GA した Amazon Forecast は、ビジネスにおいて重要な予測を高精度に行う機械学習のサービスです。コンソールからGUIで操作することが可能で非常に簡単に始めることができます。本セッションでは、Amazon Forecast をさらに活用するために、精度改善の方法、操作の自動化、結果の可視化などについて詳しく説明します。また、どのようなユースケースで使われているのかを紹介します。

Speaker

大渕 麻莉(おおぶち まり)

アマゾンウェブサービス株式会社

機械学習ソリューションアーキテクト

セッションのゴールと対象者

  • Forecastをハンズオンを触ったことがあるけど、実際に自社でどのように使いこなせば良いかわからない方
    • →Forecastの使いどき、使いどころが理解できる
  • Forecastを使って時系列予測を行なっているけど、予測モデルの性能評価、精度向上に悩んでいる方
    • →問題解決のヒントを得て、明日から手を動かせるようになる

レポート

なぜ予測したいのか

  • 未来の予測ができれば、コスト削減などビジネス価値を生むためにこれから何をすべきかがわかる
    • 例:販売数を予測し、在庫を適切に管理したい
    • 在庫を多く抱えれば倉庫の圧迫などのリソースの無我遣い、少ないと売上の機会損失に
  • 時系列データ予測は難しい、以下4つの課題がある

Amazon Forecastについて

  • 特徴

  • 事例1.CasaOne様:家具の在庫管理
    • 倉庫における余剰在庫を削減
  • 事例2.AffordableTours様:労働力の管理
    • お客様の問い合わせに十分対応するリソースの最適化、オペレーションコスト削減
  • 使用可能なデータ

  • 使用可能なアルゴリズム

Forecastを使う際のTips

  • AutoML機能の有効化について
    • どのアルゴリズムを使えば良いかわからない場合に利用すると良い
    • すべてのアルゴリズムでモデル学習を実施し、複数の評価指標を算出してくれるので、最も結果がよかったモデルを使用可能
  • 予測向上のためのサイクルとして「モデルの学習」「予測実行」「結果の評価」を繰り返す
  • 予測データの取得
    • 任意の分位数で出力
    • 分位数(P10):供給に対し需要が下回る(在庫が発生する)確率が10%を表す指標
    • 在庫を出したくない商品に有効(家具などのスペースを多く取るもの、生鮮食品などの保管できないもの)
    • 分位数(P90):需要が供給を下回る(希望者に商品が行き渡る)確率が90%を表す指標
    • 機会損失したくない商品に有効(多くの人が求める目玉商品)
    • APIを使って予測データを取得、CSVにエクスポート
  • 評価指標について

  • RMSE
    • 予測値を大きく外れたポイントがあると値が大きくなる
    • →想定外の値を重くみたい場合に活用する
  • MAPE
    • 全ポイントを平均して予測値との誤差が大きいと値が大きくなる
    • 平均して総合的なモデル性能を評価する場合に活用する
  • wQuantileLoss
    • MAPEと同様に予測値と実測値の差を割合として産出する指標
  • 詳細な評価によってビジネス価値を生むことができるか確認

    • 商品ごとに予測と実際の値の差が異なるか?
    • 重要な商品の予測はどの程度正しいか?
    • 誤差が大きい商品と小さい商品の違いは?(傾向、販売数、連動しているデータを見極める、学習モデルを変更するなど)
  • 予測が難しいデータ
    • 値がゼロとなるポイントが多い場合
    • 対策1:データを統合する
    • 例として、日単位から週単位へ、類似カテゴリのデータを加算など
    • 対策2:関連時系列データや項目メタデータを追加する
    • 祝日連動、イベントの影響、商品の価格や生産地など
  • モデルの再学習なしに最新データを予測
    • 新しいデータが更新されるごとに再学習していてはコストがかかる
    • まずは入力データセットを追加するのみで予測を実施して結果を評価
    • 予測精度が落ちてきたら追加されたデータセットも含めて再学習を行なってみる

  • Forecastの料金は「モデルの学習を行なっている時間」「予測実行は”予測数✖️分位数”」で課金発生
    • 学習頻度を減らし、分位数を最小限の数にすることでコストパフォーマンスが良くなる

まとめ

AWSJによるCommunity Talkの様子

業務等の関係で途中までしか試聴できませんでしたが、いくつか記憶に残っているQ&Aを載せています。

  • Q.SagemakerとForecastの使い分けはどうすればよいか
    • Forecast:機械学習のインフラ実装やコード書きに詳しくない(できない)がデータセットは用意できる場合に利用
    • Sagemaker:モデルをデプロイするインスタンスのスペックや特定アルゴリズムなど、詳細にカスタムしたい要件がある場合に利用
  • Q.大きくトレンドが変化するイベント(COVID-19 など)が起きたらどうすればよいか
    • その場合はイベント発生後のデータで学習せざるを得ない。学習データが少ないという問題点が出るが、例として、イベント前後のフラグや変化した特徴量を新たな要素としてデータセットを編集する等
  • Q.1年周期のデータ量で予測が必要なサービスで集計途中(1年未満のデータ量)から予測を出してサービスを開始したい場合はどうすればよいか
    • まずはProphetやETSあたりで性能をお試ししてもらって、1年分のデータが集まったらDeepAR+を使用して予測結果を見てみる、といったステップが良いのではないか

感想

Forecastのサービスを実際のビジネスに生かすためのノウハウや、うまく使いこなすためのTipsが明確に説明されていてとても勉強になりました!

本当に使えるサービスなのか判断に迷っている方もこのセッションで疑問を払拭できたのではないでしょうか。

セッション動画のリンク