Kaggleの概要を理解する(Titanicの次に向けて)

これまで、Kaggleの「Titanic: Machine Learning from Disaster」「House Prices: Advanced Regression Techniques」「Digit Recognizer」に参加しました。

ですが、そもそもKaggleの仕組みが分かってないのでないので調査しました。

敵(Kaggle)を知る

なぜ多くの人がKaggleコンペに参加するのか?

Kaggleに参加するデータサイエンティスト(以降、Kaggler)は、幅広い機械学習問題への取り組み経験から得られる引き出しの広さと、限られた時間で高いレベルのアウトプットを生み出せるスピード感を持っています。

このため、多くの企業がKagglerを競うように採用しているようです。

企業でのKaggleの位置づけ

インテル(Intel)

インテルは2018年10月、機械学習研究者を募集する広告を出し「Kaggleコンテストでの優勝経験」を要件として挙げました。

ヤフー(Yahoo)

初任給650万円採用(エンジニアスペシャリストコース)というものがあり、受験資格としてkaggleで上位10%以上のスコアが求められています。

フェイスブック(Facebook)

Kaggleでコンテストを実施し、優秀な成果を出した人材への賞として「就職面接のチャンス」を出しました。

ディー・エヌ・エー(DeNA)

2018年4月3日、AI研究開発部門におけるデータサイエンスト強化のための新制度「Kaggle社内ランク」を4月から導入すると発表しました。

Kaggle社内ランク制度は、データサイエンスチームのメンバーに対して業務時間を使ったKaggleへの参加を認める制度です。

「称号」を取得するには?

Kaggleには獲得メダルの色と数によって決定されるGrand master(グランドマスター)、Master(マスター)、Expert(エキスパート)、Contributor(コントリビューター)、Novice(ナビス)の段階があります。

どうしたら称号が貰えるのか確認しました。

称号 説明
Novice(ナビス) Kaggleに登録したときにもらえる称号
Contributor(コントリビューター) プロフィールの完成や1stサブミットの実施でもらえる称号
Expert(エキスパート) 2つの銅メダルを取得したときにもらえる称号
Master(マスター) 1つの金メダルと2つの銀メダルを取得した時にもらえる称号
Grandmaster(グランドマスター) 5つの金メダル(チームでも可)および1つのソロ金メダル(1人での参加)を取得したときにもらえる称号

 

とりあえずContributorを目指すか・・・・。

「Cast 1 upvote」は、自身で他のユーザー1人を支持すれば満たされます。

「メダル」を取得するには?

コンペでメダルをもらえる数は、コンペの規模によって変動します。

0~99チーム 100~249チーム 250~999チーム 1000チーム以上
Bronze(銅) 上位40% 上位40% 上位100人 上位10%
Silber(銀) 上位20% 上位20% 上位50人 上位5%
Gold(金) 上位10% 上位10人 上位10人と0.2% 上位10人と0.2%

 

ざっとコンペの参加チーム数を確認すると大半は1000チームを超えています。

つまり「上位10%」に入らない限り、銅メダルも貰えないようです。

私のように入門コンペすら最高で「Top 49%」の人は一生無理では・・・?

想像以上に厳しいです。

「コンペティションの種類」を確認する

コンペティションの種類によってはメダルは貰えないようです。

例えば「InClass」や「Playground」や「Getting Started」コンペではメダルはもらえません。

Common Competition Types

種類 立ち位置 メダル
Featured 困難で一般的に商業目的の予測問題を提起する本格的な機械学習課題 あり
Research 特集された競技問題よりも実験的な問題 あり
Getting Started 初心者がまずやるべき。チュートリアル なし
Playground 比較的単純な機械学習タスクを提供する競技。初心者が次に取り組むべきもの なし

 

私が今まで参加した3つのコンペティションは「Getting Started」です。

次に「Playground」がありますが、こちらもメダルは貰えません。

Other Competition Types

種類 立ち位置 メダル
Recruitment 企業が企画した課題の機械学習モデルを構築 なし
Masters プライベート及び招待性コンペ あり
Annual 年2回の競技大会 あり

 

こちらは特殊なコンペティションです。

メダルが獲得できるコンペか否か確認する

コンペのトップページの「Tiers」部分の表記で確認できます。

例えば、メダルが獲得できるコンペでは、次のような表記です。

一方で、メダルが付与されないコンペでは、次のような表記になっています。

「ポイント」を取得するには?

基礎点として100,000点配られます。ここから参加チーム数、順位、自チーム人数によって、0~1の係数がかかって最終的な獲得ポイントが決まります。

ただしTierに比べあまり重視されることはありません。

己(自身のスキル)を知る

エンジニア活動からも退き、昇格争いからも負けた大手企業の社畜です。

年末年始に他の日本語サイトを見ながら試行錯誤してKaggleの「Getting Started」のランキングは次の通りです。

全然駄目だよね。

そもそも知識もスキルも低いよね。

更に平日は時間が無い・・・・

どうしよ。

Kaggleで上位に入るためには?

セミナーでも受講するか・・と思いましたが、新しいコンペに取り組むごとに本や論文からのinputは必要とのことです。

また、上位の人はたくさんのモデルをうまく組み合わせている(アンサンブルさせている)ようです。

こんなの自分では気づけないよね・・・

 

と思って調べてましたが、フォーラムを見ずに上位を狙うのは「上級者の遊び方」と言い切ったサイトがありました。

つまり、「ディスカッション」と「カーネル(kernel)」はupvoteが多いものを中心に出来るだけ多く目を通す事が上位に上がれるコツのようです。

全く使っていませんでしたが、kaggleには「カーネル(kernel)」という機能があります。

そのコンペで、こういうコードをかいたらうまくいった!

といったような情報共有をしてくれるものです。

先人の知恵を生かしながらコードを書いて行くことでよりスピーディーにスコアを上げることができます。

おすすめの検索方法は、次の方法で絞り込む事だそうです。

competitonページトップ>Kernels>Sort by Most Votes 、Languages→Python、Types→Notebook

 

なお、上位を目指すにはディスカッションやカーネルで議論・公開されている以上のモデルを作る必要があります。

ディスカッション・カーネルでは上位の人や強い人が、そのコンペに関連するとても有用なことを共有し、コンペ参加者はその情報をアレンジして自分のモデルに取り入れています。

上位入賞者はコンペ締め切り間近になると、睡眠時間を削ってkaggleをやるそうです・・・。

まとめ

新年の目標に「Kaggleで銅メダル」と書きましたが、これを狙うと一年間をこれだけに没頭する必要がありそうです。

しかも次のようなコメントもあります。

銅メダルは入るための基準がコンペによってまちまちな印象があるので、これを目指すというのはあまりお勧めしないかも。
どのコンペでも大体誰か優しい人がbeat the benchmark(以下btb)と言われる、基本的なモデリングを行ったSolutionをKaggle Kernelに上げてくれるのですが、銅メダルを目指すよりは、btbを自力で超えられる力をつけるということを目指して結果として銅メダルなどがついてくる方が良さそう。

[引用] 門脇大輔氏のBlog(Kaggle Competitions Master)

個人的に、Top40%以上をコンスタントに取得できるようになれば、自然と機械学習・データ分析の実力はついている気がします。

タイトルとURLをコピーしました