はじめに
- 育休中のエンジニアの私が、自宅でのウォームアップと勉強を兼ねてKaggleコンペに参加してみることにしたので、その記録を残したいと思う。
- 今回は、Kaggleの概略を知り、Begginer向けコンペへ参加することで、基本的な参加方法や使い方を理解することを目指す。
Kaggleについて
- まずは、Kaggleについて基本的な事項を確認する。
Kaggleとは何か?
- 世界中から、約40万人のデータサイエンティスト・機械学習エンジニアが集うコミュニティである。
- 特に「Competetion」(コンペ)が有名である。これは、
- 企業や政府などが、課題を設定してデータを提供し、機械学習アルゴリズムを開発させて精度を競わせる。
- 上位3チーム(最大5名まででチーム参戦可能。もちろん1名でもOK。)などに賞金が与えられる。
- 入賞者は、賞金を受け取る代わりに開発したソースコードなどの権利を依頼元に委譲する。
- 参加は無料。
- 上位数十%の成績を残すと、その順位に応じて金・銀・銅メダルが与えられる。
- 条件を満たすだけのメダルを集めれば、GrandMasterやMasterなどの称号が貰える(大変名誉であり、転職時などに技術力のアピールにもなる。)
というものである。
Kernelについて
- Kaggleのコンペの特徴として、「Kernel」(カーネル)というものがある。
- そのコンペに参加するユーザが、開発したモデルやソースコード(説明つきの場合もあり)を公表する場所である。
- 初心者は、この「Kernel」で公表されたコードを見たり、触ったり、改良したりして学ぶことができる。
- 実際にコンペに挑戦してみるとわかるが、自分の思いつくアプローチだけでは精度の限界に(結構早く)ぶち当たる。
- 他の機械学習コンペと比較した時、「Kernel」を見て上級者のアプローチや工夫点を学べるのが、Kaggleの最大の強みでありメリットと言えると思う。
Kaggleコンペのカテゴリ
- Kaggleのコンペには、難易度別に以下の7つのカテゴリがある。上にいくほど難易度が易しい(5,6は別枠なので除く)。
- Getting Started
- Kaggleにはじめて参加する初心者向け。半永久的に開催されており、賞金などはない。
- タイタニックの生存予測、数字認識など。
- Playground
- Getting Startedを卒業した初心者が楽しめるレベルの課題。賞金はなし、もしくは少額。
- 犬猫分類など。
- Featured
- 最もポピュラーで参加者が多い。商業目的の少し難しい課題で、それなりの額の賞金がつくものが多い。
- 過去にメルカリの価格予想チャレンジなど。
- Research
- Featuredに次いでポピュラーなカテゴリ。より実験的な問題設定で、基本賞金はなし。
- Googleのランドマーク検索チャレンジなど。
- Recruitment
- 企業の出す課題に挑戦し、主催者に履歴書を送る権利を得られるコンペ。入賞賞品は基本的に面接権。
- Annual
- Kaggleが定期的に開催するコンペ
- Limited Participation
- めったに行われない、privateまたは招待制で開催されるコンペ。
- Master、GrandMasterのみが参加できるものなど。
- Getting Started
- 公式の説明はこちら
Kaggleへの参加登録
- 早速、Kaggle公式トップページの右上「Register」からユーザ登録を行う。
- 今回は、メールアドレスから登録した。
- 登録自体はとても簡単で、数ステップで完了する。
Kaggleのコンペに参加
参加するコンペの選択
ルールの確認
- コンペには、各々で定められた「Rules」(ルール)がある。
- 「Join」(参加)にあたって、まずはこのルールの確認を求められるため、内容を読む。
- 今回のコンペでは、ざっと
- 1人1アカウントであること(複数アカウントでのログインは不可)
- チーム外へのコードやデータのシェアは禁止。ただし、フォーラムで全参加者が閲覧できる形になっていればOK。
- チームのMerge(合併)はOK。
- チームのSize(人数)に制限はなし。
- 1日の投稿回数は10回まで。最後のJudge用に最大5つの提出が可能。
- このコンペは、機械学習への参加を支援するもの。タイタニックのデータセットはインターネットで公開されているが、答えを調べると挑戦する意味がなくなってしまうので、それはやめようね。
という内容。
データの概要確認
-
コンペに参加したら、まずはデータの確認。
-
学習データセット(train.csv)とテストデータセット(test.csv)が与えられる。
- 学習データセットには、Ground Truth(正解ラベル。今回であれば、各乗客のdead or alive)がついている。特徴量は与えられたもののほか、特徴量エンジニアリングで新しく生成してもOK。
- 評価データセットには、正解ラベルはなし。これに対する推論結果を投稿し、精度を競う。
-
この他、投稿ファイルのサンプル(gender_submission.csv)も与えられる。
-
左から、生存フラグ/チケットのclass/性別/年齢/兄弟・配偶者情報/親子情報/運賃/キャビン番号/乗車した港 である。
Goal, Metricの確認
- コンペにおいて、評価指標は重要である。
- 一口に分類問題といっても、Accuracyで評価するか、F1スコアで評価するか、などで求めるべき性能が変わってくるためである。
- 今回は、Accuracyで評価される。
LeaderBoardの確認
- 本当はこのタイミングで見る必要はないが、他のビギナーさん達の実力が気になるので、チラリと「LeaderBoard」を確認する。
- 「LeaderBoard」は、自分を含む、全参加者のランキングとスコアが表示される。
- 「Public LeaderBoard」は、testデータセットに対する精度。「Private LeaderBoard」は、非公表のtestデータセットに対する精度である。コンペでは、最終的にこの「Private LeaderBoard」での精度を競うことになる。
- 今回の課題はどうやら簡単らしく、Accuracy1.0(正解率100%)の参加者がたくさんいるようだ。
データのダウンロード
- 今回は普通にブラウザからダウンロード。
- Kaggle APIも提供されており、これを使うとコマンド1行でDLできる。
kaggle competitions download -c titanic
最後に
- キリが良いので、今回はここまで!
- 次回は「Kaggleコンペの参加チュートリアル(2.前処理~モデル作成編)」で、実際にダウンロードしたデータを学習させる。