LoginSignup
3
6

More than 3 years have passed since last update.

Amazon Forecast を利用して、お店の商品の売り上げ予測をする。

Last updated at Posted at 2019-09-18

はじめに

今回は、kaggle の Store Item Demand Forecasting Challenge のデータを使用して、お店の商品の売り上げ予測を Amazon Forecast で行います。

  • Store Item Demand Forecasting Challenge
    https://www.kaggle.com/c/demand-forecasting-kernels-only
    このデータセットには2013/1/1~2017/12/31日までの毎日の売り上げが、各店の各商品ごとに用意されています。
    店舗は10店、商品は50品用意されています。
    以下、データの初め5行になります。
    image.png

Amazon Forecast とは

Amazon Forecast とは、機械学習を使用して精度の高い予測を行うフルマネージド型のサービスで、履歴のあるデータセットであれば、どのような時系列データからでも予測結果を生成できます。

今回利用するデータ

今回はStore Item Demand Forecasting Challengeの train データから以下のデータを抽出し、学習テストデータとして利用します。

学習データ

  • store 1 の item 1
  • 2013/1/1~2017/10/31 までの毎日の売り上げ

テストデータ

  • store 1 の item 1
  • 2017/11/1~2017/12/31 までの毎日の売り上げ

実践

  • awsコンソールから forecast を開きます。
    001.png

データセットグループの作成

  • Create dataset group をクリックし、データセットグループの作成をします。

    002.png

  • データセットグループの設定を行います。

    • Dataset group name : 任意のデータセットグループ名を入力します。
    • Forecasting domain : データセットドメインの設定。今回は小売り予測のため Retail を選択します。
      データセットドメインの詳細はこちらを参照してください。
      003.png

データセットの設定

  • データセットの設定を行います。

    • Dataset name : 任意のデータセット名を入力します。
    • Frequency of your data : 時系列データの区切りを選択します。今回のデータは日にち区切りなので 1day を選択します。
      004.png
  • Data schema : データの保存形式に合わせてスキーマを設定。データドメインごとに必要な情報が変わるので、先ほどのドメインからデータセットタイプを参照してください。

    005.png

データセットのインポート設定

  • データセットのインポート設定を行います。
    • Dataset import name : データセットインポート時の名前を入力します。
    • Timestamp format : 入力データに合わせてタイムスタンプを設定します。
    • IAM Role : 読み込みを行う、対象のs3バケットへの権限を付与したIAMロールを指定します。
    • Data location : s3 に保存している、入力ファイル(csv)パスを入力します。 006.png

予測子の作成

  • Target time series data のステータスが Activeになったら、Predictor training の Start をクリックし、予測子の作成をします。
    ※他にも、item metadata data や Related time series data といったデータをインポートできます。データセットドメインごとに、各データに推奨される項目があり、推奨項目を入力することで精度があがるとされています。今回はインポートしません。
    007.png

  • 予測子の設定を行います。

    • Predictor name : 予測に付ける名前を入力します。
    • Forecast horizon : どれだけ先まで予測を行うか設定します。
    • Forecast frequency : 予測の区切りを設定します。
    • Algorithm selection :アルゴリズムの設定をします。今回は、最適な手法を自動で見つけてくれるAutomaticを選択します。
    • Forecast dimentions : 通常予測はitem_id毎に行われますが、必須ではないパラメータを入力として与えていた場合、そちらを対象に予測を行えます。
    • Country for holidays : 国ごとの祝日を考慮するように設定できます。
    • Number of backtest windows: 学習時の検証用データをいくつ切り出すか設定します。
    • Backtest window offset : 切り出す検証用データのデータ数を設定します。 008.png 009.png
  • Predictor training が Active になったら、予測子の作成が完了です。
    010.png

  • サイドバーからPredictor をクリックし、予測子の詳細を確認できます。
    010-1.png

  • 予測子を開くと、AutoMLで選ばれたアルゴリズムや、精度の指標となるwQLやRMSEなどを確認できます。

  • 結果を確認したら、右上の Create a forecast をクリックし、予測を行います。
    image.png

予測

  • 予測の設定を行います。
    • Forecast name : 予測の名前を入力します。
    • Predictor : 利用する予測子を選択します。
      011.png

予測結果の可視化

  • 予測が完了すたら、Dash board から Lookup forecast をクリックします。
    012.png

  • 予測の表示設定を行います。

    • Forecast : 利用する予測を指定します。
    • Start date : 表示するデータの開始時間を設定します。
    • End date : 表示するデータの終了時間を設定します。
    • Choose the keys you want to use to filter your forecasts : 予測結果を表示する item を選択します。 013.png
  • 実行すると以下のように設定した範囲のデータが表示されます。
    左側の黒いグラフが学習データ、右の色つきのグラフが予測結果になります。
    予測が正確か確認するために、予測結果をダウンロードし、テストデータと比べます。
    014.png

予測結果のエクスポート

  • サイドバーから Forecasts を選択し、作成した予測をクリックします。
    015.png

  • 右下の Create forecast export をクリックします。
    016.png

  • エクスポート設定を行います。

    • Export name : エクスポートの名前を入力します。
    • Generated forecast : エクスポートする予測を選択します。
    • IAM Role : 対象のS3への書き込み権限のあるIAMロールを設定します。
    • S3 forecast export location : 予測結果を保存する s3 パスを入力します。 017.png
  • export が Active になったらエクスポート完了です。
    018.png

  • 対象の s3 パスに無名のフォルダが作成され、フォルダ内に予測結果が csv 形式で保存されています。
    019.png

予測結果の比較

  • p50 の予測結果をテストデータ と比べてみます。
    青がテストデータ、オレンジが予測結果となります。
    おおむね、特徴はとらえられているかと思います。
    020.png

  • 上記グラフにp10、p90 を追加したグラフが以下になります。
    021.png

Amazon Forecast の料金

以下にAmazon forecast の費用を示します。

項目 料金
予測作成 予測1000個あたり0.6$
アップロードする学習データサイズ 1GBあたり0.088$
トレーニング時間 トレーニング1時間につき0.24$
  • 今回の検証にかかった金額
項目 料金
予測作成数 1つ*3(分位点が3つあるため) 0.6$
アップロードした学習データサイズ 30KB 0.0000072$
トレーニング時間 約30分 0.12$
合計 0.1800072$

おわりに

今回は、Amazon forecast を利用して小売り予測をしてみました。
時間、商品番号、売り上げデータのみで、これだけ予測が得られるのには驚きました。
更にパラメータを追加することで精度が上がるようなので、もう少し複雑なデータセットで試してみてもいいかもしれないです。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6