まだタイトルない

アウトプット用です

【Kaggle】初参加のコンペで銅メダル獲得したので振り返る【M5コンペ】

f:id:teyoblog:20200705091823p:plain:w150

はじめに

こんにちは
Kaggleに登録して初めてのコンペが終了して無事銅メダルを獲得できました。今回は1か月どのように取り組んだのかをメモしながら過ごしていたのでそのメモベースに振り返りをしていきます。いろいろメモをしていてどこまで載せればいいのか判断つけれていないので見苦しい記事になっていたらすみません。

それでは参加した5/31からスタートします。

5/31~

開催中のコンペに参加

始める前に読んだ「スタートブック」内でまずは開催中(残り期間1か月くらい)のコンペに参加することがすすめられていたため、今回Kaggleを始めていきなり開催中のコンペに参加することにしました。選んだコンペはM5 Forecasting - Accuracyです。
f:id:teyoblog:20200704233054p:plain
選択理由は

  • 残り期間が一か月だということ
  • 参加者が多くNotebooksやDiscussionにたくさん情報があると思ったから
  • テーブルデータだから

※『Jigsaw Multilingual Toxic Comment Classification』というコンペもあったがtext dataということで今回は選択せず。

ウォルマートとは

参考:wikipedia

  • ウォルマートというよりかは、アメリカはクリスマスが1年で1番大切な日であり12/25は休業日であることが多い

コンペの内容

  • wal-martの売り上げを予測する.
  • 1-1913日目までの売上(商品別、店舗別)をつかって、1914日目から1941日目までの予測をする。
    • 最終目標は1942日目から1969日目の予測
  • 商品には未発売時のデータもある
  • 店舗数10[CA_1, CA2, CA_3, CA_4,TX_1, TX_2, TX_3, WI_1, WI_2, WI_3]
    • calitornia, texas, wisconsin

コンペのデータや概要についてのnotebookの写経

【日本語】Starter Data Exploration と LSTM】
上記notebookでコンペの内容についての勉強

初めて他人のnotebookを読んで、写経して、これくらいのEDAを作るのはみんな出来るのか、玄人の技なのか。色々可視化して分析できるようにする技術は重要なスキルの一つだと思うのでいつか身につけたいとは思う。 

それでもまずは考え方(商品別、日付別等)を学ぶことに重点を置いたほうが良いかもしれない

6/3 初めてのsubmit

上記notebookに過去30日の平均値でサブミット用のcsvを作るコードがあったので、そのまま実行してとりあえず1回submit!
4640チーム中3969位。そりゃそうだ。
f:id:teyoblog:20200704233338p:plain
この時点で

  • 賞金圏内・・・0.00000
  • 金圏内・・・0.27640
  • 銀圏内・・・0.45863
  • 銅圏内・・・0.46193

銅が範囲狭いけど越えられない壁的なものでもあったのだろうか?

6/4 2回目のsubmit

notebookの最後のLSTMで作るところでエポックを10->30にしてcsvをsubmitしたところスコア悪化
f:id:teyoblog:20200704233414p:plain
まだ何故悪くなったのかとか判断する実力はないので引き続き色々勉強をすすめることに

6/5

[Japanese] M5 Forecasting コンペの説明
もう一度コンペについてデータセットについて復習。

M5 - Dark Witch Time by Store
notebookのハイスコアを獲得してるものを実行したら銅圏内に入れた。
witch timeってなんだろう。英語の独特な言い回しなのかな?黒魔術のような?

f:id:teyoblog:20200704233521p:plain

6/6

M5 LightGBM baseline 日本語
新しく写経。いまKaggleでホットと言われてるlightgbmについて学んでみることにしました。 初めてのlightgbmのpublicScoreは0.7229。

M5:How to get your public LB score & rank
LBscoreを調べられるnotebookを発見した。結果的にはあまり使わなかったけどこういうのすごい ※残り一か月でプライベートリーダーボードのデータが公開されるのでsubmitしなくてもスコアの確認ができるように

この日間違ってパブリックの回答を提出してしまってLBの値が0.00000になってしまいました。ほかにも数多くの人が0.00000になったため、どれくらいの人がいい感じのスコア出してるのかわからなくなりましたね。あとsubmitが1個だけだったので変な冒険もする気になれませんでした。

6/8~

notebookを読み漁る

とにかくnotebookに情報はたくさんあるので読み漁ることに
この時期は正直何に手を付けるべきかと迷走していました。

コンペが終わるまでの目標を決める

正直pythonの構文の理解すら怪しい部分があり、複数のnotebookを組み合わせてアンサンブルするには力が足りないし何より焦ってやって理解できてないところを多く残すのは今後のためにならないと判断し、まずは"M5 - Three shades of Dark: Darker magic"を理解した上でプライベートの予測をするように改良してsubmitすることを目標に決定。
理由としては

  • 複数の高スコアnotebookにフォークされてたり日本語訳されているため教科書にできると判断できる
  • 著者がグラマス

関連するnotebookが三つに分かれていたのでかなり苦労することになりました。

  1. M5-SimpleFE
    ・ 価格をその商品の価格の最大値で割って正規化している
    ・ 価格の変化にモメンタムを付与している
  2. M5 - Lags features 時系列データ特有のラグデータ特徴量の作成
  3. M5 - Custom features

6/16

Konstantin氏のThree shades of Dark:Darker magic をプライベート用に弄って、データをサブミット!ここでようやくコンペで戦うsubmissionが作成できました。

6/23

やっとkonstantin氏のnotebookの動きをなんとなく理解できた。完成度が高く見えすぎて改良の方法が思い浮かびませんでした。しばらく一つのnotebookと戦っている間にNN系統のnotebookも出てきていたのでそちらも勉強していくことに

6/25

6/27

最後の週末。朝起きたらパソコンがつかない・・・故障ということで何とか日曜日だけパソコンが使える環境を用意して NN on store level with 3-fold CV [store-WRMSSE] を読んでsubmitを作成してみたところ0.81351でした。

konstantin氏を書き換えた物と、M5 First Public Notebook Under 0.50で平均とったやつもスコアが悪化したので最終submitは6/16に作ったもので決定。

結果発表

結果は441st/5558 上位8%で銅メダル獲得できました。
いろいろ力不足を感じて不安だらけのコンペでのメダル獲得はすごくれしいです!

f:id:teyoblog:20200704234133p:plain

submitのなかに銀圏のがあって、これだしてたら、、、、とも思いますがそれはみんな一緒だしそもそもevaないってメモ書いてあるのになぜという感じです。

f:id:teyoblog:20200704234205p:plain

終結
1位0.52043
5位(賞金)0.53604
21位金圏内0.55724
277銀圏内 0.64430
441位自分0.67579
555位銅圏内 0.69934