🥇
機械学習コンペで初めて金メダルを獲った話
皆さんおはこんばんにちは。
AcademiXというAIコミュニティに所属しているほきと申します。
今回Nishikaのコンペにチームで参加し、結果として8位になり金メダル🥇を獲得できました!
参加してみてよかったことうまくいかなかったことなどを書いておくのでこれから参加する方の参考になれば幸いです。
自己紹介
- 理系国立大学学部3年生
- 生体信号情報学の研究室に所属
といっても配属されたばっかなので何もしてない - コンペへの参加は2回目
- 1回目は Kaggleのfb3 で結果は上位51%(適当なノートをフォークして出しただけ)
- SIGNATEのBeginner限定コンペで7位になったことはあるけどあれは練習用なのでノーカウント
コンペ概要
- プラットフォーム : Nishika
- コンペティション名 : 睡眠段階の判定 〜”睡眠の深さを判別しよう”〜
- 利用データ : Sleep-EDF Database Expanded
- 評価指標 : Accuracy
- リンク : https://www.nishika.com/competitions/sleep/summary
コンペの流れ
- 参加登録&データをダウンロード
- チュートリアルの実行
- EDA
- baselineの作成
- チームマージ
- ディスカッションをしながらモデルのブラッシュアップ
- モデルが出揃ったらアンサンブル
- 最終サブミッションを決定
うまくいったこと
今回のソリューションはチームメンバーがまとめてくれたものがあるのでこちらをご覧ください。
- こまめにお互いの進捗を確認しながらの進行
- 基本的にはSlackを使ってやり取りをし、沼った時や重要な決定をするときはoViceを使ってミーティングをした
- Notionをつかって手法やスコアの管理をした(カラムはCV、LB、ベースモデルなど)
- 忙しい人はアイデア出し→余力のある人が実装など役割分担できていたのもよかった
- 多様なモデルの作成
- 5人いたので様々なモデルを作る事ができた→アンサンブルで活きた
- 1人では思いつかないものも多くあったのでチームのメリットをうまく享受できた
- アンサンブルの活用
- seed averagingと複数のモデルとのアンサンブルを試した
- 最終スコアがよかったのはアンサンブルしたものだったので重要性を改めて実感
- 最終サブミッションの適切な選択
- CVとLBの乖離や安心度など様々な項目からベストな選択をする事ができた
うまくいかなかったこと
- 論文のリサーチ
- SOTA論文のモデルを使わなかった
- 今回は上位がこぞって同じ論文を使っていたのでもっとリサーチすべきだった
- モデルの管理
- pyファイルでやっている人とipynbを使っている人が混在しており他の人のコードが実行しづらかった
- ソースコードを個人のGoogleDriveやGitHubで管理をしておりどこに何があるかわからなかった
- 人が読むことを考慮せずに書いたのでお互いコードの理解に時間がかかった
- コーディング力の不足
- コーディングができず論文からの実装を諦めたモデルがあった
- バグを出さずコーディングできたらもっと色々なことを試せた
- 適切な睡眠
- 深夜にコーディング→朝に結果確認を繰り返しており、睡眠コンペにも関わらず睡眠が犠牲になった()
まとめ
暫定4位からshake downしたり専門分野なのに入賞できなかったりと悔しい思いもありますが、コンペはとても楽しかったです!
最初はチームでの参加はタスクが分散できていいなくらいにしか思っていませんでした。
しかし、実際参加してみると色々な考え方を知る事ができてとても勉強になりました。
「自分の無知さに気づいてもっと勉強して強くならなければ」と思えたのでチームで参加してよかったと思います。
今回のチームメンバーは最初に紹介したAcademiXのメンバーです。
AcademiXではコンペへの参加はもちろん、勉強会や企業実践にも取り組んでいます。
興味のある方はぜひ参加してみてください!
また、コンペに出たり機械学習を勉強してみたいけど何から勉強したらいいかわからない方には、自分の記事で恐縮ですがこちらの記事が参考になると思います。
今後もコンペには参加していこうと思います。
当面の目標はKaggleでExpertになる事です。
最後になりますが、チームを組んでくれた皆さんありがとうございました!!
Discussion