はじめに
kaggleのタイタニックコンペで0.808という記事を書いてから8ヶ月ほど経ちました。
まだ確定ではないのですが、NFLコンペのFinal submission deadline時点で2038チーム中189位でギリギリ銅メダル。
答え合わせの2/4が終わった今の時点で少し順位が上がって125位(12/12現在)です。本当は順位が確定してからがよかったのですが、Advent Calenderのネタがなかったので書かせていただきます...
(追記) 順位が確定し、118位で銅メダルを取ることができました!!
世の中には初参加のコンペでメダルを取ってしまう方もいらっしゃるようですが、僕は文系学部2年生のひよっこで、プログラミングも機械学習も0からのスタートであったためか、かなり時間がかかってしまいました。
今回は上記の記事を書いた頃の僕のような方に向けて、Kaggleのコンペにおいて意識した方がいいことについて綴りたいと思います。
結論
• わかりやすいカーネルを選ぶ
• 過去のコンペを参考にする
• 一次情報を得る
一つ一つ説明していきます。
わかりやすいカーネルを選ぶ
おそらく、ベースラインを作成するときにはカーネルを参考にすると思いますが、その選び方についてです。
カーネルを sorted by して Most Votes で選んでる方は大方間違い無いと思いますが、Best Score で選ぶのはやめた方がいいです。
Best Score で選ぶと、いきなり上位にいけるので魅力的ではあるのですが、なぜその特徴量なのか?とか、そもそもプログラムで何をしているのかわからないということになってしまって、そこからスコアが伸びずらくなってしまいます。
一連の流れを理解できるようなカーネルを選んでから、自分なりに特徴量を足すなどの工夫をしていった方がいいです。classとかいきなり大量に定義されても正直わからないですよね...
過去のコンペを参考にする
そもそも、上位陣の方達と僕らの違いを決定づけるものはなんでしょうか?
それは経験(Kaggleの過去のコンペ、仕事)です。
仕事の経験はどうにも埋めがたいのですが、彼らの今までのコンペ経験というものは、過去のコンペの上位陣のSolutionを読むことなどで多少は補えると思います。
というのも、今回のNFLコンペでは、Transformer ?という手法が有効だったようですが、僕はその存在自体を知りませんでした。少し前のコンペで話題になっていたようなので、過去の似たような位置情報を含むデータのコンペを漁っていればと反省してます。
この反省もあり、このコンペの復習は丁寧にしました。
一次情報を得る
これは僕の成功体験でもあるのですが、一次情報は頑張って集めた方がいいです。
特に僕のようなモデルの実装力が無い人は特徴量で差を付けるしか無いので、重要な部分だと思います。同様にEDAも重要ですね。
実際に僕もNFLコンペに取り組んでいるときはアメフトのプレイ動画を見まくり、スペースが重要なんじゃね?とか、結局ボール持ってる人の優秀さだよなーとか思って特徴量づくりをしました。
おわりに
色々と書いてしまいましたが、やっぱり楽しみながらやるのが一番ですよね!
僕ももっと精進して、まずはKaggle Expertになりたいと思います!!