✔️

Kaggle Grandmasterになるまで

2023/06/04に公開

はじめに

こんにちは、@s_shoheyです。
ここ数年目標にしていた、Kaggle Grandmasterになることができたのでこれまでの振り返りを書きたいと思います。

https://www.kaggle.com/iiyamaiiyama

日付
2018/09 アカウント作成
2019/03 コンペ初参加
2019/06 Expert
2020/12 Master
2023/03 Grandmaster

バックグラウンド

  • 情報系修士
    • 情報セキュリティ系の研究室
  • 新卒でSIerに入社
    • 転職前の数年で少しだけ画像系機械学習のプロジェクトに関わった
    • その後転職(後述)

Kaggle

Coursera

世間で流行しているらしい機械学習を私もやってみよう、ということでAndrew Ngのコースを始めました。2018/05に登録して半年程度で以下を消化しました。

英語に抵抗のない方の入門として今でもおすすめできると思いますが、最近ならより取っ付き易い入門用のコースや書籍があるかもしれません。

初参加 ~ Expert

2019/03 - 2019/06

せっかく勉強したし、Kaggleにでも出てみるか~という思いで参加を始めました。
公開カーネルに特徴量を自分なりに足してアンサンブルするぐらいでしたがなんとか銅メダルを2つ獲得してExpertへ。

Expertになった後にGPUマシンを購入しました(後述)。

コンペ 成績 メダル チーム Solution
PetFinder.my Adoption Prediction 666/2023 - ソロ -
iMet Collection 2019 - FGVC6 59/521 ーム -
iMaterialist (Fashion) 2019 at FGVC6 53/241 ソロ -

Expert ~ Master

2019/06 - 2020/12

銀であればかなり安定して取れるようになりました。ソロ志向でコンペに参加していましたが、ソロ金を目指すのは一旦保留してチームを組ませていただきMasterになれました。

この時期に競プロを始めました(後述)。

コンペ 成績 メダル チーム Solution
Open Images 2019 - Instance Segmentation 14/193 ソロ -
Open Images 2019 - Visual Relationship 31/200 ソロ -
Peking University/Baidu - Autonomous Driving 14/864 ソロ -
Global Wheat Detection 76/2245 ソロ -
Google Landmark Retrieval 2020 15/541 ソロ -
Google Research Football with Manchester City F.C. 7/1138 e-toppoさん Solution

Master ~ GrandMaster

2020/12 - 2023/03

Masterになってから本格的にGrandmasterを意識し始めました。まずはチーム金を4枚取ることを目標に自分から声をかけてチームを組ませて頂くことが増えました。

Shopeeが終わったあたりで転職(後述)して、半年程度Kaggleを休止。転職や引っ越し等が終わって再開し、社内でチームを組んで2枚金を獲得してGMリーチになりました。長く苦しいソロ金の旅を覚悟していましたが、あっさり2ヶ月後のLECRコンペでGrandmasterになれました。

コンペ 成績 メダル チーム Solution
Rock, Paper, Scissors 47/1662 ソロ -
Santa 2020 - The Candy Cane Contest 17/788 ソロ -
Hungry Geese 11/875 terekaさん, kibunaさん Solution
Shopee - Price Match Guarantee 15/2426 ソロ Solution
Happywhale - Whale and Dolphin Identification 37/1588 チー -
Image Matching Challenge 2022 41/642 yu4uさん, Camaroさん, fam_taroさん, arutema47さん -
Foursquare - Location Matching 11/1079 sakusakuさん, heartkillaさん, simamumuさん, dolicasさん Solution
G2Net Detecting Continuous Gravitational Waves 8/936 sakusakuさん, heartkillaさん, hitonanodeさん Solution
Learning Equality - Curriculum Recommendations 6/1057 ソロ Solution

参加スタイル

  • 序盤
    • 開始1-2週間で参加することが多い
    • Discussionは返信も含めて全部読む
    • 関係するコンペのSolutionは全部読む
    • Notebookはupvoteが多いものとスコアが高いものは流し読みをする
    • 序盤は公開カーネルをベースにサブしたりするが、早い段階で全て書き直す
    • その日のサブが余っていればprobingをする
    • EDAは気になる点が出てきたら都度実施する
  • 中盤
    • その時点での全力(特徴量全部込みでアンサンブルなど)を開始一ヶ月ぐらいの早い段階でサブして、銀上位~金下位を取りに行くことが多い
      • 今の方向性の限界を知れる
      • モチベーションアップ
      • チームを組みやすい
  • 終盤
    • 学習に時間がかかるコンペの場合には終了までの実験計画を立てる
    • Solutionは予め書いておいて、終了後早めに投稿をする
      • 早めに書き始めると「そういえばこの実験してなかったな」とかに気づけるので良い
      • 最初の方の銀を取ったコンペで全くSolution書いていなかったことを結構後悔しています。自身のポートフォリオにもなるので皆さんもドシドシSolutionを書いていきましょう

その他

  • 実験管理等
    • 実験管理はスプレッドシート
    • exp000.pyスタイル
      • 各実験はコードを共有せず完全に独立している、という意味です
    • 考察やメモなどはNotionやScrapboxに書き溜め
    • コンペ終了まで破綻しなければOK
  • コンペを選ぶ基準
    • 単純に興味のある分野
    • ホストがDiscussionで活発に質問への回答、データの補足などをしている
    • shakeしなさそう
      • CV-LBの相関
      • テストのサンプル数

Kaggleに参加して良かったこと

  • 楽しい
    • アイディアや実験がうまくいってLB更新できた瞬間が一番楽しいです
  • 新たな学び
    • コンペ参加を通じて、これまで全く触れたことのない分野や手法を学べていると思います
  • 転職で役立った

GPUマシン

Kaggle kernelだと実行時間制限があることから、GPUマシンを買うことにしました。2019/07にBTOで購入。メモリはたまに不足を感じるので128GBにしておくべきでした。

  • GPU: RTX 2080ti
  • CPU: Core i7-9800X
  • メモリ: 64GB
  • Ubuntu + Docker Kaggle image

2021/12にRTX A6000を購入してGPUを差し替えました。Kaggleライフが大幅に快適になったので、皆さんもA6000を買いましょう。

競技プログラミング

https://atcoder.jp/users/s_shohei

2020年頃に開始しました。Pythonで参加しています。
約半年でAtCoder水色になりましたが、そこからは停滞しています。どこかで時間を見つけてもう少し上を目指したいです。

良かったこと

  • 楽しい
  • 転職で役立った
    • AtCoderJobs
    • コーディングテスト
  • Kaggleで役立った
    • ダイクストラ法やUnion-Findなどのグラフ系はたまに使います

転職

2021/05頃に活動開始。当時はMaster(金2, 銀8, 銅2)でした。Kaggle MasterあるいはKaggleと競プロに取り組んでいる姿勢は高く評価してもらったと思っています。数社から内定を頂きましたが、AtCoderJobs経由で応募した現職に決めました。2021/12に入社。

今後

  • Kaggle
    • 継続して取り組む
    • NotebooksやDiscussionでも貢献したい
  • 競技プログラミング
    • アルゴ青を目指す
    • ヒューリスティックコンテストに取り組む

終わりに

チームを組んでいただいた皆様、DiscussionやNotebookで有益な情報を提供して頂いた皆様のおかげでGrandmasterになれました。今後もKaggleには参加し続けたいと思っているのでよろしくお願いします。

Discussion