見出し画像

Kaggleソロ参加だった自分に伝えたい、チームで挑むとよい5つの理由

こんにちは、noteでデータアナリストをしているrinascimentoです。

2022/2よりKaggleを再開し、このたび Kaggle Competitions
Expert
となることができました 🙌

H&M Personalized Fashion Recommendations」「American Express - Default Prediction」という2つのコンペティションで銅メダル(上位10%の成績)を獲得してExpertとなれたのですが、両コンペとも社内メンバーと「チーム」を組んで獲得できたものです。

本noteでは、ソロ参加でなかなかメダルを取れなかったわたしが、なぜチームを組んでメダルが取れたのか、振り返ってみたいと思います。

※ (↓)チームメンバーのKaggle noteはこちら 👏 


ソロ参加時代に感じていた課題

2019年に”機械学習”という新しい分野に興味をもち、Kaggleにはソロで2回ほどチャレンジしました。どちらも上位30-40%ほどで停滞してしまい、メダル圏(上位10%以上)には達せず悔しい思いをしました。

なぜメダル圏に届かなかったのか、ざっくり分析すると「コーディング力」と「Kaggleを続ける力(モチベーション)」の2つが大きく足りていなかったと感じています(もちろん、ほかにも色々あります…!)


コーディング力

コーディング力」については、KaggleきっかけでPythonを独学で学んでいたこともあり、コードを読んだり書いたりした量・経験がどうしても足りず、2020年の1年間ほどは「AtCoder」という競技プログラミングでPython修行(?)をして、最低ラインをキャッチアップしました。

(↓詳しくは以下noteに書いています)


Kaggleを続ける力(モチベーション)

もう1つの「Kaggleを続ける力(モチベーション)」が、個人的には鬼門でした。
Kaggleはコンペ期間が2-3ヶ月と長く、継続的にコンペ情報をキャッチアップしながら、スコアが上がらなくても粘り強く実験を積み重ねていくことが要求されます(かつ、社会人ならそれを土日や平日夜にやる)

ソロ参加だと、そのあたりの継続してコンペに向き合い続けること「自体」が難しく、ほかの興味やライフイベント等に流され、どうしても途中でギアが落ちてしまうことが正直課題だなと感じていました。


※ Kaggleをなぜ続けるのか?といった議論は、以下noteなど、Kaggle界隈でもたびたび話題のテーマかと思われます。Kaggleが強い人ほど「ネットゲーム」として楽しみながら継続している側面が強いようです。わたしも直近コンペで、ようやくその感覚が少しだけわかってきた気がします 😇


チームを組むとよい5つの理由

上記のような背景のなか、とあるきっかけから社内メンバーとKaggleやろうぜ!という話になってチームで取り組んだところ、「Kaggleを続ける力(モチベーション)」がうまく補え、チームメンバーや運にも助けられて、念願のメダルを取ることができました。

ここからは、チームを組むことが「Kaggleを続ける力(モチベーション)」にどう影響したのか、5つの視点でまとめていきたいと思います。


① わいわいと楽しみながら取り組める(喜び2倍、つらさ1/2倍)

チーム内のコミュニケーションは基本Slackのプライベートチャンネルで行っていたのですが、うまくいった実験も成果がでなかった実験も、カジュアルにコメントし合っていました。
うまくいったときはみんなで褒めあい、うまくいかなかったときはフォローし合う、といった具合で長い戦いを支え合いながら楽しめたことは、モチベーションを保つうえですごくありがたかったなと感じています。

うまくいかなくても、チームでリカバリー💪


②自分の興味あることに集中しやすい

スコアの高い機械学習モデルをつくる、という共通目標はありつつも、メンバーによって微妙に興味の対象が異なっていたのが、意外な気づきでした。
やるべきことは補完し合いながら、やりたいことを中心に行えたことも、特にKaggleを始めたての頃は、楽しく続けるコツだと思います(ゆくゆくは一人で全部できるようになることは前提)

▼メンバーによる興味の違い(イメージ)
・Aさん:Rでの機械学習ライブラリ調査、多様なモデル構築
・Bさん:評価指標の探求、特徴量探索
・Cさん:褒めてくれるSlackBotの作成、データへのdeep dive(EDA)

GitHub Projectsを使って、お互いのやりたいことが
重ならないよう、「見える化」しながら進めていました


③ナレッジ・情報をシェアし合え、効率的に取り組める

Kaggleは情報戦の側面もあります。コンペ内ではスコアを上げるためのさまざまな議論がなされており、参加者のなかで常識となっているテクニックや知見に乗り遅れると、相対的にスコアが振るわず、苦しい戦いを強いられることもあります。
そのようなコンペ内の知見や各自が調べた探索的データ分析(EDA)など、一人では手が回り切らないこともチームなら効率的に収集・調査してシェアできます。結果として、スコアも上がりやすくなり、モチベーションも維持できて助かりました。

メンバーの中には、得た知見をメンバー内だけでなく
Kaggle全体へ還元していた人も(強い!)


④単純にリソースUPし、スコアが上がりやすい

チームで取り組むと、頭数が増えるので実験できることも増え、結果としてスコアも上がりやすくなったこともメリットだと感じました。
特に最終盤でのアンサンブルは、各自の最強モデルを組み合わせたので、スコアが上がるか否かハラハラしながらみんなで見守るイベントとなりました。チームならではのお祭りのような行事で、あらためてメンバーと取り組むことの良さを実感しました。

各自のモデルをensembleできることも、
チームならではの面白さのひとつ


⑤よい思い出になる

数ヶ月間続くコンペは、いいことばかりでなくスコアが停滞したりうまくいかずチーム全体で士気が下がり気味な時期もありました。そこも含めて各自がいろいろ工夫をして、チームでコンペを走り切れたことは、なかなか味わえない貴重な体験となりました。
メダル獲得ができるとなお良しですが、共通の目標に向かってチームで議論し続けられた日々は、個人的にプライスレスだなと感じています。

ただ、やっぱりメダル取れるとうれしい
チームだと喜びあえることもGood


さいごに

ここまでKaggleをチームで取り組むメリットを書いてきましたが、大前提である「誰と組むか」も、非常に重要だと感じています。

本noteでは字数の都合上割愛しますが、以下あたりがポイントなのでは、とチーム内では話していました(特に下記を意識してチームを組んだわけではないですが、振り返ると大事だなと感じました)

▼チームを組むとき:気をつけること
・目標のすり合わせ(メダル目的、成長目的など)
・Kaggleのレベル感(同じレベルだと、やり切った感が実感できてよいか)
・各メンバーのモチベーションや協調性

▼チームを組んだあと:気をつけること
・「ほめ」大事
・自発的なアウトプット
・否定から入らずアドバイスとして伝える、といった配慮(Yes, but …)


さいごになりましたが、noteでは「Kaggle」で扱うようなデータ分析/データ活用に興味のあるメンバーを絶賛募集中です。noteで働くこと、noteの膨大なデータを扱うことに興味をもっていただけたら、お気軽にご応募お待ちしています!

※カジュアル面談もやっていき!💪 なので、お気軽にお声かけください〜


余談 :Kaggleしやすい社内制度ができました 🙌 

note社では、2022/9より新たな人事制度の1つとして、社員のテック領域の自己研鑽を後押しする「テックチャレンジ補助」という制度がはじまりました。

なんと年間12万円まで、技術関連の補助が支給されるというもの(エンジニアに限らず全社員対象)

KaggleコンペでGCPやColab Pro+などのクラウド環境を使い倒す、なんてことが会社のお金でできるようになり、さらにKaggleへ取り組みやすい環境が整いました。Kaggleも楽しんでみたい方のご応募、お待ちしています!🙌

↓ 制度の詳細は、ツイート内リンクをチェックください


この記事が気に入ったらサポートをしてみませんか?