SlideShare a Scribd company logo
Copyright (c) 2020 The Japan Research Institute, Limited 1 /12
Kaggle M5 Forecasting
株式会社日本総合研究所
先端技術ラボ 森
2020/7/21
Copyright (c) 2020 The Japan Research Institute, Limited 2 /12
1.コンペ概要
Kaggle M5 Forecastingは過去の売上データから将来の売上を予測することを目標としてKaggleプラ
ットフォーム上で開催されたコンペ。売上を予測する「Accuracy」と売上分布を予測する「Uncertainty」
の2部門がある。与えられるデータは両部門で同一であり、提出物と評価方法が異なる。
概要 (参考)M Competitionとは
ニコシア大学のSpyros Makridakis教授が創設した「the
Makridakis Open Forecasting Center (MOFC)」が主催
するコンペ。1982年から過去4回のコンペが開催されており、今
回は5回目。
(ニコシア:地中海の島国であるキプロス共和国の首都)
項目 内容
テーマ 米国3州(カリフォルニア州、テキサス州、ウィスコン
シン州)に存在するウォルマート10店舗における
3049種類の商品の将来28日間における売上
(販売数量)を予測する。
主催者 ニコシア大学
協賛 Google, Uber, Warmart, IIF
(International Institute of Forecasters)
開催期間 2020年3月3日~2020年6月30日
賞金総額 $100,000
ルール • 外部データ利用可能(予測時点で利用可
能なもののみ)
• コンピューターリソースの制限なし
Copyright (c) 2020 The Japan Research Institute, Limited 3 /12
2.データ概要(1/2)
与えられるデータは①売上、②カレンダー、③価格の3つのCSVファイル。Training期間の①売上と②カ
レンダー・③価格の情報を元に、Validation期間とEvaluation期間の売上を予測する。
Validation期間の予測値はPublic Leaderboardの順位、Evaluation期間の予測値はPrivate
Leaderboardの順位に反映され、最終的な順位はEvaluation期間の予測値で決まる。
データ 内容 期間
Training
2011/1/29~2016/4/24
Validation
~2016/5/22
Evaluation
~2016/6/19
①売上
(sales)
店舗ごと・商品ごとの日付単位の販売数
量の時系列データ
(ある店舗である商品がある日にどれだけ
の数売れたか)
あり 予測対象
(2020/6/1公
開)
予測対象
(非公開)
②カレンダー
(calendar)
宗教行事やスポーツ等のイベント開催日と
SNAP(連邦栄養補助プログラム、低所
得者向けクーポン)が利用できる日
あり あり あり
③価格
(prices)
店舗ごと・商品ごとの週単位の販売価格 あり
(販売されている期間のみ)
あり あり
<注意点>
店舗や商品の属性情報は与えられない。
商品はその時点でまだ販売されていない場合があり、それまでは「①売上」はすべて「0」となっている。「③価格」でその時点で販売されて
いたかどうかの判定が可能。
Copyright (c) 2020 The Japan Research Institute, Limited 4 /12
2.データ概要(2/2)
予測対象の店舗数は10店舗、商品数は3049種類となっている。
売上(販売数量)は多くの日付で0となっており、商品によって平均的な販売数量が異なる。
画像はAKuni氏によるKaggle Notebook「【日本語】Back to (predict) the
future - M5 EDA」より転載。
(https://www.kaggle.com/marutama/back-to-predict-the-
future-m5-eda)
州 店舗数
カリフォルニア州(CA) 4
テキサス州(TX) 3
ウィスコンシン州(WI) 3
合計 10
カテゴリ 分類 商品数
食料品(FOODS) 3 ?
娯楽(HOBBIES) 2 ?
家庭用品
(HOUSEHOLD)
2 ?
合計 7 3049
<店舗数>
<商品数>
<売上データのサンプル>
Copyright (c) 2020 The Japan Research Institute, Limited 5 /12
3.評価方法(1/3)
評価は集計する単位によって12種類、合計42840個の時系列データ(28日間)に対して行われる。
Accuracy部門は評価指標としてWRMSSEが用いられる。
(1)集計単位
Level 集計単位 数
店舗 商品
1 全店舗 全商品 1
2 州 全商品 3
3 個別店舗 全商品 10
4 全店舗 カテゴリー 3
5 全店舗 分類 7
6 州 カテゴリー 9
7 州 分類 21
8 個別店舗 カテゴリー 30
9 個別店舗 分類 70
10 全店舗 個別商品 3,049
11 州 個別商品 9,147
12 個別店舗 個別商品 30,490
合計 42,840
下記の単位で集計した時系列データ(28日間)で評価される。
(2)Accuracy部門の評価指標
𝑛は訓練データ数、ℎは予測期間のデータ数、 𝑌𝑡 は売上実測値、
𝑌𝑡は売上予測値。
𝑾𝑹𝑴𝑺𝑺𝑬 =
𝑖=1
42,840
𝑤𝑖 ∗ 𝑅𝑀𝑆𝑆𝐸 ,
𝑹𝑴𝑺𝑺𝑬 =
1
ℎ
𝑡=𝑛+1
𝑛+ℎ
𝑌𝑡 − 𝑌𝑡
2
1
𝑛 − 1 𝑡=2
𝑛
𝑌𝑡 − 𝑌𝑡−1
2
,
数式はMOFCの「THE M5 COMPETITION Competitors’ Guide」か
ら引用。(https://mofc.unic.ac.cy/wp-
content/uploads/2020/03/M5-Competitors-Guide-Final-10-
March-2020.docx)
ウェイト𝑤𝑖は合計が1になるように、下記のルールで決める。
① 12種類の時系列データで等配分(それぞれ12分の1)
② 訓練データの直近28日間の売上金額合計に応じて配分
→個別商品の予測誤差は全体の評価にあまり影響しない。
Accuracyの評価指標であるRMSSE(Root Mean Squared Scaled
Error)は、通常のRMSE(Root Mean Squared Error)を、訓練データ
における前日の売上実測値をそのまま翌日の売上予測値とした場合の
RMSEで割ることでスケールをそろえたもの。
Copyright (c) 2020 The Japan Research Institute, Limited 6 /12
3.評価方法(2/3)
Uncertainty部門は予測分布の9つの分位点で評価される。
(3)Uncertainty部門の提出物(9分位点)
12種類、42840個の時系列データについて、予測期間28日それぞれの売上分布の9分位点を提出する。
分位点は0.5%、2.5%、16.5%、25%、50%(中央値)、75%、83.5%、97.5%、99.5%。
下記は全店舗・全商品の時系列データの訓練期間(2011/1/29~2016/4/24)の売上分布と9分位点。
元となる時系列データはトレンドや周期性があるものの、大まかに言って(対数)正規分布のように見える。(中心極限定理?)
0.5% 2.5% 16.5% 25% 50%
中央値
75% 83.5% 97.5% 99.5%
12/25は営業していないためか、売上がほぼ0となっている。
Copyright (c) 2020 The Japan Research Institute, Limited 7 /12
3.評価方法(3/3)
Uncertainty部門は評価指標としてWSPL (Weighted Scaled Pinball Loss) が用いられる。
(4)Uncertainty部門の評価指標
𝑛は訓練データ数、ℎは予測期間のデータ数、 𝑌𝑡 は売上実測値、 𝑄𝑡 𝑢 は時点𝑡における予測分布の分位点𝑢の分位数。
ウェイト𝑤𝑖はAccuracy部門と同じ。
𝟏はかっこの中身が真であれば1、そうでなければ0となる関数。
𝑾𝑺𝑷𝑳 =
𝑖=1
42,840
𝑤𝑖 ∗
1
9
𝑗=1
9
𝑆𝑃𝐿(𝑢𝑗) ,
𝐒𝐏𝐋(𝐮) =
1
ℎ
𝑡=𝑛+1
𝑛+ℎ
𝑌𝑡 − 𝑄𝑡(𝑢 )𝑢𝟏 𝑄𝑡 𝑢 ≤ 𝑌𝑡 + 𝑄𝑡(𝑢 − 𝑌𝑡)(1 − 𝑢)𝟏{𝑄𝑡 𝑢 > 𝑌𝑡}
1
𝑛 − 1 𝑡=2
𝑛
𝑌𝑡 − 𝑌𝑡−1
,
数式はMOFCの「THE M5 COMPETITION Competitors’ Guide」から引用。
(https://mofc.unic.ac.cy/wp-content/uploads/2020/03/M5-Competitors-Guide-Final-10-March-2020.docx)
実測値が分位点の右側であれば、
実測値と分位点の差に分位点uをかける。
実測値が分位点の左側であれば、
実測値と分位点の差に 1-分位点u をかける。
Copyright (c) 2020 The Japan Research Institute, Limited 8 /12
4.データ観察
時系列データの分布を確認したところ、集計レベル1~9と10~12で大きく分布が異なるように見受けら
れる。そのため、集計レベル1~9の予測を行う正規分布またはT分布のモデルと、10~12の予測を行う
負の二項分布のモデルの二つのモデルでそれぞれ予測を行う。
Level 集計単位 数
店舗 商品
1 全店舗 全商品 1
2 州 全商品 3
3 個別店舗 全商品 10
4 全店舗 カテゴリー 3
5 全店舗 分類 7
6 州 カテゴリー 9
7 州 分類 21
8 個別店舗 カテゴリー 30
9 個別店舗 分類 70
10 全店舗 個別商品 3,049
11 州 個別商品 9,147
12 個別店舗 個別商品 30,490
合計 42,840
正規分布またはT分布に従うと仮定してモデルを作成。
負の二項分布に従うと仮定してモデルを作成。
(ガンマ分布、ポアソン分布、Tweedie分布も候補としては考
えられる)
Copyright (c) 2020 The Japan Research Institute, Limited 9 /12
5.モデル構造
直近の28日間のデータ(売上・カレンダー・価格)と予測対象28日間のデータ(カレンダー・価格)を
元に予測対象28日間の売上を予測するモデルを作成。モデルパラメータは最尤推定で求める。
入力データ
エンベディング層
(カテゴリー特徴量をエンコーディングする)
LSTM層1 LSTM層2
FC
(月)
FC
(火)
FC
(日)
FC
(土)
・・・
出力データ
28日間それぞれの
売上分布のパラメータ
予測対象28日間の
カレンダー・価格
モデル
・・・
直近28日間の
売上・カレンダー・価格
・・・
当初出力層は曜日ごとのFC層ではなくLSTM層にしていたが、うまく周期性を表現できなかったため、曜日ごとのFC層に変更。
Batch Norm・Layer NormはLSTMと相性が悪いようなので見送った。
Copyright (c) 2020 The Japan Research Institute, Limited 10 /12
6.特徴量エンジニアリング
前述のモデル構造としたことからラグ特徴量や直近N日間のターゲットエンコーディングは使用しない方針と
した。
将来にわたって作成できる特徴量のみからその日の売上を予測するモデルをLightGBMで作成し、
Permutation Importanceを見て特徴量を選択。
価格データは集計レベル1~9では使用しない方がスコアが上昇したので、使用しない。
売上データは集計レベル1~9では時系列ごとにPower Transformerで正規分布に近づける。(予測
時には逆変換を行う)
集計レベル10~12では分布の形状を維持するために前処理を行わない。(例えば、平均1個売れる商
品と平均10個売れる商品では分布の形状が大きく異なる)
各時系列ごとの曜日のターゲットエンコーディングを入れたことでわずかにLocal CVスコアが上昇した。(リ
ークの対処はせず、全期間の平均値を利用)
ターゲットエンコーディングの値は最終層の曜日ごとのMLPの入力とした。
Copyright (c) 2020 The Japan Research Institute, Limited 11 /12
7.ハイパーパラメーター探索
グリッドサーチでハイパーパラメーターを調整。(全部の組み合わせは試していない)
• Seed=1/2/3/4
• 2015年の訓練データを2倍、2016年を4倍にオーバーサンプリングするかどうか
• 時系列ごとのウェイトを損失関数に反映するかどうか
• LSTM層のノード数(8/16/32/64)
• 正規分布/T分布(自由度=1,2,5,10)
• ドロップアウト確率(0.0/0.1/0.2/0.5)
• オプティマイザー(Adam/SGD)
• 学習率(0.1/0.01/0.001/0.0001)
• weight_decay(0.0/0.001/0.01)
• スケジューラー(CosineAnealingLR/なし)
• ターゲットエンコーディングあり・なし
• バッチサイズ(4096/1024/256)
スコアを算出する期間によってかなりスコアが異なるため、Local CVのバリデーション・テスト期間を土壇場
で4週間→8週間に変更。
集計レベル1~9のモデルはSeed値によって大きくスコアが変動する。Validation期間の売上データは
使用せずにモデルを訓練し、Publicのスコアで最終seedを確定。
Copyright (c) 2020 The Japan Research Institute, Limited 12 /12
8.感想
Kaggleのコンペに本格的に参加したのは今回が初めてでしたが、まさか4位とは、未だに信じられません。
Public Leaderboard ではコンペ期間中ずっと下から数えたほうが早かったので、最初にPrivateの順位
を見たときには目を疑いました。
応援してくださった皆さん、このコンペの主催者の皆さん、共に戦ったKagglerの皆さん、本当にありがとうご
ざいました。
Accuracy は最初から諦めていたのですが、Uncertainty なら参加チームも少ないし、ワンチャン銅メダル
ぐらい取れるんじゃないかと思って参加しました。実際に参加してみるとデータ量とメモリ管理に苦労し、それ
でいて一向に Public Leaderboard は上がらず、心が折れそうになっていましたが、最後までがんばり続
けたことで自分としては最高の結果を残すことができました。本当に嬉しいです。
今回のコンペを通して、時系列データの扱いについてはいろいろと勉強になりました。主催者がベースライン
のモデルを公開していたり、Pyroの開発者がPyroのソリューションを公開してくれているので、それらを見な
がら引き続き勉強していきたいと思います。
実装はこちらで公開しました。
https://github.com/marisakamozz/m5

More Related Content

What's hot

【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
Deep Learning JP
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
 
自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
cvpaper. challenge
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
Deep Learning JP
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング・ラボ)
 
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
Deep Learning JP
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
Taiji Suzuki
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
Deep Learning JP
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
joisino
 
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
RHamano
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
cvpaper. challenge
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
Kota Nagasato
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
joisino
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
 

What's hot (20)

【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
【DL輪読会】A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
 
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
混合整数ブラックボックス最適化に向けたCMA-ESの改良 / Optuna Meetup #2
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 

Kaggle M5 Forecasting (日本語)

  • 1. Copyright (c) 2020 The Japan Research Institute, Limited 1 /12 Kaggle M5 Forecasting 株式会社日本総合研究所 先端技術ラボ 森 2020/7/21
  • 2. Copyright (c) 2020 The Japan Research Institute, Limited 2 /12 1.コンペ概要 Kaggle M5 Forecastingは過去の売上データから将来の売上を予測することを目標としてKaggleプラ ットフォーム上で開催されたコンペ。売上を予測する「Accuracy」と売上分布を予測する「Uncertainty」 の2部門がある。与えられるデータは両部門で同一であり、提出物と評価方法が異なる。 概要 (参考)M Competitionとは ニコシア大学のSpyros Makridakis教授が創設した「the Makridakis Open Forecasting Center (MOFC)」が主催 するコンペ。1982年から過去4回のコンペが開催されており、今 回は5回目。 (ニコシア:地中海の島国であるキプロス共和国の首都) 項目 内容 テーマ 米国3州(カリフォルニア州、テキサス州、ウィスコン シン州)に存在するウォルマート10店舗における 3049種類の商品の将来28日間における売上 (販売数量)を予測する。 主催者 ニコシア大学 協賛 Google, Uber, Warmart, IIF (International Institute of Forecasters) 開催期間 2020年3月3日~2020年6月30日 賞金総額 $100,000 ルール • 外部データ利用可能(予測時点で利用可 能なもののみ) • コンピューターリソースの制限なし
  • 3. Copyright (c) 2020 The Japan Research Institute, Limited 3 /12 2.データ概要(1/2) 与えられるデータは①売上、②カレンダー、③価格の3つのCSVファイル。Training期間の①売上と②カ レンダー・③価格の情報を元に、Validation期間とEvaluation期間の売上を予測する。 Validation期間の予測値はPublic Leaderboardの順位、Evaluation期間の予測値はPrivate Leaderboardの順位に反映され、最終的な順位はEvaluation期間の予測値で決まる。 データ 内容 期間 Training 2011/1/29~2016/4/24 Validation ~2016/5/22 Evaluation ~2016/6/19 ①売上 (sales) 店舗ごと・商品ごとの日付単位の販売数 量の時系列データ (ある店舗である商品がある日にどれだけ の数売れたか) あり 予測対象 (2020/6/1公 開) 予測対象 (非公開) ②カレンダー (calendar) 宗教行事やスポーツ等のイベント開催日と SNAP(連邦栄養補助プログラム、低所 得者向けクーポン)が利用できる日 あり あり あり ③価格 (prices) 店舗ごと・商品ごとの週単位の販売価格 あり (販売されている期間のみ) あり あり <注意点> 店舗や商品の属性情報は与えられない。 商品はその時点でまだ販売されていない場合があり、それまでは「①売上」はすべて「0」となっている。「③価格」でその時点で販売されて いたかどうかの判定が可能。
  • 4. Copyright (c) 2020 The Japan Research Institute, Limited 4 /12 2.データ概要(2/2) 予測対象の店舗数は10店舗、商品数は3049種類となっている。 売上(販売数量)は多くの日付で0となっており、商品によって平均的な販売数量が異なる。 画像はAKuni氏によるKaggle Notebook「【日本語】Back to (predict) the future - M5 EDA」より転載。 (https://www.kaggle.com/marutama/back-to-predict-the- future-m5-eda) 州 店舗数 カリフォルニア州(CA) 4 テキサス州(TX) 3 ウィスコンシン州(WI) 3 合計 10 カテゴリ 分類 商品数 食料品(FOODS) 3 ? 娯楽(HOBBIES) 2 ? 家庭用品 (HOUSEHOLD) 2 ? 合計 7 3049 <店舗数> <商品数> <売上データのサンプル>
  • 5. Copyright (c) 2020 The Japan Research Institute, Limited 5 /12 3.評価方法(1/3) 評価は集計する単位によって12種類、合計42840個の時系列データ(28日間)に対して行われる。 Accuracy部門は評価指標としてWRMSSEが用いられる。 (1)集計単位 Level 集計単位 数 店舗 商品 1 全店舗 全商品 1 2 州 全商品 3 3 個別店舗 全商品 10 4 全店舗 カテゴリー 3 5 全店舗 分類 7 6 州 カテゴリー 9 7 州 分類 21 8 個別店舗 カテゴリー 30 9 個別店舗 分類 70 10 全店舗 個別商品 3,049 11 州 個別商品 9,147 12 個別店舗 個別商品 30,490 合計 42,840 下記の単位で集計した時系列データ(28日間)で評価される。 (2)Accuracy部門の評価指標 𝑛は訓練データ数、ℎは予測期間のデータ数、 𝑌𝑡 は売上実測値、 𝑌𝑡は売上予測値。 𝑾𝑹𝑴𝑺𝑺𝑬 = 𝑖=1 42,840 𝑤𝑖 ∗ 𝑅𝑀𝑆𝑆𝐸 , 𝑹𝑴𝑺𝑺𝑬 = 1 ℎ 𝑡=𝑛+1 𝑛+ℎ 𝑌𝑡 − 𝑌𝑡 2 1 𝑛 − 1 𝑡=2 𝑛 𝑌𝑡 − 𝑌𝑡−1 2 , 数式はMOFCの「THE M5 COMPETITION Competitors’ Guide」か ら引用。(https://mofc.unic.ac.cy/wp- content/uploads/2020/03/M5-Competitors-Guide-Final-10- March-2020.docx) ウェイト𝑤𝑖は合計が1になるように、下記のルールで決める。 ① 12種類の時系列データで等配分(それぞれ12分の1) ② 訓練データの直近28日間の売上金額合計に応じて配分 →個別商品の予測誤差は全体の評価にあまり影響しない。 Accuracyの評価指標であるRMSSE(Root Mean Squared Scaled Error)は、通常のRMSE(Root Mean Squared Error)を、訓練データ における前日の売上実測値をそのまま翌日の売上予測値とした場合の RMSEで割ることでスケールをそろえたもの。
  • 6. Copyright (c) 2020 The Japan Research Institute, Limited 6 /12 3.評価方法(2/3) Uncertainty部門は予測分布の9つの分位点で評価される。 (3)Uncertainty部門の提出物(9分位点) 12種類、42840個の時系列データについて、予測期間28日それぞれの売上分布の9分位点を提出する。 分位点は0.5%、2.5%、16.5%、25%、50%(中央値)、75%、83.5%、97.5%、99.5%。 下記は全店舗・全商品の時系列データの訓練期間(2011/1/29~2016/4/24)の売上分布と9分位点。 元となる時系列データはトレンドや周期性があるものの、大まかに言って(対数)正規分布のように見える。(中心極限定理?) 0.5% 2.5% 16.5% 25% 50% 中央値 75% 83.5% 97.5% 99.5% 12/25は営業していないためか、売上がほぼ0となっている。
  • 7. Copyright (c) 2020 The Japan Research Institute, Limited 7 /12 3.評価方法(3/3) Uncertainty部門は評価指標としてWSPL (Weighted Scaled Pinball Loss) が用いられる。 (4)Uncertainty部門の評価指標 𝑛は訓練データ数、ℎは予測期間のデータ数、 𝑌𝑡 は売上実測値、 𝑄𝑡 𝑢 は時点𝑡における予測分布の分位点𝑢の分位数。 ウェイト𝑤𝑖はAccuracy部門と同じ。 𝟏はかっこの中身が真であれば1、そうでなければ0となる関数。 𝑾𝑺𝑷𝑳 = 𝑖=1 42,840 𝑤𝑖 ∗ 1 9 𝑗=1 9 𝑆𝑃𝐿(𝑢𝑗) , 𝐒𝐏𝐋(𝐮) = 1 ℎ 𝑡=𝑛+1 𝑛+ℎ 𝑌𝑡 − 𝑄𝑡(𝑢 )𝑢𝟏 𝑄𝑡 𝑢 ≤ 𝑌𝑡 + 𝑄𝑡(𝑢 − 𝑌𝑡)(1 − 𝑢)𝟏{𝑄𝑡 𝑢 > 𝑌𝑡} 1 𝑛 − 1 𝑡=2 𝑛 𝑌𝑡 − 𝑌𝑡−1 , 数式はMOFCの「THE M5 COMPETITION Competitors’ Guide」から引用。 (https://mofc.unic.ac.cy/wp-content/uploads/2020/03/M5-Competitors-Guide-Final-10-March-2020.docx) 実測値が分位点の右側であれば、 実測値と分位点の差に分位点uをかける。 実測値が分位点の左側であれば、 実測値と分位点の差に 1-分位点u をかける。
  • 8. Copyright (c) 2020 The Japan Research Institute, Limited 8 /12 4.データ観察 時系列データの分布を確認したところ、集計レベル1~9と10~12で大きく分布が異なるように見受けら れる。そのため、集計レベル1~9の予測を行う正規分布またはT分布のモデルと、10~12の予測を行う 負の二項分布のモデルの二つのモデルでそれぞれ予測を行う。 Level 集計単位 数 店舗 商品 1 全店舗 全商品 1 2 州 全商品 3 3 個別店舗 全商品 10 4 全店舗 カテゴリー 3 5 全店舗 分類 7 6 州 カテゴリー 9 7 州 分類 21 8 個別店舗 カテゴリー 30 9 個別店舗 分類 70 10 全店舗 個別商品 3,049 11 州 個別商品 9,147 12 個別店舗 個別商品 30,490 合計 42,840 正規分布またはT分布に従うと仮定してモデルを作成。 負の二項分布に従うと仮定してモデルを作成。 (ガンマ分布、ポアソン分布、Tweedie分布も候補としては考 えられる)
  • 9. Copyright (c) 2020 The Japan Research Institute, Limited 9 /12 5.モデル構造 直近の28日間のデータ(売上・カレンダー・価格)と予測対象28日間のデータ(カレンダー・価格)を 元に予測対象28日間の売上を予測するモデルを作成。モデルパラメータは最尤推定で求める。 入力データ エンベディング層 (カテゴリー特徴量をエンコーディングする) LSTM層1 LSTM層2 FC (月) FC (火) FC (日) FC (土) ・・・ 出力データ 28日間それぞれの 売上分布のパラメータ 予測対象28日間の カレンダー・価格 モデル ・・・ 直近28日間の 売上・カレンダー・価格 ・・・ 当初出力層は曜日ごとのFC層ではなくLSTM層にしていたが、うまく周期性を表現できなかったため、曜日ごとのFC層に変更。 Batch Norm・Layer NormはLSTMと相性が悪いようなので見送った。
  • 10. Copyright (c) 2020 The Japan Research Institute, Limited 10 /12 6.特徴量エンジニアリング 前述のモデル構造としたことからラグ特徴量や直近N日間のターゲットエンコーディングは使用しない方針と した。 将来にわたって作成できる特徴量のみからその日の売上を予測するモデルをLightGBMで作成し、 Permutation Importanceを見て特徴量を選択。 価格データは集計レベル1~9では使用しない方がスコアが上昇したので、使用しない。 売上データは集計レベル1~9では時系列ごとにPower Transformerで正規分布に近づける。(予測 時には逆変換を行う) 集計レベル10~12では分布の形状を維持するために前処理を行わない。(例えば、平均1個売れる商 品と平均10個売れる商品では分布の形状が大きく異なる) 各時系列ごとの曜日のターゲットエンコーディングを入れたことでわずかにLocal CVスコアが上昇した。(リ ークの対処はせず、全期間の平均値を利用) ターゲットエンコーディングの値は最終層の曜日ごとのMLPの入力とした。
  • 11. Copyright (c) 2020 The Japan Research Institute, Limited 11 /12 7.ハイパーパラメーター探索 グリッドサーチでハイパーパラメーターを調整。(全部の組み合わせは試していない) • Seed=1/2/3/4 • 2015年の訓練データを2倍、2016年を4倍にオーバーサンプリングするかどうか • 時系列ごとのウェイトを損失関数に反映するかどうか • LSTM層のノード数(8/16/32/64) • 正規分布/T分布(自由度=1,2,5,10) • ドロップアウト確率(0.0/0.1/0.2/0.5) • オプティマイザー(Adam/SGD) • 学習率(0.1/0.01/0.001/0.0001) • weight_decay(0.0/0.001/0.01) • スケジューラー(CosineAnealingLR/なし) • ターゲットエンコーディングあり・なし • バッチサイズ(4096/1024/256) スコアを算出する期間によってかなりスコアが異なるため、Local CVのバリデーション・テスト期間を土壇場 で4週間→8週間に変更。 集計レベル1~9のモデルはSeed値によって大きくスコアが変動する。Validation期間の売上データは 使用せずにモデルを訓練し、Publicのスコアで最終seedを確定。
  • 12. Copyright (c) 2020 The Japan Research Institute, Limited 12 /12 8.感想 Kaggleのコンペに本格的に参加したのは今回が初めてでしたが、まさか4位とは、未だに信じられません。 Public Leaderboard ではコンペ期間中ずっと下から数えたほうが早かったので、最初にPrivateの順位 を見たときには目を疑いました。 応援してくださった皆さん、このコンペの主催者の皆さん、共に戦ったKagglerの皆さん、本当にありがとうご ざいました。 Accuracy は最初から諦めていたのですが、Uncertainty なら参加チームも少ないし、ワンチャン銅メダル ぐらい取れるんじゃないかと思って参加しました。実際に参加してみるとデータ量とメモリ管理に苦労し、それ でいて一向に Public Leaderboard は上がらず、心が折れそうになっていましたが、最後までがんばり続 けたことで自分としては最高の結果を残すことができました。本当に嬉しいです。 今回のコンペを通して、時系列データの扱いについてはいろいろと勉強になりました。主催者がベースライン のモデルを公開していたり、Pyroの開発者がPyroのソリューションを公開してくれているので、それらを見な がら引き続き勉強していきたいと思います。 実装はこちらで公開しました。 https://github.com/marisakamozz/m5