Kaggle初挑戦でシルバーメダルを取った話
先日KaggleのコンペHome Credit Default Riskに参加し211/7198の成績を収め、シルバーメダルを獲得することが出来ました。 せっかくなので、取り組んだことを記事として残してみたいと思います。今回のコンペ固有の話というより、どのようにKaggleに取り組んだかについて焦点を絞ってまとめてみたいと思います。
想定する読者
- Kaggleを始めてみようと思っている方
- Kaggleを始めたけど、何をしていいかわからない方
- Kaggleを始めたけど、まだメダルが取れていない方
- お世話になった先駆者の方々
1. Kaggleのアカウントを作成
アカウントがないと何も始まりません。公式ページにアクセスして作りましょう。 (私は何年か前に作っていたのでパス)
2. 情報収集
Kaggleを進めていくうえで 時間を無駄にしないこと・モチベーションの維持 などが重要だと思いますので、使える情報は積極的に使っていきましょう
2.1 ブログ
色々ありますが、一例として私が勉強させていただいた記事を紹介します。
- 「Kaggle事始め」
https://qiita.com/taka4sato/items/802c494fdebeaa7f43b7 - 「kaggle初心者の私が3ヶ月でソロゴールドを獲得した方法」
https://www.rco.recruit.co.jp/career/engineer/blog/kaggle_by_novice_engineer/ - 「機械学習の勉強歴が半年の初心者が、 Kaggle で銅メダルを取得した話」
https://www.topgate.co.jp/kaggle-bronze-report-jigsaw
2.2 動画
「Kaggle入門動画をつくった」
http://yutori-datascience.hatenablog.com/entry/2017/10/24/215647
@tkm2261さんが公開されている大変すばらしい動画です。ぜひご覧になってください。
2.3 Slack
kaggler-slack
https://kaggler-ja.herokuapp.com/
日本Kagglerのslackです。日々登録者が増えており、強くて親切な方々がKaggleの事ならどんな質問にも優しく答えてくれます。(正直Kaggle関係ねーだろって質問も・・・)
2.4 Twitter
コンペは長期戦で、結構しんどいです。周りの様子が見えるとモチベーションが維持出来たり、ペースのコントロールに役立ちます。 (Kaggleではprivate sharingが禁止されているので、開催中コンペの直接的な情報を得ることはできませんが、上級者のツイートからヒントを得られることも・・・)
2.5 書籍
2018年9月現在、特に出版はされていないかと思います。
しかし、専業Kagglerのカレーちゃんさん(@currypurin)がkaggleの入門に最適な「kaggleのチュートリアル」という本を書かれています。
私も購入できてはいないのですが、プレビューを拝見したところとても良質な内容だと感じております。以下のリンクからプレビュー出来ます。
http://www.currypurin.com/entry/2018/02/26/001207
機械学習やプログラミングの経験が浅い方は、そちらの書籍などが手元にあるとよいかもしれません。
2.6 公式ページ
雰囲気知るためにいろいろと探索してみましょう。
3. コンペへの参加
そろそろ気持ちも高まってきたと思うので、コンペに参加しましょう。 チュートリアルとしてはTitanicが有名です。 こういった過去のコンペですと、解法の解説やコードが手に入るので、取り組みやすいかと思います。雰囲気を掴めたら開催中のコンペに突っ込みましょう。 開発環境についてですが、最初のうちは基本的には使い慣れているものでよいと思います。 私はwindowsデスクトップ、MacBookPro、Google Compute Engineなどを色々と使ってPythonで開発していました。
4. コンペ
ここからは試行錯誤しながら頑張ってみてください。私が特に重要だと思ったのは
スケジュール管理
コンペは長期戦です。期間中は例えば、序盤:EDA→中盤:特徴量エンジニアリング→終盤:パラメータ調整・アンサンブルというような流れになると思いますが、自分のできる範囲でスコアを最善にするために、どの期間に時間が確保できるのかを把握して、どのようにコンペに取り組んでいくのかを随時管理する必要があります。特徴量エンジニアリング
何を当たり前の事をって感じですね。コンペによりますが、基本的にスコアを大きく左右しているのはモデルやハイパーパラメータよりも特徴量です。如何に時間をかけて多くの特徴量を試せるかがコンペの勝敗のカギを握っていると言えます。よく用いられるLGBMなどの木系のモデルは特徴量が増えすぎても性能が悪くなりにくいので、恐れずにどんどん特徴量を生成しましょう。
その他に
モチベーションの維持
ソースコード・特徴量の管理
Kernel, Discussionでの情報収集
なども大事です。期間中、これらに真剣に取り組んだことでメダルが取れたのだと思います。詳細はHome Credit Default Riskの振り返りとして、別途記事にできたらなと思います。
5. 最後に
みなさん、良いKaggle Lifeを!