Kaggle Grandmasterになるまで
はじめに
こんにちは、@s_shoheyです。
ここ数年目標にしていた、Kaggle Grandmasterになることができたのでこれまでの振り返りを書きたいと思います。
日付 | |
---|---|
2018/09 | アカウント作成 |
2019/03 | コンペ初参加 |
2019/06 | Expert |
2020/12 | Master |
2023/03 | Grandmaster |
バックグラウンド
- 情報系修士
- 情報セキュリティ系の研究室
- 新卒でSIerに入社
- 転職前の数年で少しだけ画像系機械学習のプロジェクトに関わった
- その後転職(後述)
Kaggle
Coursera
世間で流行しているらしい機械学習を私もやってみよう、ということでAndrew Ngのコースを始めました。2018/05に登録して半年程度で以下を消化しました。
- https://www.coursera.org/learn/machine-learning-course
- https://www.coursera.org/learn/neural-networks-deep-learning
- https://www.coursera.org/learn/competitive-data-science
英語に抵抗のない方の入門として今でもおすすめできると思いますが、最近ならより取っ付き易い入門用のコースや書籍があるかもしれません。
初参加 ~ 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を買いましょう。
競技プログラミング
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