2週間しか販売しない新商品を Vertex Forecast で時系列予測した結果

時系列予測というと、ユースケースとしては気温、航空機搭乗者数、株価などが代表的です。いずれも、季節性があり、長期にわたるデータがある、というのが特徴と言えます。

では、食品小売で扱われるような、2週間しか市場に出回らない短期間の新商品ではどうでしょう。

今回は時系列データの予測ができるという Google の AutoML 「Vertex Forecast」を使って検証してみました。

新商品の需要予測が重要な理由

普段わたしたちがコンビニやスーパーで見かける食品のうち、「定番品」と呼ばれるロングセラー商品は実に2割程度で、残りの8割は2週間しか店頭に並ばない「新商品」です。

さらに、新商品の売り上げは発売後数日で右肩下がりになるため、最初の数日でどれだけ売りきれるかが勝負です。欠品は許されません。

しかし、2週間で終わる商品を大量に仕入れる/作るのも無駄です。

そこで、過去の「似た商品」の実績データを使って、未来の「新商品」の売れ方を予測できたらいいなというのが、今回の試みを始めた背景です。

まずは検証の第一歩として、「同じ商品」の実績データを使って、2週間分のデータで各商品の時系列予測を行ってみました。この段階で全く当たらない、というのであれば時系列予測はそもそも短期商品には使えないということになります。

Vertex Forecast で新商品の時系列予測① トレーニングデータの用意

今回は、とある札幌の物流センターにおける日別商品別の出荷数を使わせていただきました。

<データの内訳>
商品カテゴリ:アイス・低温
データ件数:1,890 件
商品数:130 件
期間:販売日が 2020 年 6 月 〜 2021 年 10 月 に含まれるもの※
※各商品の販売期間は2週間

検証をシンプルにするため、使用するカラムは
日付、商品名、出荷数、平均気温、初回発注数、返り発注率、他の 11 カラムにしました。

Vertex Forecast で新商品の時系列予測② モデルのトレーニング

やり方は簡単ですが、Vertex Forecast というメニューはないので最初は迷子になるかも。

Google Cloud のコンソールで Vertex AI メニューのデータセットで、データタイプと目標の選択を最初に行うのですが、ここで「予測」にチェックを入れます。

左の「回帰/分類」は従来のAutoML、「予測」はVertex Forecast です。
あとは、データセットを読み込ませ、

「タイムスタンプ列」と「時系列の識別子列」にそれぞれのカラムを指定します。
今回の検証では、時系列の識別子列に「商品名」、タイムスタンプ列に「出荷日」をセットしました。
右の「新しいモデルをトレーニング」を押せば、完了です。大体1〜2時間でモデルが作成されます。

作成されたモデルの評価がこちら。

R二乗値が 0.2 と低いのが気になりますが、このまま続けてみます。
また、「特徴量の重要度」のグラフから、出荷日、初回発注数、返り発注率、平均気温が強く影響しているのも読み取れます。

Vertex Forecast で新商品の時系列予測③ バッチ予測の実行

モデルが作成できたら、Vertex AI の「バッチ予測」メニューから「作成」します。

「モデル名」には先ほど作成したもの、ソースはテスト用のデータセットをセットします。

今回の検証では、「同じ商品」の場合の時系列予測なので、トレーニングデータと同じデータから、ターゲット列「出荷数」のみ null にしたものを使いました。
なお、上のキャプチャで赤枠の説明可能性のオプションの「このモデルの特徴アトリビューションを有効にする」にチェックを入れると、各特徴が予測結果に及ぼした影響の度合いを可視化する特徴アトリビューションが使えるようになります。

が、2022 年 11 月現在では、時系列予測(Vertex Forecast)には対応していないので、チェック入れても意味ないです。ご注意を。

従来の「回帰/分類」の AutoML なら、下図のようにどの特徴量(縦軸)が予測結果にどの程度影響を与えたか(横軸)、を可視化してくれる優れものです。

時系列予測にも対応してくれる日が待ち遠しい。

Vertex Forecast で新商品の時系列予測④ 実績と予測の結果比較

バッチ予測が完了すると、メールが飛んできます。リンクをクリックするとバッチ予測のページに飛び、

さらに「データポータルでバッチ予測の結果を可視化します 詳細を表示」から Looker Studio に飛び、グラフで結果を見ることが出来ます。

グラフは日別サマリで、予測値が赤、実績値が青になっています。
日別商品別の予測値、実績値は、下の表でそれぞれ確認することが出来ます。

ぱっと見、結構当たってそうに見えるのですが、サマリだと各商品の予測がどれだけ当たっているのかわからないので、販売期間が同じ3商品をピックアップして並べてみました。

おぉ? 結構当たってそうですね。R二乗が 0.2 にもかかわらずいい感じ、と言えるのではないでしょうか。

今回の検証では、2週間しかない新商品の実績データでも、商品ごとにある程度は予測できているということがわかりました。特に、休配日(7/14、7/17、7/21)がちゃんと読めているのは素晴らしいです。

Vertex Forecast を使ってみた感想

ここだけの話、Vertex Forecast は、Google Cloud で 2022年1月18日にリリースされた新しめの機能で、2022年8月に検証を始めた当初は内部エラーばかりで全く動きませんでした。
ただ、サポートセンターの方と何度もやりとりし、向こうでも技術チームが動いて色々と対応して下さったようで、今では問題なく動いています。

今でも、同じトレーニングデータなのに特徴量の重要度グラフが出力されなかったり、時々挙動が怪しげなこともありますが、予測自体には問題はなさそうです。

色々書いてしまいましたが、それを差し引いても多変量時系列予測がこんなにお手軽にできてしまう、というのは、すごいサービスだなと思います。

まとめ

・Vertex AI ではモデル評価で「特徴量の重要度」を視覚的にチェックできる

・2週間しか販売しない新商品でも、Vertex Forecast の時系列予測は結構当たりそう

・休配日のような、周期性もきちんと読めていた