Kaggle初心者がCompetitions Expertになるためにやった4つのこと
今年の3月頃から同僚とKaggleを始めて、つい最近2つめの銅メダルを取りKaggle Competitions Expertになりました。
Kaggleは世界規模のデータサイエンスコンペティションに参加できるプラットフォームです。Kaggleを始めてみたものの機械学習エンジニアの経験などはないため、どう戦っていけばいいかわからないことだらけでした。
今回の経験で感じたことが同じようにKaggle興味ある・頑張りたいなと思っている方の参考になればうれしいと思い、体験談の1つとしてこちらの記事に残します。楽しんで頑張っていきたいですね 💪
自分たちについて
まずは自分がどのような人間か簡単に共有しておきます。
一緒に参加したメンバー
・Rが好きすぎてRでJVMを実装したエンジニア
・ ふだんSQLときどきPythonなデータアナリスト
・ RとExcelに fall in love なデータアナリスト
1度目と2度目のコンペティションで少しメンバーは違いますが、どちらも同僚とチームを組んで挑みました。全員機械学習エンジニアやデータサイエンティストではないですが、何かしらのプログラミング言語が書ける + 軽い統計の知識はある状態です。
過去に参加したコンペティション
具体的な銅メダルのとり方の前に、まずは私たちが実際にチャレンジした2つのコンペティションについて紹介します。
Kaggleでは銅以上のメダルを2つ取ることでKaggle Competitions Expertになることができます(Kaggle Progression System)。今回以下のコンペティションを経てExpertになることができました。
1. H&M Personalized Fashion Recommendations
ファストファッションブランド「H&M」が開催した、顧客が次に買いそうな商品をリコメンドするというコンペティションです。初めてのKaggleということもありKaggle CoursesでPythonをざっと学んでから挑みました。
ルールベースで作成したモデルでもある程度高いスコアが取れてしまい、あまり機械学習的なことができずに終わったコンペティションでした。
2. American Express - Default Prediction
アメリカン・エキスプレスが開催した、顧客がデフォルト状態(クレジットカードの支払いが極端に滞った場合に発生する状態)になるかどうかを予測するコンペティションです。
Rでどこまで戦えるんだろうというのが気になり、最初から最後までRで挑戦したコンペティションです。結構戦えました。DuckDBやクラウド環境・機械学習モデルの導入など、1度目のH&Mコンペティションと比べれば随分成長してそれらしいことができるようになってきました。
銅メダルを取るために必要だと感じたこと
Kaggleに参加してみて初学者が銅メダルを取るのに必要、あるいはあったほうがいいと感じたものを4つ挙げてみます。
1. ある程度のプログラミングスキルを身につける
データの前処理や機械学習モデル作成のためにどうしても必要な要素です。最近はオンライン上に様々な教材があるので、プログラミング未経験の方はまずそちらを活用してみるのがいいかなと思います。
PythonでKaggleに挑みたい方 💪
Kaggle上にPythonの入門コースがあります。せっかくなのでまずはそちらで基本的な文法やデータの操作方法などについて学ぶことをおすすめします。
・ Kaggle Courses https://www.kaggle.com/learn
RでKaggleに挑みたい方 💪
残念ながらKaggle上にはRの教材が乏しいため、別のサイトや本で学びましょう。オンラインにも教材はありますが、日本語で書かれている本も一緒に載せておきます。
・ オンラインでRを学ぶ (基礎・tidyverse)・ 本で学ぶ(Rユーザのための RStudio[実践]入門)
・ Tidymodelsでのモデリング基礎(Tidymodels Get Started)
2. Kaggleや機械学習についての基礎知識を得る
まずはKaggleのコンペティションがどのように進んで行くのか、どうやって予測を提出(submit)するのか、基本的なルールを学ぶ必要があります。また、機械学習の流れや手法も同時に学んでいくといいでしょう。以下の本はKaggleに参加する上でとても助けになりました。
📖 PythonではじめるKaggleスタートブック
Kaggleを始める敷居をさげてくれる本。こちらを一通り読んでコードを動かしてから実際のコンペティションに参加しました。
📖 Kaggleで勝つデータ分析の技術
Kaggleで扱われる手法が幅広く網羅されており、とくに最初はずっと手元に置いて置きたい本。一通り読んでから始めるとスムーズだろうけど、それなりのボリュームがあるのでコンペティションと並走してもよさそうです。
これらの本を読み進めると銅メダル獲得のための下地が整うと思います。
3. DiscussionやCodeをよく読む
他のコンペティション参加者が自身で試したことや知見をDiscussionやCodeタブで共有してくれます。同じ問題を解いている方々の貴重なアドバイスなので、特に以下のものを中心に可能な限り目を通すようにしました。
4. 仲間を探す
1人で参加するのももちろんいいですが、仲間がいることで以下のようないいことがありました。
チームを組むときにコンペティションに参加する目的を話し合い、メダルを取ることではなく「Kaggleを通して成長する」ということをメインに取り組むことにしました。もちろんメダルはほしいのですが、そのコンペティションに参加してよかったかどうかが全てメダルの有無で決まってしまうと、結果がよくなかったときにモチベーションを保ちにくくなると判断しました。成長に焦点を当てると、もしメダルが取れなかったときも成長という点で成果があるのでモチベーションを保ってKaggleを続けやすそうです。
課題と今後やりたいこと
2回目のコンペティションを経て成長を感じましたが、同時に改善点や学ぶべきこともたくさん見えてきました。何がわからないのかがわかってきてようやくスタートラインに立てたような気がしています。
現時点で今後やりたいなと思ってることを考えてみました。
1. 幅広いモデルを作成できるようになる
まだまだごく一部のモデルしか扱ったことがないため、他のモデルも構築してみたいです(CatBoost、ニューラルネットワーク、etc)。適切なハイパーパラメータの調整やモデル選択ももっとスムーズにできるようになりたい。
2. 理論的な部分を理解する
お恥ずかしながらよくわからず使ってるものもあるので、理論的な部分は学習していきたいです。
3. 最適なインフラ環境を追い求める
Vertex AI Workbenchを導入してみたもののそもそもNotebookじゃなくてもよいなと思ったりして現状が最善だとは思えなかったので、別の道を模索したいです。他の方がどこに落ち着いたのか気になる部分でもあります。
4. テーブル形式以外のコンペティションにも出てみたい
H&MもAmexもテーブル形式のデータが提供されるコンペティションだったので、興味惹かれるものがあればぜひ他の形式のコンペティションにも参加してみたいです。
「金メダルとれるかな、どきどき」になりたい
今は「銅メダルいけるかな、どきどき」してる日々ですが、理解を深めてそのうち銀・金メダルに手が届くように頑張りたいです。今のところすごく楽しく取り組めています。他の方も楽しんでKaggle生活を送れますように!
( *ˆoˆ* )