Kaggle宇宙コンペで銅メダルとりました
はじめに
しばらく時間が経ってしまいましたが、Kaggleの宇宙コンペで銅メダルを取ったので、その記録です。初メダルでとても嬉しかったです。
宇宙コンペ
宇宙コンペは星の光の変化データから、どのような星かを予測するコンペでした。
星の最後の大爆発である超新星だったり、点滅する星の変光星だったりを予測します。
一言に超新星や変光星と言っても色々種類があり、予測する種類は14種類となかなか数が多いと思います。しかも学習データにはない、その他の星も予想する必要があり、考えることが多いコンペだったと思います。
解法
私の解法としては、大きくは以下の通りです。Kernelにスコアが高い解法が公開されてましたので、それをベースに変更を加えた形になります。
特徴量の事前抽出
光の変化データはデータサイズが大きく、そこから特徴量を抽出するには時間がかかりました。そのため事前に特徴量を計算しておき、その後にどの特徴量を使うか取捨選択しました。繰り返し学習-精度確認のサイクルを回すために役に立ちました。
LightGBMで特徴量の取捨選択
Kernelをforkして、特徴量を追加・削除しました。ローカルのCVを見ながら行い、時々submitして、LBを確認しました。追加するだけでなく、不要な特徴量を減らすことも効果がありました。
1.080のKernelを参考に、特徴量の追加・削除で0.988まで精度が向上しました。(さらにSEEDを変化させて単純平均を取ると0.983)
特徴量の追加・削除、精度確認を地道に行うことは重要なんだなと感じました。
NN(MLP)でのパラメータチューニング
KerasでNN(MLP)モデルを作成し、特徴量はLightGBMから多少取捨選択しました。試行錯誤により、パラメータチューニングしました。精度1.128とLightGBMよりも0.140悪かったですが、アンサンブルで効果がありました。
アンサンブル
LightGBMとNNをアンサンブルを最終のsubmitとしました。1:1だとLightGBMのシングルモデルより悪く、最後にえいやで3:1とすると0.963と精度が上がりました。本当に最後のsubmitだったので、精度が上ったのはラッキーでした。
結果
結果は95位で、初銅メダルをゲットしました。前回のTrackMLでは、最終Public LBが100位で、Private LBが101位と後1位でメダルを逃したので、今回もPrivate LBを見るまではドキドキだったので、ゲットした瞬間はガッツポーズしてしまいました。
ちなみにPublic LB 0.963で、Private LB 0.977でした。アンサンブルしてないシングルモデルだと、メダル圏外だったので本当にラッキーでした。
Kaggle銅メダル確定です!95位でした。初メダル嬉しい! pic.twitter.com/uPMinjKLYW
— takus (@takus4649) December 18, 2018
さいごに
初メダルは嬉しかったですが、まだKernelをいじって、少し精度上げる程度なので、金銀メダルは程遠いと感じました。もっと精進して、金銀メダルに届くようになりたいと思います。