Kaggle Expert(カグルエキスパート)になれました!

Kaggle

2024年12月19日に終了したCMIコンペ(Child Mind Institute — Problematic Internet Use)で3559チーム中186位で銅メダル🥉を獲得しKaggle Expert(カグルエキスパート)になれました。

この記事では、主に私の場合の「どうやってKaggle Expertになれたか」などについて、色々と長文で書いていこうと思います。

結論「運8実力2」

Kaggleを始めたのは5年前の2020年頃で、そこそこしっかり取り組んだり、飽きたりを繰り返してここまで来ました。

これまでに8つのコンペに参加し、直近のものについては以下のような成績でした。

ICRコンペで初めてメダルを獲得しました。

これにはエピソードがあって、このコンペ、序盤にサンプルの重みを調整するコードを書いて提出した後、飽きてずっと放置していたんです。

そしたら、ある日突然Kaggleから「銀メダル🥈獲得おめでとう」というメールが届いて、全く身に覚えがない・・・

よくよく調べてみると、どうやらこのICRコンペは「おみくじコンペ(結果が運に大きく左右されるコンペ)」だったようで、大きなシェイクがあり、私の順位はパブリックの1778位からプライベート23位まで上がっていました。

事情が分かるまでは、「誰か私のアカウントを不正利用してメダル取ってんのか」と疑ったりしていました。

まあ、とりあえず運が良かったおかげで1枚目のメダル、それも銀メダル🥈が取れたわけです。

これが転機になりました。

というのも、メダルをあと1枚取ればKaggle Expert(カグルエキスパート)になれるわけです。

俄然モチベーションが上がり、その後いくつかのコンペに高いモチベーションで挑むようになりました。

そして、最近終了したCMIコンペ、どうやらこれも「おみくじコンペ」だったようですが、運良く銅メダル🥉を獲得し、Kaggle Expertになれました。

ただ、このコンペ、おみくじコンペとは言われていますが、個人的にはディスカッションにもパブリックリーダーボードのスコアが過学習していることはコンペ中にも言われてましたし、それを考慮したソリューションを出す必要性は理解していました。

なので、個人的には、おみくじコンペとは言われていますが、実力も関係あったと信じたい。

コンペの取り組み方など

私はとにかく焦るのが嫌いなので、参加するコンペを決める時は、残り期間で並び替えて、2〜3ヶ月猶予があるものから選んでいました。

また、本当にスローペースで取り組んでいたので、目標は低く、最初のうちは「興味のあるコンペを素早く選別できるようになるために英語に慣れる」くらいのことを目標にしていました。

最近はGoogle翻訳などの精度が高いですが、私は信条としてなるべく英語は自力で読みたいので、Google翻訳などを利用しつつ、英語の勉強の比重は大きめでKaggleに取り組んでいます。

残り期間が十分にあるコンペをフィルタリングできたら、1つ1つコンペ概要の英文を読んでいきます。

そして、興味のわくコンペがあれば、ルールも読み参加します。ルールは毎回のコンペで共通部分が多いので、何回か読むと慣れます。

私はコンペ概要もルールを読む時もなるべく英語を理解するようにしますが、英語学習のコツとして、英語は読みたいor読む必要のある英文を教材とするのが近道です。

分からない単語は、意味の推測などせず、速攻でGoogleで「prediction 意味」などでググって調べましょう。Googleの良いところは、1番よく使われる意味が1番最初に出てくるところです。

ちょっと理解の浅い英単語は、下のような「関連する質問」をいくつか開いて読んでみると理解が深まります。

英語なんて翻訳ソフトを使えば十分だと思う方も多いかもしれませんが、万が一、いやこれを目標にはしているのですが、入賞した時に、賞金を受け取るためには英語でウィナーコール(英語で解法をプレゼンする)をしなければなりません。

その練習も兼ねていますし、また、英語を読みまくっていればTOEICなどの点数も上がって将来役立ちそうだなー、という目論見も少しあります。

コンペの取り組み方の話ですが、コンペページの概要タブやデータタブ、コードタブ、ディスカッションタブを、どれか1つだけ読み込むのではなく、バランス良くどれも読み込むのが良いと思います。

というのも、ディスカッションで議論されている手法を、いくらディスカッションを追って理解しようとしても理解できないことがあるからです。

そういうときは、コードタブでその手法を実装しているコードを探して、少しずつ実行して理解すると理解できることがあります。

その逆もしかりで、カーネル(コード)だけを読んでいても理解できない時は、ディスカッションにヒントor解説があったり。

とにかく、変にディスカッションだけをとにかく読むみたいなことをせず、概要タブやデータタブを含めていろんな情報を参考にし、コンペの理解を徐々に深めることが大切だと思います。

また、自分で実装することも重要です。最初は他の人のコードを写経するだけでも勉強になります。

Kaggle初心者の方で、コードタブに公開されている他の人のコードが理解できない場合、私もそうでしたが、まずはコードに慣れて他の人のコードがある程度読めるようになる必要があります。それを一旦目標にしましょう。

pandasなどのライブラリには早めに慣れると良いですが、私が個人的にオススメする教材はKaggle公式のpandasコースです。(下のリンク)

英語ですが、手早くKaggleのためのpandasの使い方を学ぶことができます。

また、コンペの順位を手っ取り早く上げる方法として、公開されている高スコアカーネルをコピーしてそのまま提出する方法がありますが、私は個人的にあまりオススメしません。

理由としては、一度高スコアカーネルを提出してしまうと、それ以降スコアを上げることが難しくなってしまうからです。

Kaggleの醍醐味は自分で考えた改善策を実装して、スコアを上げ、順位を伸ばすことだと思います。コンペ序盤で高スコアカーネルを提出すると、それ以降なかなかスコア改善できず飽きてしまいます。

私は過去のコンペでそういうことがありました。

なので、なるべく提出するコードは、他のカーネルを参考にしても、自力で実装したコードが良いでしょう。

テーブルコンペ

最近はテーブルデータを扱うテーブルコンペは減ったと聞いてましたが、私が参加した直近2つのコンペがテーブルコンペだったので、また状況が変わりつつあるのかもしれません。

ここからは、参考になる本なども紹介しようと思います。

テーブルコンペに参加するのであれば、下の本は必須です。

この本はほぼテーブルコンペのみを扱った内容です。ただし、Kaggleコンペの一般的な取り組み方に関することは十分書いてあります。

オススメの読み方は、一旦ざっと全体を読んで、Kaggleコンペに参加するたびに関係するところを読み込んでいくと良いでしょう。

コンペの評価指標に関する章は、参加しているコンペの評価指標のところを毎回詳しく読んでいくと良いでしょう。

最初から全ての評価指標を理解する必要はありません。

テーブルコンペ以外

私が参加したUBCコンペは画像を扱うコンペでした。

このような非テーブルデータの場合、深層学習(ディープラーニング)の出番です。Kaggleでの深層学習を解説した本としては次の本がベストです。

この本はテーブルデータのことはほとんど書いてありませんが、代わりにKaggleでディープラーニング(深層学習)をする場合のテクニックについてたくさん書いてあります。

この本も、一度ざっと全体を読んで、コンペに参加する都度、コンペに関係する部分を詳しく読んでいくと良いでしょう。

その他オススメの本

この本には上位Kagglerのインタビューがたくさん載っています。

Kaggleのコンペに参加するたびにリーダーボードの上位にいる人のインタビューがあれば、この本で読んでみると、その人への親近感が湧いて楽しいです。

この本は、この記事の執筆時点でまだ発売されてないのですが気になったので紹介します。

この本は実験管理についての本ですが、実験管理について話します。

Kaggleで自分のアイデアの1つを試し、スコアがどうなるか検証することを実験と呼びます。

基本的にKaggleではこの実験を繰り返しますが、煩雑に管理していると、何が何だか分からなくなります。

私は今のところ、wandbというサービスを用いた実験管理に落ち着いています。

wandbについて詳しくはここでは解説しませんが、実験管理の重要性について気づいてきたら、ぜひ使ってみてください。

この本はwandbについて解説されているようなので個人的にも読んでみたいなと思った次第です。

ぜひ見て欲しいコンテンツ

以下の記事はKaggleをやる上でとても参考になるので読んで欲しいです。日本のTOPカグラーの小野寺和樹のインタビュー記事です。

この記事内の、コンペ後半になると100回試行錯誤して1回当たる感じになる、という言葉は私は肝に銘じています。数回試行錯誤しただけでは結果は出ない・・・

もう一つ、これはYouTube動画ですが、以下の再生リストの動画もKaggleの雰囲気を掴むのに有用です。

こちらも日本のKaggle GrandmasterのTakami Satoさんが作られた動画です。

コメント

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