この記事ではKaggleコンペの取り組み方の参考例を共有します。
実際に僕の受講生もこのとおりにKaggleに取り組んで、
- 5ヶ月でKaggle銅メダル獲得
- 3ヶ月で初心者向けコンペ上位10%
など、短期間で実績を出しています。
「必ずこのとおりに進めないといけない」というわけではありませんが、1つの指針として参考にしていただければと思います。
- コンペ内容の確認
- ベースラインの作成
- EDAを実施する前に仮説立案
- 仮説を「1つずつ」実行して結果の検証
- EDA、仮説立案、Discussionの参照
- 施策の実行と結果の検証
- 思いつく仮説を実行できたらハイパラチューニング
- 別モデルの検討 or アンサンブル実装
- ⑧まで着手したら終わったら他の人のNotebook参考
- 取組中のコンペ以外の情報ソースを使う
ステップ①:コンペ内容の確認
まずはコンペ内容を確認します。
- どんなデータが入っているのか
- 目的変数は何か
- 評価指標は何か
この辺りの基本的な情報を収集しましょう。
ステップ②:ベースラインの作成
コンペの概要を把握できたら、まずはベースラインの作成から始めます。
いきなりデータの可視化や特徴量の作成はおこないません。
まずはベースラインを作成することから始めてください。
なおベースラインを作成するときは、以下のポイントがあります。
- テーブルデータならLightGBMを使いましょう
- ハイパラはデフォルト値で良いです
- とりあえずLightGBMを使えばある程度の精度は出ます
ただし上記はテーブルデータのコンペに参加することを前提としています。
画像やテキストの場合は、そもそもモデルを組むためにベクトル化・標準化など前処理が必要になります。
ステップ③:EDAを実施する前に仮説立案
ベースラインを作成できたら、EDAを実施する前に仮説立案から始めましょう。
それはなぜかというと、探索する目的がないEDAは実施する意味がないからです。
いきなりグラフで可視化などはせず、
- こうすれば精度が良くなるのではないか?
- こういう特徴量を作成すれば精度改善に寄与するのではないか?
などなど、仮説を立ててみましょう。
なおこの段階では、特徴量に関する施策のみ考えれば大丈夫です。
モデルチューニングはあとのフェーズでおこなうので、
- 特徴量の作成
- 欠損値の穴埋め
- スケールの変更(標準化、正規化、対数変換)
などを考えるようにしてください。
ステップ④:仮説を「1つずつ」実行して結果の検証
次にステップ3で建てた仮説を「1つずつ」実行して検証していきます。
仮説実行の粒度は場合にもよりますが、分析コンペであれば1つずつ実行して精度を確認するのがおすすめです。
まとめて実施してしまうと、何が精度改善に寄与したのか分かりづらくなってしまうので、ステップ3で立てた仮説は1つずつ実行していきましょう。
ステップ⑤:EDA、仮説立案、Discussionの参照
ステップ4を実施する過程、あるいはステップ4を実施したあとで、大きく精度が改善されたり、もう少し詳しくデータの理解を深めたくなったりするはずです。
このフェーズまで来たらEDAを実施して、更なる仮説立案を試みてみましょう。
また自分で思いつく仮説がなくなったら、このタイミングでDiscussionを参照するのもおすすめです。
仮説が思いつかないということは、コンペで取り扱っているデータに対するドメイン知識が不足している可能性があります。
ほとんどのコンペでは、Discussionでドメイン知識について書かれた投稿が存在するので、ぜひチェックしてみましょう。
また特徴量を含む精度改善のアイデアが見つかったり、過去に開催された類似コンペの情報が見つかったりします。
Discussionは精度改善の宝庫なので、ぜひ確認してみてください。
※余談ですが、僕も実務でデータ分析するときKaggleのNotebookやDiscussionからアイデアを頂戴したことが多々あります。
ステップ⑥:施策の実行と結果の検証
ステップ5で新しい仮説を立案できたら、施策を実行して結果を検証していきましょう。
このとき各施策ごとに精度がどれくらい改善/改悪したのか、Excelやスプレッドシートにまとめて分析管理しておくと良いです。
精度改善した施策を一覧で観れると、またそこから新たな仮説が思いついたりします。
ステップ⑦:思いつく仮説を実行できたらハイパラチューニング
特徴量まわりで思いつく施策を試せたら、いよいよモデル側の変更をおこなっていきます。
まずは簡単に実施できる以下の施策を試してみましょう。
- LightGBMのパラメータ(ハイパラ)を変えてみる
- trainとtestの割合を変えてみる、CVの切り方を変えてみる
- CVの分割数を変えてみる
などなど、小手先ではありますが、精度改善されるケースがあります。
なお、ハイパラチューニングで大幅に精度改善することはないのと、ある程度自動で計算できてしまうので、あまり時間をかけずネクストステップに進むのがおすすめです。
ステップ⑧:別モデルの検討 or アンサンブル実装
LightGBMに関する調整が完了したら、次に別モデルの検討やアンサンブルの実装をおこなっていきます。
具体的なモデル候補は次のとおりです。
- 他の勾配ブースティングツリーモデル(XGBoost、CatBoost)
- ニューラルネットワーク(Simple NN、TabNet、TabPFN)
- 線形モデル(Lidge、Rasso、ElasticNet)
初手はLightGBMで良いですが、場合によってはXGBoostやCatBoostなど、他の勾配ブースティングツリーの方が精度改善に寄与する場合があります。
また複数モデルを使ってアンサンブルすると予測精度が向上する可能性が高いです。
多くのKaggleコンペでは、「計算時間が9時間以内」と制約が決められているので、計算時間が間に合う範囲でモデルを追加してみてください。
ステップ⑨:⑧まで着手したら終わったら他の人のNotebook参考
他モデルの検討やアンサンブルも実装できたら、現在スコアの高いNotebookやDiscussionを参考にして、さらに精度改善できないか検討してみましょう。
まずは自分で着手してみて、そのあと他の人のコードを参考にすれば、どこに差分があるのか分かりやすいはずです。
ここまで忠実に分析を進めていけば、意外と銅メダル圏内は到達できます。ぜひ頑張ってみてください。
ステップ⑩:取組中のコンペ以外の情報ソースを使う
ステップ9まで着手したら、取り組み中のコンペ以外の情報ソースも使ってみましょう。
特に効いてくるのが、過去に開催された類似コンペの上位解法です。
例えば株価予測のコンペであれば、過去に開催された株価予測のコンペが参考になります。
余談ですが、自分の業界・業務と近しいコンペを見つければ、そのまま実務で活用できるアイデアが見つかったりします。
僕も実務に着手するうえで、似たようなタスクのコンペを参考にして分析を進めたことが多々あります。
その他にも、以下のような書籍を参考にするのも効果的です。
また本資料の作成時に販売していないので中身を確認できていませんが、事例で学ぶ特徴量エンジニアリングも参考になりそうです。
ここまでしっかり着手すれば、銅メダルは確実に獲得できると思います。
まとめ
というわけで、本記事ではKaggleの取り組み方10ステップを紹介してきました。
このとおりに進めなくても大丈夫ですが、必要なアクションは網羅してあるので都度見返してみてください。