データ分析/機械学習の競技大会プラットフォーム「Kaggle」についてコンペティションの種類や仕組み、メダルと称号などを概説。さらにKaggle初心者にお勧めの教材から、Kaggleに取り組む際に役立つノウハウまでを紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
この連載では、近年話題のコンペティションプラットフォーム「Kaggle」について、リクルート所属のKaggle Master 4人がKaggleの仕組みや取り組み方、初心者から一歩先にいくためのノウハウについて解説を行います。
全3回の連載を予定しており、第1回はこれからKaggleを始めようと思っている方向けに、Kaggleの仕組みや実際にコンペティションに出場した後の取り組み方、初心者におすすめのコンテンツについて解説します。
Kaggleは世界最大の機械学習コンペティションプラットフォームで、ホスト(企業や大学)が提供するお題とデータに対して、構築するモデルの精度を競い合います。ホストは賞金や景品と引き換えに、精度の高いモデルだけでなく、多数の参加者が行う分析と議論から得られる知見を獲得することができます。
ちなみにリクルートでも2018年にコンペティションを主催したことがあります(図1)。
Competition Types
Kaggleでは、参加することで賞金やメダルが得られるコンペティション以外にも、以下のようなさまざまなタイプのコンペティションがあります。
上記以外にも、参加者の採用を目的とした「Recruitment」、バスケットボールの勝敗予測コンペティションのように定期的に開催される「Annual」などがあります。興味のある方は公式ヘルプの「Competitions」を見てみてください。
コンペティションは「Kaggle Competitions」ページ上に掲載されており、[All Categories]ドロップダウンリストからタイプを選択してフィルタリングすることもできます。
Competition Formats
Kaggleには複数のコンペティション形式があり、それぞれ予測結果の提出方法が違います。よく知らずに参加すると痛い目(例えば「Code Competitionなのに、手元で作ったCSVファイルを提出するKaggle Notebookを作っていたため、Privateスコアが崩壊していた!」など)を見るので知っておくと便利です。以下では代表的な2つの形式について簡単に説明します。詳しくは公式ヘルプの「Competition Formats」に記載してあるので、時間がある方は一読しておくとよいと思います。
上記のように複数タイプのコンペティションがあり、それぞれ制約や取り組みやすさが違うので、コンペティション選びの際は参考にしてください。
Leaderboard(=順位表)について解説します。
実施期間中、テストデータの一部で評価された暫定順位表をPublic Leaderboard(こちらを単にLB(LeaderBoardの略)と呼ぶことが多い)、それ以外のデータで評価された順位表をPrivate Leaderboardと呼び、こちらはコンペティション終了後に発表されます。最終順位はPrivate Leaderboardで確定します。
例えば図3に示したコンペティションのLeaderboardでは、テストデータのうち25%がPublic Leaderboard用、それ以外の75%がPrivate Leaderboard用です。暫定順位表は、全テストデータの1/4で計算されたスコア、ということになります。コンペティション初心者は暫定順位表であるPublic Leaderboardが全てと思いがちですが、最終順位はPublic Leaderboardの計算に使われたデータ以外のデータで評価されることに気を付けなければいけません。基本的には「Privateのデータ量 > Publicのデータ量」です。
「PublicとPrivateを分ける意味って?」「意地悪じゃない?」と思う方がいるかもしれませんが、こうしておかないと、何回も提出して最終順位がよくなるように調整することが可能になるなどさまざまなハックができてしまうため、必要な仕組みなのです。
コンペティション終了後、Private Leaderboardが公開され順位が確定します。図4に示す先ほどのコンペティションのPrivate Leaderboardで4位の[pub列]を見ると順位が8個上がっていることが表示されています。このように[pub列]がPublic Leaderboardの順位との差を示しており、Privateの順位が上がることをShake Up、順位が下がることをShake Downと呼んでいます。
次に、Kaggleのユーザー間のランキングがどのように決まるかを紹介します。ここでの内容は公式ページ「Kaggle Progression System」を参考にしています。
メダルが付与される対象のカテゴリーには、
の4種類が存在しています。このカテゴリーはそれぞれ、
での活動に紐づくようになっています。
また、パフォーマンスのTier(称号のレベル)としては上から、
の5種類が存在しています。パフォーマンスのTierはカテゴリーごとに設定されています。ちなみに、2020年12月に私たちが取得したのはCompetitionsにおけるMasterのTierになります(参考:「Kaggle『MoA』で4位入賞、Masterの称号を獲得しました | リクルート メンバーズブログ」)。
MasterのTierを取得するためには図5のような要件が定められています。
例えば今回私たちが取得したCompetitions Masterの称号を得るためには、
が必要であることが分かります。
Competitionsで金メダルを獲得するためには図6の通り、かなり厳しい条件が課せられています。
今回私たちが参加したコンペティション「Mechanisms of Action (MoA) Prediction」で金メダルが与えられたのは4373チーム中18位(トップ0.4%)まででした。
Medalists
また、Competitions Masterの称号は2021年3月29日時点でKaggle登録ユーザーの1%程度しか持っておらず、それなりに希少性が高いことが分かります。図7はその時点の公式ページ「Kaggle Rankings」の一部をスクリーンキャプチャーしたもので、パフォーマンスのTierごとのユーザー数が表示されています。
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に取り組む際に役立つおすすめのノウハウを紹介します。
いきなり実装を開始してモデルを作成しようとしても、コンペティションのデータに対する理解も浅い状態でどこから手を付けてよいか分からない、という方も多いかもしれません。そのような場合には、参加者の知見を共有できるDiscussion(議論の一覧)やCode(ノートブックの一覧)を一通り読みあさる、という方法をおすすめします。
各コンペティションにおけるDiscussion(図8はその例)では、初心者の提出方法に関する質問や、データの中身に対する考察、有効な特徴量の紹介などさまざまな議論を、参加者であれば全員参照することができます。コンペティション序盤でなければ、ある程度Discussionもたまっていて、自分で手を動かすよりも早くコンペティションの内容を把握することが可能です。
筆者は実際、初めてのコンペティション出場の際、Discussionを読みあさり知見をまとめることで、コンペティションに対する理解を深めました。具体的には、
といった方法で、常にDiscussionの内容を把握するようにしていました。
また、各コンペティションにおけるCode(図9はその例)も同様の方法で読みあさることで、具体的な実装方法まで把握でき、参加者のベースラインも理解できます。
それでは次に、実際にコーディングする環境について説明します。よく使われる環境には、
があります。ここではそれぞれの環境について簡単に解説します。
Copyright© Digital Advantage Corp. All Rights Reserved.