2022/03/04

Kaggleコンペの始め方

Kaggleのデータサイエンスコンペに挑戦したい方に向けて、Kaggleの始め方をAITCのKaggle masterが解説します

Kaggleコンペの始め方_サムネイル

こんにちは、AITC 製品開発グループ Kaggle Masterの阿田木です。

私は現在、業務でAI製品の開発に携わっており、趣味としてもKaggle等のデータサイエンスのコンペに参加して日々技術を磨いております。

Kaggleに参加することで身に着けたスキルというものは、実際の業務に活かされることがあります。例えば、顧客から依頼されたAIモデル精度改善等の案件では、Kaggleで培ったスキルや知識が役立っております。

今回はそういったKaggle での知見を業務に活かしたい!もしくは単純にKaggle等のデータサイエンスコンペに興味があり、取り組み始めてみたいという方に向けて、Kaggleの始め方という内容についてふれていきたいと思います。

  • 参加の動機:モチベーションの整理
  • 初手、タイタニック:Kaggle機能理解、Competitionを知る
  • 次手、とりあえず現行コンペに参加してみよう:適切なコンペの選び方
  • 番外編:環境について
  • まとめ
  • 参加の動機

    まずは参加の動機についてです。参加の動機については以下のようなものがあると思います。

    • データ分析の勉強をしたい
    • 実力を試したい
    • 自身のスキルアップ、キャリアアップのため
    • 最新の解析手法などについて学びたい
    • 順位を競うことを楽しみたい
    • など、各種あると思います。

      個人的に、Kaggleの利点は、競争ゆえの楽しさと、様々な課題に実際に触れ知見を獲得できるという点だと思います。自分に合った動機で始めることが大事であると思いますが、Kaggleを長く続けていきたいと思っている方は、「楽しむ」という気持ちを持っておくことがとても大切であると思います。

      Kaggle Competitionに参加するにはKaggleアカウントが必要になります。参加を迷っている方もアカウントを作るところから始めてみましょう。

      Kaggleアカウント作成ページ

      初手、タイタニック:Kaggle機能理解、Competitionを知る

      Kaggleへの登録を済ませたら、Competitionsページへ移動してみましょう。

      Competitionsページ

      Kaggleには、「タイタニックコンペ」という練習用のコンペがあります。 Active Competitionsの右下にある「Titanic - Machine Learning from Disaster」を選択してみましょう。

      初手、タイタニックコンペティション!

      これは、タイタニックの乗客のデータから、乗客の生死を予測するというコンペです。やりたいことが分かりやすく、タイタニックという馴染みのあるテーマであることから、Kaggleに初めて挑戦する際のコンペとしてオススメされることが多いです。

      私も最初のコンペとして取り組んだことを覚えています。テーブルデータで、取り組みやすいテーマのコンペでした。

      まずは、タイタニックコンペのデータをさわってみて、Kaggleサイトの使い方などを学ぶのが良いと思います。 以下の手順をふむことで、容易にコンペに取り組み始めることができます。

      Codeページに、チュートリアルに該当する内容がいくつかあるので、「チュートリアル」もしくは「tutorial」と検索して絞り込んでみましょう。

      Codeページ

      日本語のページもあり、効率よくソリューションを学ぶことができます。 見たいCodeの投稿を選択し、移動した後、右上にあるCopy&Editを選択することで、Codeを使うことができるようになります。

      Copy&Edit

      Kaggleでは、DatasetsだけでなくCodeの実行環境も提供しているため、Kaggle内でCodeを動かすことができます。

      なお、タイタニックコンペをやりこむ必要はなく、Kaggleのコンペのイメージをつかむことができれば十分です。上位10~20%位を目標にどういう手法が必要か試行錯誤しながら取り組むことをおすすめします。

      次手、とりあえず現行コンペに参加してみよう:適切なコンペの選び方

      タイタニックコンペなどでコンペの全体像をつかむことができたら、開催中のコンペに取り組んでしまうのが良いと思います。

      どのコンペに取り組むと良いかは悩ましい問題ですが、とりあえずコンペに参加したい、楽しみたいという方は1000人を超えるような参加者が多いコンペに参加してみるのが良いでしょう。

      参加者が多いコンペは、初心者でも扱いやすいデータであることが多いのでおすすめです。 また、Code やDiscussionの投稿も多く、よりたくさんのことを学ぶことができると思います。

      Codeページでは、Codeベースでやっていることを解説したものがあり、詳細な仕組みを理解し、自分のCodeに取り入れることもできます。現行コンペではチュートリアルの投稿はほとんどありませんがベースラインが公開されていることが多いので、そちらを参考にすると始めやすいと思います。

      一方、Discussionページの方では、ソリューションの概要や役立ちそうなことが多く議論されており、Discussionを見ずして上位にいくことは不可能なのではないかというくらい情報があります。私個人の見解のため、それ以外の使い方や捉え方はあると思いますが、役立たないということはないと思います。

      以下のように、Codeページの並び替え機能を利用し、Most Votesを選択することでVoteが多く人気のある記事を効率よく確認することが可能です。Discussionページでも同様のことが可能です。

      タイタニックコンペのDiscussionページ

      業務で活かせる知識だけ得たいという方は業務のタスクに近いものがあれば、やはり現行コンペに参加してみることをおすすめします。

      最新の技術に触れることができますし、モチベにもなります。見えていない部分も多いので、自身の仮説検証の力をつける機会ともなるでしょう。手っ取り早くノウハウを得るには、過去コンペの上位ソリューションをあさることです。

      Kaggle MasterやグランドマスターのCode やDiscussionは学ぶことが多く参考になります。ただ、エキスパートや最近始めた方でもかなり専門的な方や洞察が鋭い方がいることも事実なので、Voteが多いものをチェックしてみるのがよいです。

      番外編:環境について

      ノートパソコン一台でも十分Kaggleをすることが可能です。Kaggleには、CPUやGPU、TPU等、サーバ上の計算リソースを提供してくれており、Kaggle上でコードを動かすことができます。

      ただ、GPUやTPUには毎週の利用制限があり、近年多い画像タスクやNLPタスクに取り組むためには十分ではありません。そこで、追加のリソースとしてよく用いられているのはGoogle Colaboratory(通称Colab)です。Colabでは無料でGPUやTPUが利用できます。こちらも連続利用の制限があったり、GPUのメモリがやや小さかったりと十分ではないかもしれませんがデバグや小さいモデルの学習には利用できます。

      より本格的にモデルを学習させたい場合は、有料版のColab Pro (約1000円/月)やColab Pro+ (約5000円/月)を利用するのが良いでしょう。これらはKaggleで利用できるGPUに近いものが使用できるためおすすめです。さらに大きなメモリや計算速度を求める場合は、AWSやAzure、GCPの利用も検討できます。

      また、もう少しがっつりやりたいという方には計算用マシンの購入をおすすめします。Colabが低コストで使いやすいとはいえ、連続稼働時間に制限がありますし、毎回データをアップロードする手間等も発生します。また、その他のクラウドリソースを使う場合、費用の管理をする必要がでてきます。

      手元に計算用マシンがあると、その辺を気にせず、気軽に計算を回すことができるようになります(※電気代が高額になる可能性あり)。

      スペックとしては、CPU用メモリ64GB 以上、GPU用メモリ16GB以上あると最低限困ることはないと思います。好きなパーツを組合せて自作PCを作ってみるのもおもしろいですね。

      環境構築は少しやっかいですが、Kaggleのdockerイメージなどもありますので、その辺をうまく利用することをおすすめします。

      まとめ

      今回、Kaggleを始めてみたい方向けに、Kaggleの始め方、参加動機の整理、簡単な機能紹介を行いました。今回説明したことは、ほとんど形式的なことばかりで、これだけではKaggleのおもしろさが十分には伝わらないかもしれません。

      文面だけで、おもしろさを伝えるのは少々厳しい部分がありますので、やはり自らの手を動かしながら、開拓していくことが重要と思います。そうして得られる学びは、自ずと業務や以後のKaggleに対するアウトプットの向上にあらわれてくると思います。

      少しでも興味関心が深まったと思えた方は、ぜひ一度、Kaggleのコンペに挑戦してみてください!

      執筆
      AITC製品開発グループ
      阿田木 勇八