【初心者】0から始めるkaggle入門
はじめに
kaggleについて、これから始めたい人や登録したがコンペになかなか参加できない人に向けて、kaggleとは何か、コンペに参加したら何をするかを紹介したいと思います。
kaggleとは
kaggleとは、分析コンペが開かれるプラットフォームになります。
世界中のデータサイエンティストが、いろんな分野の企業などから提供されたデータを使って機械学習モデルを作成し、その予測結果をコンペ形式で競い合う場になります。上位入賞者には賞金が出るコンペもあります。
また、競い合うだけでなく、GPUの使える実行環境やコンペ参加者同士でどう分析したらいいかなど議論し合う場も用意されており知識の共有もできます。
コンペの種類
基本的なコンペの種類は以下の4つになります。
-
Featured
- 一般的なkaggleのコンペ
- 本格的な機械学習の問題
- 難しめ
-
Research
- 一般的なkaggleのコンペ
- Featureより実験的な問題
-
Getting Started
- 取り組みやすいチュートリアル的な問題
- 賞金やメダルはでない
- いつでも参加できる
-
Playground
- 比較的簡単だがGetting Startedよりは難しめ
- 楽しむためのコンペ
- 賞金は小額だが出ることも
他には、あまり見かけませんが以下のような種類のコンペもあります。
- Recruitment
- Annual
- Limited Participation
初めはタイタニックや住宅価格の予測などGetting Startedのコンペに参加してみるのがいいかと思います。
Titanic - Machine Learning from Disaster
Start here! Predict survival on the Titanic and get familiar with ML basics
House Prices - Advanced Regression Techniques
Predict sales prices and practice feature engineering, RFs, and gradient boosting
コンペの形式
コンペの種類とは別にコンペの形式もいくつかあります。
-
Simple Competitions
- 最も一般的なコンペ
- コンペ開始とともに全てのデータが扱える
-
Two-stage Competitions
- ステージ1とステージ2に分かれているコンペ
- ステージ2で新しいデータが配布される
-
Code Competitions
- 提出ファイルをKaggle Notebookから提出しなければならないコンペ
- コンペ参加者の実行環境が公平になる
- コンペごとにリソースの制限がある(GPU何時間以内とか)
-
Simulation Competitions
- 強化学習系のコンペ
- エージェント同志を戦わせてレートを決める
最近はCode Competitionが多くなり、kaggleの実行環境で完結できるようになりました。また、シミュレーションコンペは予測結果を競うコンペよりさらにゲーム性のあるおもしろいコンペになっているかと思います。
データの種類
扱うデータはさまざまです。
主なデータは以下になります。
- テーブルデータ
- 時系列データ
- 画像
- 自然言語
- 音声
順位の決まり方
テストデータを予測した結果で順位が決まります。
リーダ-ボードはふたつあります。PublicリーダーボードとPrivateリーダーボードです。
コンペ中はPublicリーダーボードで順位が表示され、最終的な順位はPrivateリーダーボードで決定されます。
予測するテストデータはPublicリーダーボード用とPrivateリーダーボード用に分かれています。
Publicリーダーボードの順位だけを見ているとそのデータに過学習している可能性があるため注意が必要です。
実行環境
kaggleにはNotebookという実行環境が用意されています。
メニュー上では「Code」、ドキュメント上では「Notebook」と記載されていますが、ドキュメントのNotebookに合わせてます。 以前は「Kernel」と呼ばれてました。
コンペではこの環境を利用して機械学習モデルを学習することができ、GPUでの実行もできます。
Notebookにはスクリプトファイルを実行するようなScript形式とJupyter notebookのNotebook形式があります。
「Notebook」の形式として「Notebook」(Jupyter notebook)があるということになります。 ドキュメントにそのように記載されていましたが、少し混乱するかと思いました。
先人の知恵を借りられる
Notebookは非公開でも実行できますが、公開することもできます。 公開されたNotebookは投票することもでき、人気のNotebookはどのコンペでも参考になります。
また、Discussionsという機能もあり、コンペ参加者同士でコンペ内容について議論することができます。
これらの機能を活用することで、先人たちの知恵を借りながら分析コンペに参加することができますし、大変勉強になります。
コンペに参加して提出するまで
kaggleに登録
kaggleに登録してない場合は、まず登録します。
コンペを選ぶ
コンペ内容や形式、データ、期間などから参加するコンペを決めます。
初めて参加するならGetting Startedのコンペがおすすめです。具体的にはタイタニックや住宅価格の予測がいいと思います。
Titanic - Machine Learning from Disaster
Start here! Predict survival on the Titanic and get familiar with ML basics
House Prices - Advanced Regression Techniques
Predict sales prices and practice feature engineering, RFs, and gradient boosting
また、シミュレーションコンペもゲーム性があって楽しいです。
Connect X
Connect your checkers in a row before your opponent!
参加する
コンペのルールを読んで、コンペに参加します。
コンペ内容を確認する
どんなデータを利用して、何を予測するのか、どんな方法で評価するのかを確認します。
人気のEDA kernelを実践する
大抵のコンペではEDA(探索的データ解析)をしているNotebookを公開しているので、それをフォークして実践してみます。これを通して、データの特徴などを簡単に理解します。
人気の予測kernelを実践する
EDAのNotebook同様、ある程度スコアが出るモデルやベースラインとなるモデルのNotebookも大抵公開されています。
データの特徴をある程度理解できたら予測結果を出力する人気のNotebookをフォークして実行してみます。
提出
予測結果が出力されたら提出してみます。
提出したら
ここまでは先人の方がやったことをそのまま実行しただけなので、あとは自分で色々試してみます。
- 問題と評価のより深い理解
- 特徴量エンジニアリング
- 別のモデル
- 交差検証
- モデルのチューニング
- アンサンブル
などなど...
コンペが終わったら
最後の大切なのがコンペが終わったら振り返りをすることです。(自分も疎かにしがちですが)また、コンペ終了後は上位の方が解法を公開してくれるので参考になります。
コンペ中に参考になる書籍
コンペ中のテクニックに関しては下記の書籍が参考になります。
まとめ
- Kaggleはすごい人たちがたくさんいるので参考にしながらコンペに参加する
参考
- Getting started on Kaggle | Data Science Resources
- kaggle初心者ガイド - Kaggler-ja Wiki
- Kaggleに登録したら次にやること ~ これだけやれば十分闘える!Titanicの先へ行く入門 10 Kernel ~ - Qiita