Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kaggle M5 Forecasting - Accuracy 42nd place solution

Kaggle M5 Forecasting - Accuracy 42nd place solution

Kaggle M5コンペのSolution紹介@M5コンペ反省会(2020/7/19)

・Competition
https://www.kaggle.com/c/m5-forecasting-accuracy/overview

syaorn_13

July 19, 2020
Tweet

More Decks by syaorn_13

Other Decks in Technology

Transcript

  1. チーム紹介 – shirokane_friends 2 同じ会社(Brain Pad)のメンバーで結成 にのぴら@nino_pira • 下町データサイエンティスト •

    テーブル・画像・強化学習 etc 何でもできるすごい人 • Kaggle Expert hiro • 新卒入社 • 学生時代は株価予測の研究 • Kaggle初参戦 しゃおろん@syaorn_13 • 見習いデータサイエンティスト • Brainpadは中途入社(前職はSE) • Kaggle Expert
  2. Agenda 3 1. Introduction (はじめに) 1. Comptetition Overview (コンペ概要) 2.

    Result (結果) 2. Solution(解法) 1. Validation (評価) 2. Feature(特徴量) 3. Model(モデル) 4. Objective(目的関数) 5. Recursive(再帰的予測) 6. Ensemble(アンサンブル) 3. Summary(まとめ) 1. Thoughts(感想) 2. Learned(学び)
  3. ウォルマート(米大手スーパーマーケット)における商品の売上予測 • アメリカの3つの州(10店舗)が対象 • 商品数は30,490 • 提供データは約6年分(2011年~2016年) • 過去の売上 •

    価格 • 日付 • イベントの有無 Comptetition Overview (コンペ概要) 5 Input • 将来28日間の売上 Output 典型的な「時系列」の「需要予測」
  4. Feature (特徴量) 11 公開カーネルにあったような、基本的な特徴量がほとんど • 全部で70個ほど • オリジナリティがありそうなのは「カテゴリ内の相対価格」や「イベントまでの日数」など • Magicと言えるほど効果的な特徴量はなかった

    • 州 • 店舗 • 商品カテゴリ • 商品ID Category • 直近n週間の売上 • 直近nか月の売上 • 前年の同時期の売上 Sales • 現在の価格 • 先週からの価格増減率 • 同一店舗&カテゴリ内での 相対価格 Price • 月・曜日・日 • 週番号(月) • イベントフラグ • イベントまでの日数 Date
  5. Model (モデル) 12 LightGBM & Day by Dayでモデル作成 • recursiveは使わない

    Content Our Solution Model モデル LightGBM Model split モデルの分割 Day by day Modeling • n日先予測ごとにモデルを分ける • 3fold × 28day = 84model • Store_idやdept_id単位では分けない Objective 目的関数 RMSE • WeightとScaleは別途調整 Data Period データ期間 約4年(2013年~2016年) • 2011年は傾向が違うため使わない • ラグ特徴量で過去1年分使うので、2012年のデータも削除 Preprocess 前処理 売上0期間のデータを削除 • クリスマス • 発売前 ▪モデル概要
  6. Objective (目的関数) 13 WRMSSEを(可能な限り)最適化するよう工夫した • WRMSSE = Weigted & Scaled

    & RMSE • ObjectiveはRMSEを使い、前処理を行ってWeightとScale部分を調整した Scaleは「目的変数 / Scale」で調整 • id単位でscaleを計算 • 学習前に目的変数をScaleで割る Scale RMSE
  7. Thoughts(感想) 18 総じて難しいコンペだった。参加された皆様お疲れさまでした。  private期間が短すぎる • 1か月でモデルの性能を測るのは難しい  データ量が多い •

    メモリの制限&学習時間の長さ(day by dayだと特に)  1subしか選べない • 直近の異様な上昇トレンドが続くかどうか、判断が難しい  評価指標(WRMSSE)が難しい • 商品単位(Lv12)で改善しても、他のLvが悪化することがある
  8. Learned(学び) 19 難しかったが学びも多かった。参加してよかった。  Validtionは大事 • Trust LBだとメダルは難しかった • 過去コンペ(DSB2019)での経験が活きた

     LeaderBoardは大事 • モチベーションの維持という意味で • LB崩壊後の1か月は、盛り上がりに欠けたと思う  自分の頭で考えることが大事 • 安易にrecursiveを使わず、きちんと検証できたのは収穫