🧐

Kaggleの「次の一手」を探る6個のヒント

に公開

※ 本記事は、「Kaggle Advent Calendar 2025」18日目の記事です。

はじめに

みなさん、こんにちは!Mukuと申します。

Kaggleコンペに参加しはじめた序盤って、とても楽しいですよね。次々にアイデアが湧き、右肩上がりにスコアが伸びていくあの期間。

しかし、そこからスコアが伸び悩み、プラトー(停滞期)に達したときの苦しみは、Kaggleに取り組む上で避けられない運命だと思います。(これもKaggleの醍醐味ではありますが…。笑)

自分も例外なく、毎回のようにもがき苦しんでいます。😂

そうして壁にぶつかりながらも、幸運なことに直近参加した4つのコンペのうち3つでGoldを獲得することができました。🏅

それぞれのコンペに対し、自分の進め方や他者の解法を振り返ってみたとき、

  • 「停滞を打破する『次の一手』はいったいどこにあったのか?」
  • 「共通点や再現性はあるのか?」

これらを一度、自分の中で整理してみたくなりました。

そこで本記事では、自分がKaggleに取り組む中で見出した、スコアUpに繋がる「次の一手」を探すのに役立つヒントについて共有したいと思います。

「バグを見直す」「パラメータチューニング」といった一般的な内容には触れず、Kaggleコンペ特有の内容にフォーカスしています。

自分が普段から意識して行っている手法もあれば、Kaggleコミュニティの皆さんとの関わりから気づきを得たものまで、様々です。

これが全ての糸口ではありませんが、コンペの壁にぶつかった未来の誰か(そして自分)にとって、現状を打破する何らかのヒントになれば嬉しいです!

読み物的な記事ですので、年末年始のお時間がある時にでも、あるいは実際にコンペに詰まった時にでも、気軽に楽しんでいただければと思います!☺️

1. 「人力」で解いてみる

自分がコンペ中によく行うアプローチの1つに、「データを見て、自分の頭でタスクを解いてみる」 というものがあります。

単純なアプローチですが、前処理を行ったデータや特徴量をもとに、人間の認知能力でタスクが解けるのか? を確認する作業はとても重要だと考えています。

もし解けない、人間が見ても区別がつかないのであれば、それは機械学習モデルにとっても難しく、情報や特徴量が不足している可能性が高いからです。

もちろん、モデルが人間の認知能力を超えて高精度を叩き出すケースはよくありますが、基本の確認として有効だと考えています。

このアプローチが効果を発揮した事例を2つほど紹介します。

例1:HMS - 脳波分類におけるスペクトログラムの周波数/時間分解能

HMSの概要:

  • 与えられた脳波データが下記6種類のどの症状に該当するか、を分類するコンペ
  • 正確には、複数の専門家の投票による確率分布(Soft Label)を予測
  • 発作(SZ)
  • 全般化周期性放電(GPD)
  • 側方化周期性放電(LPD)
  • 側方化リズミックデルタ活動(LRDA)
  • 全般化リズミックデルタ活動(GRDA)
  • other

この脳波分類においては、「周期的なリズミカル成分」をいかに捉えるかが鍵でした。公開Notebookにおいては、「STFT(短時間フーリエ変換) によりスペクトログラム画像化して解く」という解法が主流となっていました。

自分も初期はこの流れに則り、STFTベースでパイプラインを構築しました。しかし、STFTではその原理上、周波数分解能と時間分解能のいずれかがトレードオフになってしまいます。

実際に変換後の画像を自分の目で見た際、クラス分類に必要な周波数分解能と時間分解能が不足しており、人間が分類するのは困難だと感じました。


当時のSTFTスペクトログラムの苦手シーン分析例。リズミカル成分がうまく抽出できておらず、目視での判別が困難。

この「人力」で解いてみた感触から、「時間分解能を保ちつつ周波数成分の分解能も保てる先進的な技術はないか?」という問いを立て、superlets というウェーブレット変換手法の導入に至りました。結果、精度を大幅に向上させることに成功しました。


superletsによる時間周波数表現の一例。上記のSTFTサンプルとは異なるIDのため厳密な比較ではないが、全体的に人目で見てもリズミカル成分を捉えやすい表現を獲得できた。

例2:IMC - 酷似した複数シーンの分類

IMC2025の概要:

  • 複数のシーンが含まれた画像群データセットを正しく分類し、分類したシーンごとに画像間のカメラポーズを推定する精度を競う

本コンペで与えられたサンプルデータの中には、一目見ただけではシーンの分類が非常に難しいものがありました。Discussion


fbk_vineyard (ブドウ畑)のデータセット。3つの異なるシーンから撮影されたデータが混在しているが、パッと見では区別がつかない。

IMC2025では、DINOv2やSigLIP2から抽出した画像特徴ベクトル(グローバル記述子) を用いたクラスタリングが主流でしたが、この「ブドウ畑」のようなシーンにおいては、グローバル記述子だけで正しく分類することは困難でした。

そこで、「どうすればこの難解なシーンを区別できるか?」を探るため、自分の目でデータを詳細に観察しました。

その結果、「細かい特徴の一致に着目すれば、人間でも厳密に隣接するペアを特定できる」 ことに気付き、これをアルゴリズムで再現するため、通常はカメラポーズ推定(後段)で行う特徴点マッチング処理を、クラスタリング(前段)にも適用するパイプラインを構築しました。

結果、このアプローチにより、ブドウ畑に対するスコアを大幅に向上させることができました。

2. 「上位陣」を分析する

第4回関東Kaggler会における、espritさんの登壇発表「Prizeを捉える解法の見つけ方」では、

「LB上位の参加者の特性を分析し、Prizeに繋がるアイデアのヒントを見出す」

という旨の内容が語られていました。
espritさん:Prizeを捉える解法の見つけ方

自分の経験を振り返っても、「上位陣を分析していればあのアイデアに気付けたかもしれない…」と痛感する場面が多々ありました。😢

この点についても、2つの事例を紹介したいと思います。

例1:CMI3 - HMSコンペ解法の流用

CMI3の概要:

  • 手首装着デバイスのセンサデータ(慣性・距離・温度) に基づき、身体集中反復行動 (BFRB) と日常的な仕草を識別するためのアルゴリズムを構築し、その精度を競う

    手首装着型デバイス「Helios」の外観

HMSとCMI3は、どちらも「センサ波形データの分類」という点で類似していました。
そのため、HMSで流行った解法・傾向が、CMI3に輸入されているケースが見受けられました。

具体的には、「1D波形データを2D画像化し、画像モデルで解く」というアプローチです。

CMI3においても、yu4uさんチーム、ishikeiさん、D.Imanishiさん といった、HMSでGoldを獲得されていた上位陣が、画像モデルを活用してCMI3でもGoldを獲得されていました。

自分も検討はしていましたが、手元の1Dモデルの方が精度が良く、アンサンブル効果も薄かったため、深掘りを止めていました。

しかし、「HMSの上位陣の多くがCMI3でも上位にいる」という事実を重視していれば、このアプローチをもっと粘り強く検証すべきだと判断できたかもしれません。

コンペ終了後、ishikeiさんから「自分をLBで見かけたのもあり画像モデルに取り組んだ」という旨のリプライもいただき、自分はヒントを活かしきれなかったことを悔やみました…。🫠笑

例2:IMC2025 - 4th Place 自身の最新論文の技術を活用

IMC2025 4th Placeにおける解法では、RDD と呼ばれる最新の特徴点抽出モデルが利用されていました。

実はこのRDD、4th Placeの方自身が執筆した最新論文の技術でした。

GitHubも公開されていたため、著者が参加していることに気付けていれば、検証候補として拾えた可能性がありました。「こんな足元にヒントが転がっていたとは…」とコンペ終了後にチームメンバーと嘆いていました。笑

「突然彗星の如く上位に現れたNovice」 のアカウントは、その分野の専門家である可能性が高いと思います。そのような方を見かけたら要Watchです!👀

3. 「コンペの仕様」の穴を突く

コンペ中、突如としてスコアを急激に上げるチームや、異常なハイスコアを出しているチームを見た経験はないでしょうか? そういった現象を見かけた際は、「問題設定」「データ構造」「評価指標」 といったコンペ仕様に内在する穴(制約やバグ) を突くアプローチがないか?という観点で考察すると、突破口が開けるかもしれません。

こちらに関しても、コンペの事例を2つほど簡単にご紹介します。

1. CMI3 - データに内在する制約の利用

CMI3では、各被験者ごとの正解ラベル内訳を整理すると、「どの被験者も共通して102種類の条件のジェスチャデータを持っており、それらは重複しない」という隠れた制約(データの生成ルール) が存在しました。

2nd Placeのdaiwakunさんをはじめとする上位陣の一部は、この制約を逆手に取り、各被験者内でラベルが重複しないようにハンガリアン法で割り当てを最適化することで、スコアを劇的に押し上げていました。

2. IMC2025 - Metric Bugの存在

IMC2025では途中まで、評価指標が提出ファイルの「行の並び順」に依存してしまうMetric Bugが存在しました。このバグを利用して、序中盤に飛び抜けたスコアを出しているチームがいくつかありました。
Regarding the Metric Bug (by HayatoFujihara)

結果的にこのバグは修正されましたが、このように「飛び抜けたスコア」を見かけた際は、「コンペ仕様に何かしらの穴がないか?」を疑って点検する姿勢は有効だと思います。

4. 「論文」を追う

一般的な話ではありますが、やはり論文は情報の宝庫であり、差別化の源泉だと思います。

もちろん、過去の類似コンペやDiscussion、公開Notebookを追うことも基礎として重要です。しかし、上位陣の解法を紐解くと、Kaggle内部の情報だけでなく、論文や最新技術など、外部から持ち込まれた知見が決定打となっているケースが非常に多いように感じます。

また、ホスト自身が執筆した関連論文に関しては、必ず目を通すべきです。そこにはデータの生成過程や詳細な仕様に関する記述が含まれている場合があり、いわば「コンペの裏仕様書」とも言える存在です。これを知っているかどうかで、CV設計やデータ活用の戦略にクリティカルな差が生まれてしまうこともあると思います。

こちらに関しても、コンペの事例から2つほど紹介します。

例1:IMC2025 - 論文技術 (MASt3R / RDD) の活用

IMC2025のベースラインはALIKED(特徴点抽出)+LightGlue(特徴点マッチング) というパイプラインが主流でした。

一方、CVPR 2025 Best Paperである3D再構成の最新基盤モデル「VGGT」 が注目を集めましたが、今回のデータとは相性が悪く、上位解法の中心にはなりませんでした。

しかし、1stのns64さんと5thのチームは、少し前の2024年に発表された「MASt3R」と呼ばれる基盤モデルを画像ペア選定などに活用し、高いスコアを叩き出していました。

また前述の通り、4thチームは「RDD」という特徴点抽出モデルを活用していました。これも周辺動向を広く追っていれば拾い得た技術だと思います。

このように、最も注目されているモデルだけでなく、少し前の手法や話題外の技術も含めて幅広く技術を追うことで、他者と差別化できる解法にたどり着ける可能性が高まります。

各手法がコンペで本当に効くかどうかは、結局のところ手元のデータで試さない限り判断できません。だからこそ、話題性に囚われず、候補を広く持って検証することが重要であることを学びました。

例2:HMS - Train / Test dataに関する情報

3.「コンペの仕様」の穴を突くにも関連する話ですが、HMSでは、データの詳細な仕様(データ数やTrain/Test分割方法など) が、ホスト自身の論文に明記されていました。

Training dataには1~20人の専門家が投票したデータが混在していましたが、論文内には「Test dataには10人以上の専門家が投票したデータのみを抽出した」という重要な言及がありました。

この事実に基づき、10票以上のデータに絞ってTraining/Validationを行う戦略が、Test dataの傾向に適合する上で極めて効果的でした。

(参照元:3rd place solution)

5. 「寄り道」を許容する

少し毛色の違う話になりますが、コンペと直接的には関係のない「寄り道」 が、局所解にはまり込んでいた思考を解きほぐし、突破口を開くきっかけとなるかもしれません。

自分自身、今年のCMI3コンペにおいて、まさにこの「寄り道」の大切さを身を持って学びました。

当時、コンペの中盤以降、自分は長い停滞期に陥っていました。 何をやってもスコアが上がらず、毎日じりじりと順位が下がり…、精神的にも削られる日々でした。🫠

そんな中、Kaggler関連のイベントがいくつか開催されていました。

参加したい思いはありつつも、

「イベントに参加する時間があるなら、1つでも実験を回すべきではないか…」

そんな葛藤がありました。

しかし、「少し外の空気に触れてリフレッシュした方が、長期的に見てプラスになるかもしれない」と割り切り、参加することにしました。

結果として、この 「寄り道」が、私の思考を解きほぐし、状況を打破する鍵となりました。

CMI3期間の寄り道1:上位Kagglerに学ぶ 〜画像コンペの戦い方〜

CMI3はセンサ波形データに関するコンペであり、いわゆるRSNAなど王道の画像コンペとは毛色が異なります。

そのため、当初はCMI3への直接的な知見を期待してはおらず、純粋に3名のステキな登壇者の話を聞きたいというモチベーションで参加しました。(とても満足のいくイベントでした!)

その中で、Jun codaさんの発表にあった、「捨てたアイデアに立ち戻る」というtattakaさんの言葉の引用にハッとさせられました。
Jun Kodaさん:画像ディープラーニングコンペの基本

これを聞いて、「そういえば、初期に試してダメだったアイデアがいくつかあるな…」とふと思い出し、初期に試していたアイデアをもう一度掘り出して試してみることにしました。

その中のアイデアの1つに、Mambaの活用がありました。

最新の人物動作認識 (HAR) に関する論文では、Mambaベースのモデルが幾つか提案されており、当初自分も検証を進めたものの、うまく機能させることができていませんでした。

ただ、その後特徴量設計などパイプラインの前提が変化している中で、再度仮説検証を繰り返しながらMambaベースのモデルアーキテクチャを試していくと、結果的に自分の手元では最高のスコアを叩き出すモデルを実現することができました。

「時間が経てば、過去の失敗が成功の鍵に変わることもある」

人生の教訓のような表現ですが…笑、アイデアに行き詰まった時には、意識的に「昔のアイデア」を掘り返してみることの重要性を痛感しました。

そしてこれは、まさに寄り道を許容したからこそ得られた収穫でした。

CMI3期間の寄り道2:第4回 関東Kaggler会

また、コンペ終了の一週間ほど前、金圏から弾き出され、まさに悲しみの底にいたタイミングで「関東Kaggler会」に参加させていただきました。

参加する前はメンタルが落ち込んでいましたが、登壇された皆さんの深く熱い発表の数々に刺激を受け、「自分も腐っている場合じゃない、頑張らなければ…!」と、闘争心が再び呼び覚まされました。

また、懇親会では、LBを見てくださっていた方や、温かい激励の言葉をかけてくださる方も多く、Kagglerの皆さんの優しさが身に染みました。

そして帰り際、チームマージをしようか悩んでいる旨をchumajinさんとお話しさせていただいた際、

「ソロ金のチャンスがあるなら、こだわった方が良い」

という一言をいただき「ソロで最後まで走り切ろう」という決意が固まりました。「これだけ応援してもらった以上、良い結果を見せなければ…!」という意地も生まれ、最終日までなんとか粘り抜くことができ、結果としてその粘りがGold獲得に繋がりました。

技術的な知見だけでなく、精神面でも大きな支えとなり、ポジティブな刺激をくれるKaggleコミュニティの温かさには、感謝しかありません。🙏

6. 「Private Data」を想像する

Public LBでスコアが上がらないからと言って、論理的に正しい施策を投げ出していませんか?

製品開発においてあらゆるエッジケースを想定した施策を組み込むのと同様に、Private Dataの内容に対しあらゆる可能性を想像し、施策を組み込むことが、Shake Upに繋がる決定打になるかもしれません。

例1:CMI3 - センサを逆さに装着した被験者の対応

CMI3のデータの中には「センサを逆さに着けていた被験者」が混ざっている可能性がありました。

私も軽く対策を入れていましたが、Public LBでは全く効かなかったため、対策内容の妥当性を検証する優先度を下げていました。

しかし、Private Dataにはまさに「センサを逆さに着けていた被験者」が混ざっており、この部分を徹底的に対策したJackさんやOhkawa3さんは大幅にShake Upしていました。

6thのJackさん、10thのOhkawa3さんは丁寧に施策を導入し、2桁台のShake Upを実現

自分自身も多少のShake upはしたものの、上記のお二人と比較すると上昇幅が小さく、対策の詰めが甘かったと反省しています。「Publicに存在しなくてもPrivateには存在するかもしれない」と信じてやり切れるか (あるいはProbingにより確証を持てているか) が、勝負の分かれ目となる好例でした。

例2:IMC2025 - 分類が困難なシーンへの対応

1. 「人力」で解いてみるの項で触れた「ブドウ畑のシーン」への対策ですが、実はPublic LBではあまり効果が見えませんでした。

ただ、「ホストがわざわざこのデータを提示するのは何かしらの意図がある可能性が高い」と考え、Private LBでの効果を期待して施策を残しました。

結果、Private Dataにはこれに近いデータが含まれており、大幅なShake Upを実現する要因になりました。

全体的にShakeが小さい中、我々のみ20位弱のShake up!

コンペ終了後のCVPR Workshopにてホストから共有されたデータセット別精度においても、全体順位は10位ながら、我々のSolutionはIndoor DatasetにおいてTopの性能を達成していました。(おそらくこれがブドウ畑の条件に近いデータセット)

こちらも、Publicでは効かなかった施策が、Privateで刺さった一例として紹介しました。

Indoor Datasetにおける上位10teamの精度比較

「何をやってもPublic LBが上がらない…」。そんな時は、少し気分を変えて、Private Dataを想像し、それに備えた施策を仕込んでみてください。それが最後の最後に、大きな結果をもたらすかもしれません。

さいごに

今回挙げた6つのポイントは、あくまで直近の自分の経験に基づいた一例ですが、Goldを決定づける要素は他にもまだまだ存在すると思います。

  • 帰納バイアスを効果的に取り込んだモデリング
  • 斬新な発想に基づくAugmentation
  • ...

きっと、この記事を読んでくださった皆さんの中にも、それぞれの戦いの中で培った独自の「勝ちパターン」や「秘策」があるのではないでしょうか。

Kaggleは、どうしても苦しい時間の方が長くなりがちだと思います。ただ、その長いトンネルを抜けて、スコアが跳ね上がった瞬間の喜びは、何物にも代えがたいですよね。

この記事で挙げたヒントが、壁にぶつかっている誰かの「次の一手」を見つける手助けとなり、スコアUpやモチベーション維持に繋がれば、とても嬉しいです!

長文にお付き合いいただき、ありがとうございました。
これからも一緒に、Kaggleを楽しんで、盛り上げていきましょう!

Happy Kaggling! 😎

Discussion