IEEE-CIS Fraud Detection コンペ反省会

IEEE-CIS Fraud Detection コンペに参加。チームとして銀メダルをとりめでたく Kaggle Expert になった。コンペは名前の通り Credit Card のトランザクションを fraud or not に分類するもの。

時系列

  • Table コンペだが Time Series データなのに不安を覚えつつ EDA 。いくつか EDA カーネルを見る。
  • Local CV どうしようかまよったが、まずは KFold で End to End モデルパイプラインを作った。LightGBM。
  • 最初の End to end モデルは動けばよいの categorical features は無視して数値データのみで。
  • KFold の Local CV データを眺めながら label encode するなど。must 的なものをやる。
  • 某氏とチームを組む。初心者と言っていたがみるみる着実に歩を進めるので尊敬しかない。
  • 某コンペ時に count encoding を知らず。「モデルにはそのままだと count 見えないのよ」というありがたいスレッドで勉強になった教訓。それを踏まえて count feature の EDA を意識的にやっていた。
  • 自分で1から作っていたカーネルがいまいち伸び悩んでいたので、public kernel を fork して自分の学びを足す方向で進めた。結果的にこの判断は正しかった。
  • 同額の TransactionAmt の count encoding などをあれこれ EDA しつつためす。このころ 0.94 は 0.93 付近?
  • チームマージ
  • チームマージで似たようなスコアだけど、全く出自(feature engineering) が違うモデルが増えた。
  • チームの誰も手を出してなかった NN モデルを Torch でササッと書いた。過去の経験から GB よりスコアが劣るのはわかっていたが Ensemble で効果があるので。
  • GMEAN of low correlation カーネルでチームの submissions を ensemble してみたら一気に銅メダル圏内。
  • GMEAN of low correlation カーネルをちゃんと読み込んできちんと適用したら銀メダル圏内に到達。
  • 最終日まではあたらしい feature ためす。スコア上がったら Ensemble の繰り返しだった。
  • Final submissions は shake up/down が怖かったが、チームで相談して best score kernels とした

ほか

  • 自分の記録を kibela から Google Docs に移行した。理由は markdown を書くのが面倒になったから。あとどのデバイスからでもかんたんにアクセスできるから。
  • 途中の GPU 制限には本当に困った。
  • seaborn の勉強をしたことで EDA 苦手意識がかなりへった。やはり美しく表示されるとうれしい。
  • 上とすこし矛盾するけど。汚いコードでもいいからグラフを書いて、学びを得る。そのコードは捨てるが学びはとる。お気楽姿勢にして気が楽になった。
  • kaggle api 使って git でコード管理するのを後半から導入して大変良かった。
  • feather で特徴管理みたいなのは、まだ僕のレベルでいらないかも。

さあ Master めざす?