Kaggle Masterになるまでを振り返る
はじめに
昨年10月からJDSCのインターンに参加している上原です。
この記事では私がデータ分析コンペを始めてからKaggle Masterになるまでを振り返ります。
自己紹介
筑波大学で経営工学(OR)を学んでおり、JDSCでは主にデータ分析、モデリング業務に従事しています。
データ分析コンペを始める以前はひたすらにポケモンをしていました。
Kaggleをはじめたきっかけ
“暇だったから”という理由が大きいです。
学部2年生になったタイミングでコロナが流行し、全授業オンラインとなりました。外出もできず、暇を持て余していたタイミングでKaggleに出会いました。
もともと競うことが好きということもありすぐにのめり込みました。
コンペに参加する準備
Kaggleを始めようと思った時点ではまともにプログラミングや機械学習に触れたことがなかった為、1か月程度基礎知識の勉強に費やしました。
また、このタイミングで統計検定2級も取得しました。
この時期に読んだ書籍は以下になります。
- 統計学入門 (基礎統計学Ⅰ)
- はじめてのパターン認識
- Python機械学習プログラミング 達人データサイエンティストによる理論と実践
- ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装
- Kaggleで勝つデータ分析の技術
コンペ歴
2020年10月: 初コンペ Nishika Jリーグプレイヤーの出場時間予測 42/456
サッカー選手の属性情報から、そのプレイヤーの年間出場時間を予測するというコンペでした。
上述した基礎知識の勉強と並行して1週間ほど参加しましたがなにもわからず、ひたすらハイパラ調整とアンサンブルをしました。
スタッキングでリークを起こしたのをよく覚えています。
スタッキングするときはoofでやるを胸に刻みました。
2020年11月: Probspace スパムメール判別 28/241
メール文からそのメールがスパムメールかどうかを予測するコンペでした。
自然言語を扱ってみたいと考えて参加しましたが、スコアの上げ方がわからずすぐに撤退してしまいました。
2020年12月: atmaCup#8 145/318
ゲームの属性情報から売上を予測するコンペでした。
順位は低かったもののこのコンペは非常に多くの学びがありました。
主催者が初心者向けの講座を開いており、杜撰だった特徴量管理や検証を見直すきっかけとなりました。
2021年1月: Signate 【学生限定】SIGNATE 22卒インターン選考コンペティション 28/237
クラウドファウンディングの募集文や属性情報から資金調達が成功するかを予測する自然言語×テーブルのコンペでした。
良い順位ではなかったものの、様々な特徴量を作成し、pandasに慣れることができました。
2021年3月: atmaCup#10 4/525(敢闘賞3位)
美術品の属性情報からどれくらい評価されたかを予測する自然言語×テーブルのコンペでした。
はじめてチームを組み、はじめて入賞することができた転機となるコンペでした。
直前に参加していたSingateでの経験やスタッキング、チームメイトとのディスカッションでスコアを伸ばすことができた時はものすごく嬉しかったのを覚えています。
2021年3月-5月: Kaggle初参加 Indoor Location & Navigation 15/ 1170 (銀メダル)
atmaCupで良い成績を残せた勢いで初めてKaggleに参加しました。
スマホのセンサーデータからショッピングモール内での位置でフロアを予測するコンペでした。
2か月程度は公開Notebookの調整やアンサンブル等で銀圏下位から中位をうろうろしていました。
その後、残り1か月のタイミングでチームマージをすることとなり、4人でコンペに取り組みました。
チームメイトとの議論で生まれた新たなアイデアでスコアが上がるのはとても楽しかったです。
最終的に15位で終了し、Kaggleで初めてのメダルを獲得することができました。
2021年5月-8月: Kaggle Google Smartphone Decimeter Challenge 5/810(金メダル)
Indoorが終わったタイミングで、屋外の位置推定コンペが開催されたのでIndoorのチームメンバーとそのまま参加しました。
このコンペはスマホのGNSSデータから位置を推定するというものでした。ホストから衛星測位のベースラインが与えられ、大半の参加者はそれに後処理を加えるというアプローチをとっていました。しかし、実際には衛星測位を自力実装するということが大事でした。
Indoorでチームを組んでいた2人と一緒に参加しました。直近で位置推定を行っていたこともあり、序盤から金圏をキープすることができました。
終盤、金圏にいた2人とチームを組み、最終的に5人チームで5位を獲得することができました。
序盤、3人でのチームは簡単にスコアの上がる後処理に注力し、難しい衛星測位にはほとんど取り組んでいませんでした。
しかし、終盤チームを組んだ2人は初めから衛星測位を勉強、実装しており、コンペへの取り組み方を改めさせられました。
2021年9月-11月: Google Brain — Ventilator Pressure Prediction 19/2605(銀メダル)
このコンペは人工呼吸器のデータから肺の内圧を予測するというものでした。
これまで甘く見ていたスケーリングや損失関数、Optimizer等が大きくスコアに影響し、NNモデルを構築する上での学びが多くありました。
このコンペで銀メダルを獲得し、Kaggle Competition Masterになりました。
Kaggleで学んだこと
これまでKaggleは完全にゲームとして取り組んできましたが、Kaggleでの経験はJDSCのインターンでも非常に役立っています。
以下に、Kaggleを通して学んだことを挙げていきます。
検証
Kaggleは適切な検証ができていない場合に、ギャンブルとなってしまいます。そのため、コンペに取り組む際には検証方法について深く考えます。
信頼できるモデルを顧客に提供するという意味で、この経験は業務を行う上でとても力になっています。
分析
コンペで安定して上位に入るには、データ、タスクの特徴を見抜き、その特徴にあった方法を考える必要があります。
Kaggleを通して得た、分析、考察、実験のサイクルを繰り返す経験は業務でも非常に役立っています。
最後に
Kaggle Masterになれたものの、チームメイトに力よるところも大きくまだまだ力不足だと感じています。
今後はチームを組みつつもソロゴールドを獲得することを目標にコンペに参加していきたいです。
JDSCではデータサイエンスの力によって日本を変えたい仲間を募集しています!ご興味を持ってくださったらカジュアルにお話しましょう!(by tech blog 編集部)