連載
» 2021年05月12日 05時00分 公開

第1回 Kaggleはじめの一歩Kaggle入門

データ分析/機械学習の競技大会プラットフォーム「Kaggle」についてコンペティションの種類や仕組み、メダルと称号などを概説。さらにKaggle初心者にお勧めの教材から、Kaggleに取り組む際に役立つノウハウまでを紹介する。

[羽鳥冬星, 阿内宏武, 佐々木彬, 小畑堅人,リクルート]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Kaggle入門」のインデックス

連載目次

 この連載では、近年話題のコンペティションプラットフォーム「Kaggle」について、リクルート所属のKaggle Master 4人がKaggleの仕組みや取り組み方、初心者から一歩先にいくためのノウハウについて解説を行います。

 全3回の連載を予定しており、第1回はこれからKaggleを始めようと思っている方向けに、Kaggleの仕組みや実際にコンペティションに出場した後の取り組み方、初心者におすすめのコンテンツについて解説します。

自己紹介

羽鳥冬星(はとりとうせい)

  • 株式会社リクルート データソリューション2ユニット HRエージェントデータソリューション 2グループ
  • 2015年新卒入社
  • 人材領域のレコメンドシステムの改善を担当しています
  • 趣味:分析コンペティションとスマブラ

阿内宏武(あうちひろむ)

  • 株式会社リクルート データソリューション2ユニット マリッジ&ファミリー・自動車領域データソリューション2グループ
  • 2016年新卒入社
  • 販促領域のデータ活用全般を担当しています
  • 趣味:オセロ

佐々木彬(ささきあきら)

  • 株式会社リクルート データソリューション2ユニット HRエージェントデータソリューション2グループ
  • 2018年新卒入社
  • 人材領域のレコメンドシステム、検索システムの改善を担当しています
  • 趣味:ルービックキューブ

小畑堅人(おばたけんと)

  • 株式会社リクルート データソリューション2ユニット エージェントデータソリューション2グループ
  • 2018年新卒入社
  • HR領域の集客周りの改善を担当しています
  • 趣味:子育て

Kaggleとは

 Kaggleは世界最大の機械学習コンペティションプラットフォームで、ホスト(企業や大学)が提供するお題とデータに対して、構築するモデルの精度を競い合います。ホストは賞金や景品と引き換えに、精度の高いモデルだけでなく、多数の参加者が行う分析と議論から得られる知見を獲得することができます。

 ちなみにリクルートでも2018年にコンペティションを主催したことがあります(図1)。

図1 2018年にリクルートが主催したレストラン訪問者予測のコンペティション 図1 2018年にリクルートが主催したレストラン訪問者予測のコンペティション

コンペティションの種類

Competition Types

 Kaggleでは、参加することで賞金やメダルが得られるコンペティション以外にも、以下のようなさまざまなタイプのコンペティションがあります。

  • Getting Started:「Kaggleに参加したらまずは取り組んでみよう!」という意図で用意されている入門コンペティション。半永久的に開催されている。最も有名なタイタニックコンペティション(図2)はこの形式。メダルがなくランキングに反映されない練習用コンペティション
  • Playground: 入門よりも難易度が一段階上の「お楽しみ」コンペティション。小額の賞金や景品が獲得できる場合が多い
  • Featured: 一般的なコンペティション。賞金やメダルが獲得できる
  • Research: Featuredよりも「実験的な問題」を扱うコンペティション。賞金やメダルが獲得できる。
図2 Kaggle入門者向けのTitanicコンペティション 図2 Kaggle入門者向けのTitanicコンペティション

 上記以外にも、参加者の採用を目的とした「Recruitment」、バスケットボールの勝敗予測コンペティションのように定期的に開催される「Annual」などがあります。興味のある方は公式ヘルプの「Competitions」を見てみてください。

 コンペティションは「Kaggle Competitions」ページ上に掲載されており、[All Categories]ドロップダウンリストからタイプを選択してフィルタリングすることもできます。

Competition Formats

 Kaggleには複数のコンペティション形式があり、それぞれ予測結果の提出方法が違います。よく知らずに参加すると痛い目(例えば「Code Competitionなのに、手元で作ったCSVファイルを提出するKaggle Notebookを作っていたため、Privateスコアが崩壊していた!」など)を見るので知っておくと便利です。以下では代表的な2つの形式について簡単に説明します。詳しくは公式ヘルプの「Competition Formats」に記載してあるので、時間がある方は一読しておくとよいと思います。

  • Simple Competitions: テストデータの全量がユーザーに配布され、自由な環境で作成した予測結果をアップロードする形式。近年では予測結果のCSVファイルを提出する形式だけではなく、あるゲーム(サッカー、じゃんけんなど)をプレイするモデル(エージェント)を提出し、参加者同士の対戦形式で順位が決まるというようなコンペティションも多く開催されています
  • Code Competitions: 「Kaggle Notebook環境(後述)で、制限時間内に推論可能」という制約付きのコンペティション。ユーザーに配布されるテストデータは一部で、作成した推論用ノートブックの提出時にのみテストデータ全量で推論が行われます

 上記のように複数タイプのコンペティションがあり、それぞれ制約や取り組みやすさが違うので、コンペティション選びの際は参考にしてください。

Leaderboardの仕組み

 Leaderboard(=順位表)について解説します。

 実施期間中、テストデータの一部で評価された暫定順位表をPublic Leaderboard(こちらを単にLBLeaderBoardの略)と呼ぶことが多い)、それ以外のデータで評価された順位表をPrivate Leaderboardと呼び、こちらはコンペティション終了後に発表されます。最終順位はPrivate Leaderboardで確定します。

図3 コンペティション「Mechanisms of Action (MoA) Prediction」のPublic Leaderboardの一部画面を引用 図3 コンペティション「Mechanisms of Action (MoA) Prediction」のPublic Leaderboardの一部画面を引用

 例えば図3に示したコンペティションのLeaderboardでは、テストデータのうち25%がPublic Leaderboard用、それ以外の75%がPrivate Leaderboard用です。暫定順位表は、全テストデータの1/4で計算されたスコア、ということになります。コンペティション初心者は暫定順位表であるPublic Leaderboardが全てと思いがちですが、最終順位はPublic Leaderboardの計算に使われたデータ以外のデータで評価されることに気を付けなければいけません。基本的には「Privateのデータ量 > Publicのデータ量」です。

 「PublicとPrivateを分ける意味って?」「意地悪じゃない?」と思う方がいるかもしれませんが、こうしておかないと、何回も提出して最終順位がよくなるように調整することが可能になるなどさまざまなハックができてしまうため、必要な仕組みなのです。

 コンペティション終了後、Private Leaderboardが公開され順位が確定します。図4に示す先ほどのコンペティションのPrivate Leaderboard4位の[pub列]を見ると順位が8個上がっていることが表示されています。このように[pub列]がPublic Leaderboardの順位との差を示しており、Privateの順位が上がることをShake Up、順位が下がることをShake Downと呼んでいます。

図4 コンペティション「Mechanisms of Action (MoA) Prediction」のPrivate Leaderboardの一部画面を引用 図4 コンペティション「Mechanisms of Action (MoA) Prediction」のPrivate Leaderboardの一部画面を引用

KaggleにおけるTierなどの仕組みの理解

 次に、Kaggleのユーザー間のランキングがどのように決まるかを紹介します。ここでの内容は公式ページ「Kaggle Progression System」を参考にしています。

Categories of Expertise

 メダルが付与される対象のカテゴリーには、

  • Competitions
  • Datasets
  • Notebooks
  • Discussions

の4種類が存在しています。このカテゴリーはそれぞれ、

  • 「コンペティションへの参加」
  • 「データセットの共有」
  • 「コードの共有」
  • 「コンペティションに関する議論」

での活動に紐づくようになっています。

Performance Tiers

 また、パフォーマンスのTier(称号のレベル)としては上から、

  • Grandmaster
  • Master
  • Expert
  • Contributor
  • Novice

の5種類が存在しています。パフォーマンスのTierはカテゴリーごとに設定されています。ちなみに、2020年12月に私たちが取得したのはCompetitionsにおけるMasterのTierになります(参考:「Kaggle『MoA』で4位入賞、Masterの称号を獲得しました | リクルート メンバーズブログ」)。

 MasterのTierを取得するためには図5のような要件が定められています。

図5 MasterのTier取得要件(公式ページ「Kaggle Progression System」から引用) 図5 MasterのTier取得要件(公式ページ「Kaggle Progression System」から引用)

 例えば今回私たちが取得したCompetitions Masterの称号を得るためには、

  • 金メダル1つ
  • 銀メダル2つ

が必要であることが分かります。

Medals

 Competitionsで金メダルを獲得するためには図6の通り、かなり厳しい条件が課せられています。

図6 Competitionsでの金メダル獲得要件(公式ページ「Kaggle Progression System」から引用) 図6 Competitionsでの金メダル獲得要件(公式ページ「Kaggle Progression System」から引用)

 今回私たちが参加したコンペティション「Mechanisms of Action (MoA) Prediction」で金メダルが与えられたのは4373チーム中18位(トップ0.4%)まででした。

Medalists

 また、Competitions Masterの称号は2021年3月29日時点でKaggle登録ユーザーの1%程度しか持っておらず、それなりに希少性が高いことが分かります。図7はその時点の公式ページ「Kaggle Rankings」の一部をスクリーンキャプチャーしたもので、パフォーマンスのTierごとのユーザー数が表示されています。

図7 パフォーマンスのTierごとのユーザー数(公式ページ「Kaggle Rankings」から引用) 図7 パフォーマンスのTierごとのユーザー数(公式ページ「Kaggle Rankings」から引用)

初心者おすすめコンテンツ

 Kaggleの仕組みが理解できれば、あとは基本的な知識や技術を身に付けて実際にコンペティションに出てみましょう。いきなり出場して技術を学んでもよいですが、事前にできるだけ準備をしておきたい、という方におすすめのコンテンツを紹介したいと思います。

 1つ目は、Kaggle公式が提供しているオンラインの教材です。基本的なPythonの書き方から強化学習に至るまで、幅広く網羅されていて、チュートリアルと課題をこなしながら講義を進めることができます。全て英語ではあるものの、公式が出しているものなので、初心者はまずここから始めてもよいかもしれません。

 次に、『Kaggleで勝つデータ分析の技術』という書籍を紹介します。日本語で書かれていて分かりやすく、英語に抵抗がある方は他と比べて抵抗なく読むことができると思います。内容としては、機械学習や統計学の入門書にはない、Kaggleでそのまま使える手法が網羅されています。テーブルデータに対する解説がメインの教材となっています。

 最後に、オンライン学習プラットフォームのCourseraを紹介します。動画形式で学ぶことができ、実際のコーディング課題も準備されており、効率的に学習することができます。また、修了すると証明書が発行でき、LinkedInにも連携できるので、技術力のアピールポイントにもなります。たくさんの講義があるので、いくつかピックアップすると、Andrew Ng先生のMachine Learningコースは機械学習の基本的な知識を分かりやすく網羅的に学習できるので特におすすめです。また、「How to Win a Data Science Competition: Learn from Top Kagglers」という講義は、Kagglerから直接コンペティションの取り組み方を学ぶことができ、最終課題では、実際にKaggleプラットフォーム上でコンペティションに参加するため、かなり実戦に近い形式でKaggleの実力を付けることができます。

 基本的な機械学習の知識とKaggleへの理解が深まったら、いよいよ実際のコンペティションへ参加します。そこでここからは、実際にコンペティションに初参加する人に向けて、Kaggleに取り組む際に役立つおすすめのノウハウを紹介します。

ノウハウ(1) DiscussionとCodeを見る

 いきなり実装を開始してモデルを作成しようとしても、コンペティションのデータに対する理解も浅い状態でどこから手を付けてよいか分からない、という方も多いかもしれません。そのような場合には、参加者の知見を共有できるDiscussion(議論の一覧)やCode(ノートブックの一覧)を一通り読みあさる、という方法をおすすめします。

 各コンペティションにおけるDiscussion(図8はその例)では、初心者の提出方法に関する質問や、データの中身に対する考察、有効な特徴量の紹介などさまざまな議論を、参加者であれば全員参照することができます。コンペティション序盤でなければ、ある程度Discussionもたまっていて、自分で手を動かすよりも早くコンペティションの内容を把握することが可能です。

図8 Discussionの例 図8 Discussionの例
コンペティション「Indoor Location & Navigation」のDiscussionの一部画面を引用しました。議論一覧の右上にあるソート順で「Hotness」(今、盛り上がっている順)が選択されています。新着順にするには「Recent Comments」を選択してください。

 筆者は実際、初めてのコンペティション出場の際、Discussionを読みあさり知見をまとめることで、コンペティションに対する理解を深めました。具体的には、

  1. 「Hotness」でソートして、上から順に読んでいくことで、重要と思われている議論を全て把握する
  2. ある程度全体が分かったら、「Recent Comments」でソートして毎日新しい投稿をチェックする

といった方法で、常にDiscussionの内容を把握するようにしていました。

 また、各コンペティションにおけるCode(図9はその例)も同様の方法で読みあさることで、具体的な実装方法まで把握でき、参加者のベースラインも理解できます。

図9 Codeの例 図9 Codeの例
コンペティション「Indoor Location & Navigation」のCodeの一部画面を引用しました。Discussionと同様に、議論一覧の右上でソート順を切り替えられます。

ノウハウ(2) Kaggle Notebook/マシンの使い方

 それでは次に、実際にコーディングする環境について説明します。よく使われる環境には、

  • Kaggle Notebook
  • Google Cloud Platform(GCP)などのクラウドサービス
  • ローカルマシン

があります。ここではそれぞれの環境について簡単に解説します。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。