はじめに
日々勉強中の初心者Kagglerです。
2025年に開催された 「Jigsaw - Agile Community Rules Classification」 コンペに参加し、154位に入賞して人生初の銅メダルを獲得することができました!
このコンペは以下のような特徴がありました。
- タスク:Redditコメントが特定ルールに違反しているかを判定するバイナリ分類
- 参加チーム数:2,445チーム
- 評価指標:column-averaged AUC(ルールごとにAUCを出して平均するマクロAUC)
- 難所:Trainデータには2種類のルールしかないが、Testデータでは6種類に増える(未知のルールへの汎化が必要)
「右も左も分からない状態」からスタートしましたが、生成AI(特にChatGPT)を参謀として活用し、泥臭く試行錯誤することでなんとかメダル圏内に届きました。
この記事では、「ほぼ初心者」でも銅メダルを獲得する上で実際にやったことをまとめます。
特に、 「どうやってAIと協業したか」「どうやってコンペを戦ったか」 という立ち回りの部分を中心に共有します。
1. コンペの概要と初期理解
まずは公式ページを読み込み、「データの形」 と 「評価指標」 を整理することから始めました。
データの構造
1行が「コメント × ルール」の組み合わせになっています。
-
body: Redditコメント本文 -
rule: 判定対象のルール(例:「No Advertising」など) -
positive_example: そのルールに違反している例(Few-shot用) -
negative_example: そのルールに違反していない例 -
label: 今回のタスクでは「このコメントはこのルールに違反しているか?」(0 or 1)
評価指標:column-averaged AUC
評価は column-averaged AUC で行われます。これはルールごとにAUCを計算し、その平均を取る指標です。
そのため、「特定のルールだけ極端に強いモデル」よりも、 「どのルールに対してもそこそこ強いモデル」 を作り、それらをアンサンブルすることが有利な設計になっています。
2. ChatGPTの「プロジェクト機能」で参謀を作る
コンペ開始直後、ChatGPTのプロジェクト機能を使って「コンペ専用チャット」を作成しました。これが今回の勝因の一つです。
プロジェクトに登録したもの
- コンペ概要・評価指標のテキスト(Overviewをコピペ)
-
データの定義(
train.csv/test.csvのカラム説明とサンプル数行) - 重要そうなDiscussionの要約
- ベースとなるノートブック
こうしておくと、新しいチャットを始めても 「Jigsawコンペで、fold設計を変えたいんだけど」 の一言で通じます。毎回コンテキストを説明する手間が省け、AIからの回答精度も格段に上がりました。
3. Public Notebookの活用と理解
まずはベースラインを理解する
「Code」タブでPublicスコアが高いノートブックをダウンロードし、ChatGPTにコードを読ませて理解しました。
- 「この前処理ブロックは何をしている?」
- 「なぜここでこの特徴量だけを使っている?」
セル単位で意味が分かる状態にしておくことで、後の改造がスムーズになりました。
4. 日々のルーティン:分解して考える【超重要】
日々公開される高スコアのノートブックやDiscussionを監視しましたが、単にコピーするだけではスコアは伸びません。
また、アンサンブルされたノートブックをそのままChatGPTに渡して「スコア向上のアプローチを教えて」と丸投げしても、大して良い答えは返ってきません。
重要だったのは 「分解」 して考えることでした。
差分(Diff)を見て実験する
似たようなアプローチなのにスコアの高いノートブックがあれば、必ず「何が違うのか」を特定して、その差分や差分からヒントを得て実験する。
- パラメータが違うのか?
- 前処理の方法が違うのか?
- 使用しているモデルが違うのか?
モデル単体を見る
アンサンブル済みのノートブックでも、中身の単体モデル(Single Model)のスコアを確認します。
アンサンブル全体を見るのではなく、構成要素であるモデル単体のスコアを向上させるアプローチを試し、強くなったモデルをアンサンブルに組み込む方が、確実にスコアアップに繋がります。
5. スコアアップの鍵:アンサンブル戦略
最終的にメダル圏内に入れた要因は、間違いなくアンサンブルでした。
上記の「分解」で見つけた強い単体モデルを組み合わせていきました。
実際のスコア向上の履歴(Public LB)
- ベース: Qwen2.5 0.5B, Qwen2.5 14B, Qwen3 0.6B のアンサンブル 👉 0.916
- モデル変更: 上記の Qwen3 0.6B を DeBERTa-base に差し替え(多様性の確保)👉 0.919
- モデル構成の変更: Llama 3 系 + DeBERTa-base の構成に変更 👉 0.924
-
CV戦略の変更: Fold設計を
rule単位からrule × subreddit(データのグルーピング考慮)に変更 👉 0.926 - モデルサイズアップ: DeBERTa-base を DeBERTa-large に変更 👉 0.927
似たようなLLMばかりを混ぜるのではなく、性質の違うモデル(LLMとEncoder系など)やスコアの高い単体モデルを組み合わせたときにスコアが跳ねました。
6. Kaggleのノートブック運用とGPUリソース
ノートブックの使い分け
- Edit: 最新版のアプローチをそのまま微修正する場合
- Copy & Edit: 過去バージョンから分岐して別アプローチを試したい場合。「本線」とは別に実験ブランチを作るイメージです
実行テクニック
Kaggleではノートブックを開いて実行できるのは1つだけですが、 Save Version(バックグラウンド実行) なら複数走らせることができます。
-
修正が多い・エラーが出そう: ノートブックで
Runして都度確認 - 修正が少ない・パラメータ変更のみ: ノートブックでは実行せず、すぐに Save Version ボタンを押す
保存処理中に裏でコードが実行されるため、保存が成功すればエラー無しと判断できます。Submission枠(1日5回)と合わせて、常に複数の実験が走っている状態を保ち、効率的に進めることができました。
GPU課金のリアル(Colab Pro / Pro+)
Kaggleの無料GPU枠(週30時間)はすぐに尽きます。私はGoogle Colabを連携させてGPU時間を確保しました。
- Colab Pro(月額 約1,200円): Kaggleで週15時間追加
- Colab Pro+(月額 約5,700円): Kaggleで週30時間追加
今回は提出前日にProの枠も使い切ってしまい、泣く泣くPro+を追加契約しました…。GPUリソースの計画的な利用は、お財布のためにも重要です。
7. 生成AIツールの使い分け (2025年9月版)
いろいろ試しましたが、以下のような使い分けに落ち着きました。
-
ChatGPT:
今回のMVP。コンペの文脈を理解した具体的かつ精度の高い提案をしてくれました。基本的にここに相談を投げていました -
Claude / Gemini:
性能は高いですが、今回のコンペに関しては教科書的・一般的なアプローチの回答が多く、少し浅い印象でした -
Codex / Claude Code:
新規コード作成には便利ですが、既存のNotebook修正に使おうとすると、変えなくていい部分まで書き換えられてエラーになることが多発し、最終的に使用を控えました -
Dia (AIブラウザ):
ChatGPTを使って分からない点を質問するとチャットが流れて「今何をしようとしてたっけ?」となりがちです。DiaのようなAIブラウザを使い、左にNotebook、右にAIチャットを置いて質問をすることで効率が上がりました
8. 反省点:Kaggle日記をつけよう
今回のコンペでは89回Submissionしましたが、大半はスコアが上がらない失敗でした。その中で痛感した反省点があります。
- 「わかったつもり」ですぐ忘れる: AIにアプローチを聞いてその場では理解しても、実装の詳細を忘れてしまう
- 無駄な再実験: 過去でボツにしたアプローチを忘れ、最終日に同じ失敗をして貴重なSubmission回数を1つ無駄にした
- 一度に詰め込みすぎ: ChatGPTの提案を一気に全部実装したせいで、何が効いて何が悪かったのか分からなくなった
次回への対策
これらを防ぐため、「Kaggle日記」をつけることにしました。
日付、Notebook名、「何を検証する仮説か」、結果、結論(採用/ボツ)をメモするだけで、実験の質が変わるはずです。
まとめ
Jigsawコンペは、少ないデータと未知のルールへの対応が求められるタスクでしたが、以下のポイントを徹底することで銅メダル(154位)に届きました。
- ChatGPTのプロジェクト機能で、AIとコンテキストを共有する
- 単に丸投げするのではなく、Public Notebookを分解し、モデル単体の性能向上に注力する
- 性質の異なるモデルをアンサンブルする
- Save Version(バックグラウンド実行) を使って効率的にノートブックを運用する
「AIにコードを書いてもらう」だけでなく、「AIを参謀にして戦略を練る」ことが重要だと感じました。
この記事が、最初のメダルを目指す方の参考になれば幸いです!