Kaggleコンペの参加チュートリアル(1.参加編)


はじめに

  • 育休中のエンジニアの私が、自宅でのウォームアップと勉強を兼ねて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は別枠なので除く)。
    1. Getting Started
      • Kaggleにはじめて参加する初心者向け。半永久的に開催されており、賞金などはない。
      • タイタニックの生存予測、数字認識など。
    2. Playground
      • Getting Startedを卒業した初心者が楽しめるレベルの課題。賞金はなし、もしくは少額。
      • 犬猫分類など。
    3. Featured
      • 最もポピュラーで参加者が多い。商業目的の少し難しい課題で、それなりの額の賞金がつくものが多い。
      • 過去にメルカリの価格予想チャレンジなど。
    4. Research
      • Featuredに次いでポピュラーなカテゴリ。より実験的な問題設定で、基本賞金はなし。
      • Googleのランドマーク検索チャレンジなど。
    5. Recruitment
      • 企業の出す課題に挑戦し、主催者に履歴書を送る権利を得られるコンペ。入賞賞品は基本的に面接権。
    6. Annual
      • Kaggleが定期的に開催するコンペ
    7. Limited Participation
      • めったに行われない、privateまたは招待制で開催されるコンペ。
      • Master、GrandMasterのみが参加できるものなど。
  • 公式の説明はこちら

Kaggleへの参加登録

  • 早速、Kaggle公式トップページの右上「Register」からユーザ登録を行う。
  • 今回は、メールアドレスから登録した。
  • 登録自体はとても簡単で、数ステップで完了する。

Kaggleのコンペに参加

参加するコンペの選択

  • 「Competition」のページを開くと、「タイタニックの生存予測」をおすすめされるので、今回はチュートリアルとしてこれにTryする。

ルールの確認

  • コンペには、各々で定められた「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.前処理~モデル作成編)」で、実際にダウンロードしたデータを学習させる。