kaggle 初挑戦で得られた知見と結果をまとめてみた
kaggle初挑戦したので、日記代わりにまとめてみた
TalkingData AdTracking Fraud Detection Challenge
言語・ツール
- jupyter notebook
- python
スキル
- numpy, pandas, sklearnはある程度使える。わからないところはネットで調べて理解できる程度
- pythonの基本的なところはわかる程度
talkingdataコンペの説明
中国で、クリックだけして広告料を得るというのが問題になっているらしい。
そこで、ip, app, device, os, channel, click_timeの6つの特徴量からアプリをダウンロードするかどうかを判別するようなモデルを作るという課題だった。学習用データが1千万行以上あって、とにかく特徴量が少ないようなデータセットだった。評価関数はAUCでそれぞれのデータに対して0から1の間の数値を返すようにする。重要なのは正解データが0のものが、正解データが1のものより高い数値をとらないよにすることである。
失敗
- 評価関数を理解していなくて0か1の値を返していた。
- 最初はkernelなどをほとんど見ずにやって、失敗しまくって時間を無駄にした
- 特徴量を増やさなければいけないところで、むしろ減らしていた。
- オブジェクトを保存せずにやり直し、時間を浪費した
- データサイズと考えずにメモリエラーを起こしまくっていた
- 関数を定義していなかったので、同じ処理を書き直した
わかったこと/得られたもの
- xgb, lgbmインストールしてある程度使い方はわかった
- kaggleのkernelは大事
- データを見る時間を増やさないと無駄に時間を浪費する
- 当たり前だけど、評価関数はちゃんと見る
- pandasでの時系列データの扱い方のかじり程度
- 行数に対して特徴量が圧倒的に少なかったので、特徴量を付け加えること(当たり前)
- kaggleはモチベーション維持に良い
- メモリに対して少し理解が深まった
結果
結果
1332位/3967位
kernelからコピペしたlgbmのモデルに少しだけ特徴量加えて、xgbでもやったものをアンサンブルしたものです。
今回はほぼ特徴量生成をどうやるかで決まったようです。
まとめ
失敗を書いて見直していると、kaggleというより基本的なところで失敗しているんだなと思いました。スキルが低すぎるし、知識も少なすぎたので、成長して再挑戦したいと思います。