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

Kaggle M5 Forecasting - Accuracy 14th place solution

Tsuru
July 22, 2020
200

Kaggle M5 Forecasting - Accuracy 14th place solution

Kaggle M5 Forecasting - Accuracy memo

Tsuru

July 22, 2020
Tweet

Transcript

  1. 自己紹介 Kaggle: Tsuru Twitter: Stat 銀行員 & 社会人大学院生(D) 統計検定1級保有 コンペの経験

    • Signateは何回かチャレンジしたことがあったが、KaggleはこれまでPublic Notebookをコピーして投稿してみた程度。 2
  2. 解法の概要 3 モデル LightGBM(Objective:Tweedie, Weight:Total Sales Weight, ES無し) • 検討したもの

    Objective:Tweedie, Poisson, Custom Weight: Total Sales Weight, Total Sales Weight/Scale of RMSSE モデルの単位 • store_id x dept_id毎に個別の商品の売上数量を予測するモデルを推定。全部で70個のモデル。 ただし、特徴量のTarget Encodingには、他のstore_id/dept_idの過去の売上数量も織り込んでいる。 • day-by-day modelとRecursive model(11個のモデル) ◦終盤、時間がなかったので、1,2,3,4,5,6,7,14,21,28day lagのモデルを作り、リークが無いようにできるだけ極力直近のデータを用いるモデルを用い、 予測値を採用。なお、CVは若干改善することを確認。 ◦CVが改善するものは一部Recursive modelを採用。 • 以上トータルで770個(70x11)のモデルを推定。 データの期間 2014/1/1~ (2013以前は、含めるとCV悪化。トレンドも違う印象。) 主な特徴量 • 曜日、月、イベントなどとid系の組み合わせなどで、28day lagの過去1年や3ヶ月の値で目的変数の平均や標準偏差をとり、target encodingしたもの (ざっくりいうとグルーピングしたラグ変数)。 • 日付(1日から31日(or30日、28日))をsin, cos変換したもの。 • 同一商品のCA_3の価格(標準化) • 商品取り扱い開始からの日数 • ラグ変数(recursive model: CVが改善する場合のみ使用。) CV 直近の28日×3の平均(昨年の同時期も参照し、ざっくりと相関を確認。CVの精度は荒い認識) CVは0.590(Private:0.551)。(28-day lag modelでCV:0.608(Private:0.555))
  3. モデル モデル • LightGBM ハイパーパラメータ • いくつか手動で試しつつCVの結果が良いものを選択。主なものは以下の通り。 • Objective: tweedie

    (1.1) • 他に検討したもの:poisson, custom, mse • Customは、gradiant:(, − � , )/ , hessian: 1/ • RMSSEのスケール の調整をTweedieがうまく吸収しているとざっくり理解。 (後で、0の分布をうまくとらえているらしいと知る。分散が小さいものがウェイトが大きくなるスケールもうまく代替か) • Weight: • 他に検討したもの︓ • Learning rate: 0.03, n_estimators:300(day-by-day), 700(recursive) ≔ 4
  4. モデルの単位 idのグルーピング • Store_id x dept_id毎に個別の商品の売上数量を予測するモデルを推定。全部で70個のモデル。 • EDAのNotebookで傾向が大きく違ったのが背景。 day-by-day modelとRecursive

    model • day-by-day modelにしたかったが、終盤、時間がなかったので、1,2,3,4,5,6,7,14,21,28day lagのモデルを作り、リークが無いようにできるだけ極力 直近のデータを用いるモデルを用い、予測値を採用。なお、CVは若干改善することを確認。 • CVが改善するものは一部Recursive modelを採用。 以上全体で770個(70x11)のモデルを推定 5
  5. CV 方針 • Shake Downを2度ほど被った経験があり、また今回のPublic LBは、時系列方向に28日のみでリスクがあると判断。 手法 • 以下の簡単な検証を踏まえ、直近3 x

    28dayとし、去年の同期間も参考に見ていた。 • 検証により、1年前の同期間とその前の3 x 28dayで相関が荒いが取れていた。期間をずらすとずれも発生しリスクは高い。 CVの水準 • CV:0.590(Private:0.551) (なお、28-day lag modelでCV:0.608(Private:0.555)) 6 CVの検証の詳細:(次ページ結果) • 1年前の同じ時期でCVの相関がとれるかの確認 • 2014/1/1を起点に検証期間の直前までで学習し、検証期間28日間を予測し、予測期間(oof)のLevel12のスコアを計算。 • 予測にあたり、変数は、day by day / recursive両方を含み、@kyakovlevのNotebookの変数をベースにしたいくつかの変数グループを作り、それぞれのグループを使用/不使用 の組み合わせで特徴量の組み合わせをいくつも作り、それぞれでCVをテスト。 • CA_3のストアでFOODS3のみを選択し、しかも1/3程度にサンプリングしている。 結果的にそれほど外れたものではなかったですが、もう少しきちんと確認すべきでした(反省)。。。
  6. CVの確認 7 train last valid eval train last day by

    day day by day 0.75付近 recursive 0.75 0.76 0.76 0.77 0.77 0.78 0.80 0.80 0.81 0.81 0.82 0.82 0.83 0.70 0.75 0.80 0.85 0.90 0.95 1.00 0.78 0.80 0.82 0.84 0.86 0.88 0.90 0.92 0.94 0.74 0.75 0.75 0.76 0.76 0.77 0.77 0.78 0.78 0.79 0.80 0.80 0.81 0.81 0.82 0.82 0.77 0.77 0.77 0.78 0.78 0.78 0.78 0.78 0.79 0.79 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.70 0.75 0.80 0.85 0.90 0.95 0.70 0.75 0.80 0.85 0.90 0.95 0.77 0.78 0.78 0.79 0.79 0.70 0.71 0.72 0.73 0.74 0.75 0.75 0.76 0.76 0.77 0.77 0.78 0.78 0.74 0.75 0.75 0.76 0.76 0.77 0.77 0.78 0.70 0.72 0.74 0.76 0.78 0.80 0.82 0.84 0.86 0.88 0.90 0.75 0.80 0.85 0.90 0.95 1.00 0.74 0.75 0.75 0.76 0.76 0.77 0.77 0.78 0.78 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.75 0.76 0.76 0.77 0.77 0.78 0.73 0.74 0.74 0.75 0.75 0.76 0.76 0.77 0.77 0.78 0.70 0.75 0.80 0.85 0.90 0.95 1.00 0.74 0.79 0.84 0.89 0.94 0.99 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.74 0.75 0.76 0.77 0.78 0.79
  7. 主な特徴量 Target Encoding 時系列方向にリークが無いようにTarget Encoding • 曜日、月、イベントなどとid系の組み合わせなどで、28day lagの過去1年(28day x 13)や3ヶ月(28day

    x 3)の値で目的変数の平均や標準偏差 をとり、encoding。全部で128変数を生成 • 一種ラグ変数。ただし、store_id x dept_id毎にモデルを推定しているが、encodingには他のstore_id/dept_idの過去の売上数量も織り込んでいる。 重要度が高い変数 • [曜日]×[id系] ⇒ほぼすべてで効果あり(特にFOODS系で効果) • [id系] ⇒全体的に効果あり(HOBBIESやHOUSEHOLDを中心に重要) • [Snap, or National etc..] x [id系] ⇒ FOODS_2, FOODS_3で特に効果あり。 なお、一部重複がある変数はPermutation Importanceで除外。 • ただし、終盤追加した変数で一部冗長変数は残っている。 8
  8. 重要度上位8変数(28-day lag model) 10 CA_1 CA_2 CA_3 CA_4 TX_1 TX_2

    TX_3 WI_1 WI_2 WI_3 HOBBIES_1 1 enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_std_v2 enc_item_id_state_id_wd_v2std enc_item_id_state_id_wd_v2std enc_id_wd_mean enc_id_wd_v2mean 2 enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_std_v2 enc_id_wd_v2mean enc_id_wd_v2mean enc_item_id_wd_v2std enc_id_std_v2 enc_item_id_store_id_wd_v2mean 3 enc_item_id_state_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2std enc_item_id_store_id_wd_v2mean enc_item_id_store_id_std_v2 enc_item_id_wd_v2std enc_item_id_state_id_std_v2 enc_id_wd_v2mean enc_item_id_store_id_wd_std 4 enc_id_wd_mean enc_item_id_state_id_wd_v2std enc_item_id_state_id_wd_mean enc_item_id_wd_v2mean enc_id_National_mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_id_National_std enc_id_wd_mean 5 enc_item_id_state_id_wd_v2std enc_item_id_store_id_wd_std enc_item_id_state_id_mean_v2 enc_item_id_state_id_wd_v2mean enc_id_mean_v2 enc_id_National_std enc_item_id_state_id_std_v2 enc_id_std_v2 enc_item_id_store_id_std_v2 enc_id_std_v2 6 enc_id_mean enc_id_wd_v2std enc_item_id_state_id_wd_v2std enc_item_id_wd_v2std enc_id_snap_mean enc_id_Religious_std enc_item_id_store_id_wd_v2mean enc_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_std_v2 7 enc_item_id_store_id_wd_mean enc_id_National_mean enc_id_National_mean enc_id_snap_std enc_item_id_store_id_mean_v2 enc_id_National_pre_std enc_id_wd_v2std enc_item_id_store_id_std_v2 enc_item_id_store_id_wd_mean enc_id_Cultural_pre_std 8 price_norm4 enc_item_id_wd_v2mean enc_id_wd_mean enc_id_mean enc_item_id_store_id_std_v2 enc_item_id_state_id_wd_v2mean enc_item_id_wd_v2mean enc_id_Religious_pre_std enc_id_snap_pre_std enc_id_wd_v2std HOBBIES_2 1 enc_id_std_v2 enc_id_mean_v2 enc_id_mean_v2 enc_id_Cultural_pre_mean enc_id_mean enc_id_mean enc_id_Cultural_mean enc_id_mean_v2 enc_id_mean enc_id_mean 2 enc_item_id_store_id_std_v2 enc_id_Sporting_mean enc_item_id_state_id_mean_v2 enc_id_National_mean enc_item_id_store_id_mean enc_item_id_state_id_mean_v2 enc_id_National_mean enc_item_id_store_id_mean_v2 enc_id_National_std enc_id_National_mean 3 enc_id_wd_v2mean enc_id_snap_pre_mean enc_id_snap_mean enc_id_mean enc_id_std enc_id_std_v2 enc_id_mean_v2 enc_item_id_month_mean enc_id_National_mean enc_id_mean_v2 4 enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_mean enc_id_Sporting_mean enc_item_id_store_id_mean_v2 tm_d_sin enc_item_id_state_id_std_v2 enc_item_id_store_id_mean_v2 enc_id_std_v2 enc_item_id_store_id_mean enc_item_id_store_id_mean 5 enc_id_Religious_pre_std enc_id_National_pre_mean enc_id_snap_pre_mean enc_id_mean_v2 tm_d_cos enc_id_wd_v2mean tm_d_sin enc_id_wd_v2mean enc_id_mean_v2 enc_item_id_store_id_mean_v2 6 enc_id_Cultural_std enc_item_id_state_id_std_v2 enc_id_National_pre_mean enc_item_id_state_id_std_v2 enc_item_id_month_wd_std enc_id_std tm_d_cos enc_id_National_std enc_id_Religious_mean enc_id_Cultural_pre_mean 7 enc_id_snap_pre_std enc_item_id_month_mean enc_item_id_month_mean enc_id_Cultural_mean enc_id_mean_v2 tm_d_cos enc_item_id_National_std enc_id_Sporting_std enc_item_id_month_wd_mean tm_d_cos 8 enc_item_id_wd_v2mean enc_id_National_mean tm_d_sin enc_id_std_v2 enc_id_month_std tm_d_sin enc_id_National_std enc_id_National_pre_mean tm_d_sin enc_id_snap_pre_mean HOUSEHOLD_1 1 enc_id_National_mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean 2 enc_item_id_state_id_mean_v2 enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean 3 enc_id_mean_v2 enc_id_wd_mean enc_id_wd_mean enc_item_id_state_id_std_v2 enc_id_std_v2 enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_id_wd_mean enc_id_snap_pre_mean 4 enc_item_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_mean price_norm3 price_norm4 enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_mean enc_id_wd_mean enc_item_id_store_id_wd_mean enc_id_wd_mean 5 enc_item_id_store_id_mean_v2 price_norm4 price_norm4 enc_id_std_v2 enc_id_mean_v2 enc_item_id_state_id_wd_v2mean price_norm4 enc_id_mean_v2 price_norm4 enc_item_id_store_id_wd_mean 6 enc_item_id_state_id_mean enc_item_id_wd_v2mean price_norm3 enc_id_National_pre_std enc_item_id_store_id_std_v2 price_norm4 enc_id_wd_mean enc_item_id_store_id_wd_mean price_norm1 enc_id_Cultural_pre_mean 7 enc_id_Sporting_mean enc_id_month_mean enc_item_id_state_id_wd_v2mean enc_id_wd_mean enc_id_National_mean enc_id_snap_pre_std enc_item_id_state_id_wd_v2std price_norm4 enc_id_std_v2 enc_id_National_std 8 tm_d_sin price_norm3 enc_id_wd_v2std enc_item_id_state_id_wd_v2std enc_id_National_std enc_id_std_v2 enc_item_id_state_id_std_v2 enc_id_National_std price_norm3 enc_item_id_state_id_wd_v2mean HOUSEHOLD_2 1 enc_id_wd_v2mean enc_id_wd_mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_mean enc_id_std_v2 enc_id_mean_v2 enc_id_National_mean enc_id_mean enc_id_mean 2 enc_item_id_store_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_mean enc_item_id_store_id_wd_v2mean enc_id_mean_v2 enc_id_mean_v2 enc_item_id_store_id_mean_v2 enc_id_mean_v2 enc_item_id_store_id_mean enc_id_std_v2 3 enc_id_wd_mean enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_v2mean enc_id_wd_mean enc_id_snap_pre_mean enc_item_id_store_id_mean_v2 enc_id_National_mean enc_id_snap_mean enc_id_wd_mean enc_id_mean_v2 4 enc_item_id_wd_v2mean enc_item_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_mean enc_item_id_store_id_mean_v2 enc_item_id_state_id_mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_mean_v2 enc_id_mean_v2 enc_item_id_store_id_std_v2 5 enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_month_mean enc_item_id_store_id_mean enc_item_id_state_id_std enc_id_wd_v2mean enc_item_id_store_id_mean_v2 enc_id_National_mean enc_id_National_std 6 enc_item_id_state_id_wd_v2mean enc_id_mean_v2 price_norm4 enc_id_Cultural_pre_mean enc_id_snap_mean enc_id_National_pre_mean enc_item_id_wd_v2mean enc_item_id_state_id_mean enc_id_National_std enc_id_wd_v2mean 7 price_norm4 enc_item_id_state_id_wd_v2mean enc_item_id_wd_v2mean enc_item_id_month_std enc_id_Religious_mean enc_id_National_mean enc_id_Cultural_pre_mean enc_id_wd_v2mean enc_item_id_store_id_mean_v2 enc_id_snap_std 8 enc_id_National_std enc_id_snap_mean enc_item_id_state_id_month_mean enc_item_id_month_mean enc_item_id_wd_v2mean enc_id_National_std enc_item_id_store_id_wd_mean enc_item_id_wd_v2mean enc_item_id_wd_v2mean enc_id_Sporting_std FOODS_1 1 enc_id_std_v2 enc_id_wd_v2mean enc_id_wd_v2mean enc_id_Sporting_mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean 2 enc_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_mean_v2 enc_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean 3 enc_item_id_store_id_std_v2 enc_id_wd_mean enc_id_wd_mean enc_item_id_state_id_mean_v2 enc_id_mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_mean enc_id_wd_mean enc_id_std_v2 4 enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_mean enc_id_wd_mean enc_id_mean_v2 enc_id_Cultural_pre_mean enc_id_Cultural_pre_mean enc_item_id_state_id_std enc_id_mean_v2 enc_item_id_state_id_wd_v2std 5 enc_id_Cultural_pre_std price_norm4 enc_item_id_state_id_wd_v2mean enc_id_mean_v2 enc_item_id_store_id_mean enc_id_National_mean enc_id_snap_mean enc_item_id_store_id_mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_wd_v2mean 6 enc_item_id_wd_v2mean enc_id_National_mean enc_item_id_store_id_wd_mean enc_id_National_mean enc_item_id_store_id_mean_v2 enc_item_id_store_id_mean_v2 enc_id_Religious_mean enc_id_National_mean enc_item_id_store_id_wd_mean enc_item_id_state_id_mean 7 enc_id_Cultural_std enc_item_id_store_id_mean_v2 price_norm4 enc_id_wd_v2mean enc_id_wd_mean price_norm4 enc_id_Sporting_mean enc_item_id_state_id_mean enc_id_std_v2 enc_id_National_pre_std 8 enc_id_Sporting_std enc_item_id_month_mean enc_id_mean enc_item_id_store_id_wd_mean enc_id_Sporting_mean enc_item_id_month_std enc_id_mean_v2 enc_item_id_std enc_item_id_store_id_mean_v2 enc_item_id_wd_v2std FOODS_2 1 enc_item_id_state_id_wd_v2std enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_snap_std 2 enc_item_id_state_id_wd_v2mean enc_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_v2mean 3 enc_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_v2std enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_mean enc_id_mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_mean enc_item_id_store_id_wd_v2mean 4 enc_item_id_state_id_std_v2 enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_v2std enc_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_mean enc_id_wd_mean enc_id_snap_mean price_norm4 enc_id_snap_mean 5 enc_item_id_state_id_std enc_id_mean_v2 price_norm4 enc_item_id_state_id_wd_v2std enc_id_mean_v2 enc_id_snap_std price_norm4 enc_id_snap_std enc_item_id_store_id_wd_mean price_norm4 6 enc_id_wd_mean price_norm4 enc_item_id_store_id_wd_mean enc_id_snap_mean enc_id_Sporting_mean enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_v2std price_norm4 enc_id_snap_std enc_item_id_state_id_wd_v2mean 7 enc_id_snap_mean enc_id_Cultural_mean enc_id_National_pre_std price_norm3 price_norm4 enc_item_id_state_id_mean enc_item_id_state_id_mean enc_item_id_month_mean enc_id_std_v2 release2 8 release2 enc_item_id_state_id_wd_v2mean enc_item_id_state_id_month_mean price_norm1 enc_id_National_mean enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_v2std price_norm3 enc_id_National_std FOODS_3 1 enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean enc_id_wd_v2mean 2 enc_id_snap_std enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean enc_item_id_store_id_wd_v2mean 3 enc_item_id_store_id_wd_v2mean enc_id_wd_mean enc_id_wd_mean enc_id_wd_mean price_norm4 enc_id_wd_mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_id_wd_mean enc_id_snap_mean 4 price_norm4 enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_item_id_state_id_wd_v2mean enc_id_wd_mean enc_id_Religious_mean enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_v2std 5 enc_id_snap_mean price_norm4 price_norm4 enc_item_id_state_id_wd_v2mean enc_item_id_wd_v2mean price_norm4 enc_item_id_wd_v2mean enc_id_mean price_norm4 enc_id_snap_std 6 enc_item_id_state_id_wd_v2mean enc_item_id_store_id_wd_mean enc_item_id_state_id_wd_v2mean enc_item_id_wd_v2mean enc_id_National_pre_mean enc_item_id_store_id_wd_mean enc_item_id_store_id_wd_mean enc_item_id_wd_v2mean enc_id_month_wd_mean price_norm4 7 price_norm3 enc_id_National_pre_mean enc_id_Cultural_pre_std enc_id_snap_mean enc_id_Religious_mean enc_item_id_wd_v2mean enc_id_month_wd_mean price_norm4 enc_item_id_state_id_wd_v2mean enc_item_id_state_id_std_v2 8 enc_id_wd_v2std enc_item_id_state_id_wd_mean enc_id_wd_v2std enc_item_id_store_id_mean enc_id_mean_v2 enc_item_id_month_wd_mean price_norm4 enc_id_wd_mean enc_id_std price_norm3 rank day of week x id encoding month x id encoding item_id or some id encoding day of a month sin-cos transf snap x id encoding (event) x id encoding days after product release normalized price of same item in CA_3
  9. 効果が無かったもの & 試していたもの Target Encoding • 2年などの期間変更は効果なし 同一dept_id内でk-meansによるclustering • 誤差が大きかった商品でzero

    sales期間にパターンがあるものを発見し、傾向を確認したくPCAやclusteringを実行。 • Clusteringは、店舗間で合計した商品毎のdemandを標準偏差で基準化した後にk-meansを実行。 non-zero salesがスタートする期間やzero sales期間のパターンが同じようなものが分類できた(以下ある同一clusterの例)。 • Cluster毎にモデル構築も行いたかったが、モデル数が増えるので諦めた。商品取り扱い開始からの日数を説明変数に追加したり、同一商品のCA_3の価 格で連続したzero sales期間が説明できたので、これも説明変数に追加したりした。ただ、これ以上時間の制約もあり深堀りは出来なかった。 11
  10. まとめ 12 • コンペの理解 • サンプルノートの作成 • WRMSSEの計算の実装 3月 •

    目的関数のテスト • 交差検証の検討 • データの傾向確認/EDA • モデルの誤差分析 • GitHub/atomのテスト • Discussionの調査 • 色々あり取り組めず 4~5月 6月前半 今回の取組 感想や反省 • CVを信じてモデル構築したのは良かった。ただ、もう少しCVの精度は上げたかった。 • 商品は多いが、時系列方向のサンプルが28日のみとどうしても少ないので、CVの精度(CV vs Private)はかなり荒いコンペ(運要素)だったと 思う。また、Public LBが, Privat LBと相関が弱く(しかも6月に入り崩壊)、他の参加者と比べたときの相対的な優位性が途中分からなかったの は、順位を競うコンペの観点で厳しかった。ただし、題材としては、非常に勉強になる課題であった。 • 時系列方向のサンプルが少ないという点で、判断が難しいと思うが、説明変数を増やしすぎると、CVも含めた過学習になる可能性は高いと思う。 • 後半、特にプログラムの整理ができず、その場当たりで取り組んでしまった。もう少し、手持ちのコードなども色々と汎用的に使えるようにしていきたい。 • 順位は驚きで、今後も精進したい。 • Weightの再計算 • TEベースの特徴量作成 • モデルの選択 6月後半
  11. WRMSSEのLightGBMのmetricとしての実施 当初、前ページの効率的なWRMSSEの計算について、LightGBMのEarly Stoppingのmetricとして使用することを考え た。しかし、以下の①、②から実施せず。 ①計算効率性 • Metricで計算するには、前ページのsalesの(30490 × )の行列が必要である。 しかし、分析用のlong

    formatのデータ形式をwide formatに変換(pivot処理)する必要がある。 • 計測期間において、全データ30490個の商品すべてが観測され、並び順が整っていればreshapeで簡単にwide formatに変換可能。 しかし、d_1845以前は一部欠落しているデータがあり、wide formatの変換にpivot処理が必要で非効率的。 ②時系列方向のサンプルの少なさ • 時系列方向のデータが少なく感覚的にearly stoppingが過学習しそう。 15