検索
連載

Kaggleはじめの一歩Kaggle入門

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

Share
Tweet
LINE
Hatena
「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)などのクラウドサービス
  • ローカルマシン

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

Kaggle Notebook

 はじめに、誰でも無料で使い始められる環境として、Kaggle Notebookを説明します。GPUやTPUだけは週単位で上限実行時間が設定されているものの、その点を除けばいつでも気軽に利用可能な環境となっているので、はじめの一歩としてオススメです。具体的には図10のように「Kaggleトップページ → サイドバーの[Code] → [New Notebook]」と移動することで、(新しいノートブックを作成して開いた状態で)Kaggle Notebookを立ち上げることができます。

図10 Kaggleトップページのサイドバーから[Code]を開いたところ
図10 Kaggleトップページのサイドバーから[Code]を開いたところ

 Kaggle Notebookは、Jupyter環境(JupyterLabやJupyter Notebook)と似たような仕様となっていて、対話的にコマンドを実行し、その結果を都度出力、可視化できるようになっています。また、Pythonライブラリについてもデータ分析に必要なものは一式そろっているので、面倒なインストール作業なども基本的に不要です。

 Kaggle Notebookには、通常のJupyter環境にはない特徴的な機能が2つあります。まず1つ目として、Kaggle NotebookではGPUやTPUの利用が可能です(ただし1週間あたり40時間程度の利用制限があります)。その利用設定も設定画面から数クリックで完了できるので、自前でクラウド環境やローカルマシンを整備するのに比べて気軽に使い始めることができます。

 2つ目として、データセットの追加という機能があります。これを利用すれば、例えば画像コンペティションなどによく見られる大量の入力データについても、少しの手間でKaggle Notebook上で利用可能となります。また、データセットにはKagglerたちがアップロードした学習済みモデルなども公開されているので、コンペティションのルール次第ではこれらを利用することも可能です。

クラウドサービス

 次に、クラウドサービスでのコーディングについて説明します。はじめの一歩としてはKaggle Notebookだけでも十分ですが、処理内容によっては非常に時間がかかるため、より多くのマシンリソースが必要になる場面があります。そのため、有料ではありますが、クラウドサービスを利用するKagglerも大変多いのが現状です。

 ここで、例えばGoogle Compute EngineやAmazon EC2といったVM(仮想マシン)を設定する方法もあるのですが、最近では、

といったマネージドサービスもあります。これらは先に述べたKaggle Notebookと同様の使い勝手のサービスとなっていて、使い始めるまでのハードルも低いので、予算に問題がなければこれらを使うのがよいでしょう。

ローカルマシン

 最後に、ローカルマシンでのコーディングについて説明します。クラウドサービスを利用する場合は実行時間に従って費用が発生するので、それほど頻繁にコンペティションに参加しない方の場合はそれでも十分かもしれません。しかし最近は、Kaggleでも画像データを扱うコンペティションが多くなっていて、毎回参加しているとクラウドサービスの利用費用がかさんでしまいます。そこで、Kagglerの中には自前でGPUマシンを購入している方もそこそこいます。もちろん設定や運用の手間はありますが、コンペティションにのめり込んだ方、のめり込む予定の方はぜひ検討してみてはいかがでしょうか。

ノウハウ(3) とにかくデータを見る

 コンペティションに参加してまず実施するべきことは、EDAExploratory Data Analysis; 探索的データ解析)です。EDAとは、本格的なデータ分析/機械学習を始める前に行うデータの初期調査のことです。その目的は、データの性質を各方面から明らかにすることで、どのようなモデリングを実施するかなどの方針を決めていくことです。

 優秀なKagglerほど他の人より詳細にデータを解析し、他の参加者が思いもよらなかった観点を取り入れることで、抜きん出たスコアを出すことも少なくありません。EDAは、Kaggleの中のみならず、実務においても必須の作業となるので、ぜひ時間を割いて取り組みましょう。

 といっても、最初は「EDAで何をすればよいか」の見当が付かないかもしれません。よく確認される項目は以下のようなものです。

  • どのようなデータ形式のコンペティションでもそうですが、まずは生のデータを自分の目で確認します
  • テーブルデータがある場合、量的変数の各種統計量(平均、中央値、標準偏差など)や、欠損率を算出します。また、カテゴリカル変数についても出現頻度上位がどのようになっているかを確認します
  • 画像データがある場合、画像の枚数やサイズの確認、ラベルごとの画像可視化などを行います
  • 音声データがある場合、音声の数や長さの確認、波形の可視化などを行います

 自力でEDAをする前に、他の優秀なKagglerが実施したEDAを参考にするのもおすすめです。大体のコンペティションでは、開催されてから数日間のうちに多くのKagglerがEDAを実施し、そのNotebookがアップロードされています。これらのNotebookには、どのような観点でEDAを行うべきかだけでなくソースコードも併記されていますので、大変参考になるでしょう。

ノウハウ(4) 過去コンペティションの解法で勉強する、Late Submissionについて

 最初から開催中のコンペティションに参加してももちろんよいのですが、過去のコンペティションから勉強するのもスキルアップに役に立ちます。特に過去のコンペティションでは上位入賞者の解法も多くアップロードされているので、優秀なKagglerがどのように思考してコンペティションに取り組み、どのような部分で他の参加者を上回ったのか、といった知見を得られるのがポイントです。

 また、過去コンペティションではLate Submissionという機能があり、後追いで挑戦することができます(ただし、リーダーボードに記録は残らず、メダル取得などの成績にも反映されません)。

次回予告

 今回は、これからKaggleを始めようと思っている方向けに、仕組みや参加後の取り組み方、オススメのコンテンツについて紹介しました。次回は「脱・初心者」をテーマに、メダルを獲得してTierを上げていくためのステップについて、実際にわれわれが取り組んだコンペの実例を交えて解説する予定です。

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

Kaggle入門

Copyright© Digital Advantage Corp. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る