11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kaggle ROGIIコンペ 6位 - 勘違いからソロ金メダルでマスターへ

11
Posted at

この度kaggleのROGII - Wellbore Geology Predictionで6位金メダルを獲得しました。若干運が良かった部分もあるとは思います。
この記事で書くのは、masterに至るまでの軌跡を軽くと、大事にしたい考え方を主に書いていきます。4か月前に始めた自分だからこそ、述べられる内容もあるかと思います
手法はkaggle上で記事としてまとめてあるので、気になる方はそちらをご覧ください。パオンって感じの解法です。だいぶclaude君に頑張ってもらったところはあります

対象読者

  • kaggleに興味のある人
  • kaggler
  • メダルを目指す方

kaggleに参入した時点の筆者の実力

鳥羽商船高専の専攻科上がり、プログラミングオタクみたいなものと思ってもらえればいいと思います。アプリ開発やAI・MLの研究を個人的にしていて、研究でも同じようなことをしていました。広くちょっと深く、色々な分野を理解している感じで、AI/MLに対する土台はありますが、深い理解はしていなかったし、今もあまり理解できているとは思っていません。
1年前くらいに仮想通貨の予測をしよう!と思い色々試しましたが、勝率5分で撤退しています。大体そんな感じの人です。
5年前、画像生成系AIが流行る前に、こういうのを作ってたりはしていました

Expertまでの道のり

元々興味があった分野ではあって、少し時間ができたので4月頭に初めて参入しました。とりあえず開催されているものに参加しようと思って。この時の目標はExpertでした。Expertの条件は銅メダル以上2枚です。

鳥コンペに参加

最初に参加したのはBirdCLEF+2026で、鳥コンペとか調べれば情報は出てくると思います。2026とついているように、前年度やその前の年も似たような大会が開かれています。

このコンペは簡単に言うと、撮影された動物の鳴き声データをもとに、その動物が存在するか/しないかを判定しようという問題です。200以上の分類が必要なタスクです。クラス分類ではなく、動物が実際に存在すると予測する場合は、確率値を上げる、みたいなことをする必要があります。複数の鳴き声が混ざることもあるので、そういった対応も必要です。

音声系のコンペ...かと思いきや実は画像系のコンペだったりします。音声をメルスペクトグラム画像に変換してどうのこうの(SEDだのperchだの)するのが主流でした。

image.png
引用: https://qiita.com/kotai2003/items/69638e18b6d542fb275e

予測は↓な感じで出します

prediction_probs_102.png
こんな感じの結果を出して、AUCが高ければいいみたいな感じです。

このコンペでは108位銀メダル🥈を獲得しています。

image.png

大きくシェイクダウンしてますね、自力の内容と公開ノートブックの内容を組み合わせているので、当然ではあります。ただ、このコンペはLB-Trustなコンペだったので、ある程度過適合してようが行けるだろうと思い、混ぜたら銀に残れたという感じです。初参加で銀メダルはうれしいものがありました。

実はこのコンペ、計算負荷が高すぎたのでPCを新調しています。25万円のRTX5070を積んだそこそこ強いPCです。元々GTX1070tiで挑んでましたが、流石についていけなかったようです

ROGIIに参加

次に参加したコンペがROGIIでした。終了2か月前に参加しています。

油田坑井において、対象地層を掘り続けるために、高さでいうとどこを掘っているのか?を予想するコンペです。岩石からはガンマ線(GR)が放出されており、それは地層の高さによって値が異なります。ドリルビットの先端にGRを測るセンサーを取り付けることで測定し、このGRをもとに高さを測るのが目的のコンペです。高さはTVTで表現されます。(下図参考)

image.png
引用: https://www.kaggle.com/competitions/rogii-wellbore-geology-prediction/discussion/697418

真値と予測値のRMSE(誤差)がスコアになります。スコアは低いほど良いです。

内容を理解するだけで1日掛かるような複雑なことをやってます。既知のGR-TVTを用いて、TVTをGRから予想しよう!がおおまかな理解です。

色々やっているうちに、残り1か月のところでPublicでは金メダルに到達していました。

image.png

金メダル取れればMasterいけるよなぁとかこの時は考えてました。
この段階で目標がExpertからMasterに変わりました。
早くMasterに上がりたかったので同時並行で銀メダルを目指すために別のコンペに浮気していました。

Neurogolf2026に浮気

2週間後に終わる手ごろなコンペを見つけ、最適化コンペで解法があふれてるこれなら銀メダル取れるなと思い、Neurogolfに参加しています。

このコンペは400個の人間なら簡単に解ける画像問題タスクを、onnxモデル(AI)に解かせようという問題です。ネットワークが小パラメータで省メモリなほどスコアが高くなります。400個のonnxを作り、各問題を解かせるという流れです。公式で紹介されている問題例です。

image.png

このコンペの特徴として、Public=Privateになるということが挙げられます。また、解法をPuclic notebookからコピーして始めても、今後に影響がありません。また、当時最上位に君臨していたチームが、ディスカッションで「このコンペは20$/monthのchatGPT+を使うだけです)と言っていました。実際、ほぼそうでした。
ちょうどchatgpt+の1か月trialが余っていたので、とりあえずtrialを契約して参加しました。
1日目に銀メダルの真ん中に入ってから1週間放置しました。

image.png

解法としてはchatGPTにパワハラするみたいなことをやってました。claude codeに解かせるとトークン消費のわりに大した成果がでなかったため、claude codeにはchatGPTに投げるためのドキュメントやファイル作成を任せることにしました。GUIアプリでやるのが最適だったということです。並列でタスクを動かせるのもいい点です。

image.png

その後、日本人で銀メダル狙いでチームを組もう!とディスカッションで言っている方がいて、ちょうどtwitterでも何度かやり取りした方だったので一緒にやってみようかなと思い、参加しました。その後、無事に銀メダルを取りました。全員しっかりと動き、良いチームになっていたと思います。組まなければ少し厳しかったかもしれません。お三方、ありがとうございました。

image.png

こうして7/22に銀2枚でExpertになりました。3か月でなったようです

image.png

Masterまでの道のり

ROGIIコンペの落とし穴

私が勘違いといったのは下の図を見てもらえれば分かります。

image.png

この時点での私の最良の提出物は、PublicスコアがCVスコアより良く、Publicに過適合している状況でした。実際、Privateではスコアが出ないことが分かります。
つまり、Publicランキング10位はまやかしの値でしかなく、この差を放置すると金メダル獲得は厳しいことが分かります。

※ Publicスコアはコンペのリーダーボードで見えるスコア 50データで検証
※ Privateスコアはコンペの最終順位決定で使われるスコア 150データで検証
※ CVスコアは自分の持つtrainデータでの評価値

私はDiscussionでこの事実に気が付きました。LBが悪くなってでもCVを良くする方が重要で、ここからが厳しい道のりの始まりでしかなかったということです。

ここが一つ目の重大な転換点でした。自身のおかれた状況を正しく理解することが大事だったということです。

この考えに基づいて再構成した方法で、以下のようにCVが良くなり、Publicが悪くなる結果を得ました。この考え方は間違っていなかったようで、Privateでも実際に改善が得られていることから、選択は誤っていなかったようです。

image.png

少し暗い気持ちで取り組んだ20日間

ここからは、自分の解法に自信を持てず、Discussionで議論されている内容をベースに20日ほど試していました。いずれもうまくいかず、自身の精度改善にはつながりませんでした。他の上位解法ではDiscussionの内容が重要であったと語っているため、ここは私の実力不足な部分だったと思います。

Publicに適した解法すらも金メダル圏から外れていき、一か八かで自分の解法を洗練させるしかないと考えました。

躍進の10日間

立ち返って自分が持っている資産をもう一度観察し、直感でこうした方がいいんじゃないか?という方法をやってみたところ、重要な洞察と大幅な精度改善を得られました。
やったことは、予測値が少し違う入力を増やすことでした。データ分析は私がし、モデルはclaudeに提案してもらったものを使っています。CV-LBともに大きく改善し、Privateでも実際に改善しました。ここが2つ目の転換点となりました

image.png

ここから、ひたすら相補性のあるデータを入力に追加することで、良い改善が得られました。自身の過去の研究でダメだった方法が、ここにきて大きく後押ししてくれたのを覚えています。

image.png

こうした経緯で、真の意味での金メダル圏に舞い戻ることができました。

image.png

image.png
↑嬉しそう

最終結果

6位!

image.png

大幅シェイクアップしました。周囲のランキングも全員シェイクアップしています。実力が3割、運が7割絡んでいた結果だと考えられます。

このコンペには物理モデルを主軸とするか、しないかの二通りのやり方があったようで、前者を選択した場合はシェイクアップしやすく、後者を選択した場合はシェイクダウンしやすい傾向にあったようです。CVやPublicは後者の方が良い結果を得られるが、Privateでは爆散してしまうという、読むのが難しい若干の運が絡んでいたと考察できます。
(ただし、シェイクアップした人の中にはこれを読んで対策していた人もいました)

一つは運で、私は前者を選択して精度を上げていたので、運よくこの結果を得られました。
データ分析を通して多様性を重視し、どんなデータでもある程度対処できるようにしていたことが、精度低下をあまり起こさなかった理由です
(シェイクアップした人の中でもあまり精度低下を起こさなかった側にいます)

金メダルに残ればいいと思っていたら、予想外の跳ね方をして叫んでいました。

そうして私は4か月を掛けて銀2枚、ソロで金1枚を獲得してMasterへと昇格しました。

image.png

4か月の経験を通して得た知見

ここからは、これからKaggleに参加する方や、銅・銀・金メダル獲得を目指すために重要だと思う考え方を書いていきます。

Discussionを見ることの重要さ

私の手法はあるDiscussionを見たことから始まっています。私の手法はParticle Filterという物理モデルの手法に大きく依存していますが、この方法単体で良い結果が得られるという一つの投稿がきっかけでした。
他の上位入賞者についても、ディスカッションの議論内容に基づいてモデル作成をしてみたらうまくいった、という方が散見されました。
もちろん、Discussionに改善方法が載ることはほとんどありません。ただし、ヒントはよく載ります。BirdCLEF+2026やROGIIは有意義な議論が多く見られたと思います。

基本的な用語は覚えておく

Discussionを見て、何を言っているかわからずに閉じてしまうのはもったいないです。コンペ固有の言葉は調べるにせよ、頻出用語くらいは覚えておくべきです。少し載せておきます

用語 説明
5-fold学習 trainデータの分け方です。
データを5分割し、そのうちの4つを学習に、1つをvalidationにします。
分け方を変え、5回繰り返すことで、未知のデータに対する汎化性能を測定できます
OOF 5-foldなどで得られる、汎化性能の大まかな値です。
Publicリーダーボードで同じぐらいのスコアが出ない場合、実験方法が誤っていることがあります
CV trainデータで測った結果です。大体は5-foldのOOFスコアが該当します
LB リーダーボードの略です。大体はPublicリーダーボードのことを指します
ドメイン データの分布のことです。
例:雀の鳴き声をマイクAとマイクBで録った
上記はいずれも同じクラスだが、データの質/分布が少し異なる。trainにマイクAのデータが固まっているとき、マイクBのデータに対処するのは難しい(ドメインシフト)。
これへの対処がドメイン適応

一方でPublicNotebookの99%は信用できない

PublicNotebookは簡単にアクセスでき、そのまま提出できるため、ベースラインとしての活用ができます。最初はいずれかをコピーするところから始めて、データを理解していくこと、一般的とされる方法はどういう方法かを理解してから始めるのは定石だと思います。
ただし、PublicNotebookで得られるスコアは、Public testデータセットに過適合している可能性が非常に高いです。

スクリーンショット 2026-08-07 165741.png

これらはRMSE6.4前後の高いスコアをPublicLBでは出せていますが、PrivateLBではRMSE10.0程度になります。また、CVスコアはRMSE11.0程度になるようです。使えるはずがありません。これは、その時点で最も高いLBスコアを持つノートブックは、評価されやすいという実態によって引き起こされています。kaggleはコンペ以外にも、良いNotebookを作ったというランクがあるので、こうしたものが量産されてしまいます。

稀に、良質なベースラインとなる、良いノートブックもあります。それらはシンプルな解決方法で、これから改善を繰り返せば、良い結果が得られるように見えます。CV-LBで正しく転移しているという特徴があります。そうしたものはしっかりと検証してみると良いかもしれません。

人によってコンペの得意不得意はある

どうしても苦手な分野、得意な分野が出てくると思います。neurogolfのような最適化コンペはずっと張り付き、とにかく効率よく行うのが大事です。ROGIIの場合はデータの解析がとにかく重要でした。BirdCLEF+2026はモデル・学習に関する知見/洞察が深くないと高いスコアを出すのは困難だと思われます。シミュレーションコンペは、対戦相手の動きを見て対策をしたり、超大規模なマシンスペックが必要なこともあるかもしれません。コンペごとに大事な傾向・スキルがあるように思えます。やってて楽しいものを選ぶべきだと思います。

自分の強みを押し出そう

私の強みはデータの分析力にあります。他の上位解法者は主に、モデルの改善に注力してスコアを伸ばしていましたが、私は深い深いデータ分析を繰り返した結果、この順位となっています。明らかに王道ルートは、モデルの改善をしてスコアを上げることでした。邪道でも強みを押し出せば意外となんとかなるということです。
また、異端な方法を取れるのは良いことであると理解してください。もし誰かとチームを組むという話になった時、通常よりも大きく精度を伸ばせます。異端な方法は、王道な方法同士の組み合わせよりも、大きな相補性を持つことが多いためです。
「周りのトレンドは○○だけど、俺は△△でやるんや」でやればいいと思います。

claudeやcodex等のLLMはほどほどに使おう

私はclaude maxを使える環境があるので、ありがたく使っていました。アプリ開発をするときのように、しっかりとドキュメントに残したり、寝る前にPCつけっぱなしにして、学習が終わったら次の学習をして~等の仕事を任せておくと効率が良いです。過去の研究結果は必ずメモさせるようにしておくと、後からそれが使える手法だったことに気づけるかもしれません。私はコーディングをほとんどしていません、全て作らせました。

自分の苦手分野を任せてもいいと思います。モデリングが苦手すぎるので、全て任せて、100個ぐらい試させたら2個ほど当たりを引きました。ほぼはずれですが、うまくいく方法は人間にもわからないのでそんなもんだと思います。

ただし、すぐにあきらめる癖があります。うまくいかないのでやめた方がいいと思う!と早めに切り捨ててきますが、続けると良い結果が出たことが何度もありました。
また、データに対する深い思慮がLLMには足りません。ROGIIの場合、データの構造を本質的には理解できていないように見えました。ある程度分析した結果や思い付きは、私たちが見つけてあげた方が、良い結果になりやすいです。

2026年はこんなこと言ってますが、来年同じことがいえるかは不明です!

最初のうちは勘違いをしてもいい

勘違いでやる気を出して、ちゃんと最後に結果を残した自分としては、あの時偶然でも高いスコアが出ていてよかったと思います。残り1か月の時点で銀メダル圏内をうろついていたら、おそらくやる気が全く出ずに銀メダルで終わっていたはずです。俺はやれるという思い込みと挫折こそが、原動力になるでしょう。同じような経験を、これを読んでいるあなたがするかもしれません。勘違いを巻き返した人間がいたことを、思い出してください。
例外的に、PublicNotebookを出して銀メダルに入っても喜べるものではないでしょう。自分の考えた改善方法で、メダル圏内に入ってみましょう。

最後は祈るしかないこともある

金メダルに残れるかは祈るしかない場合があります。ROGIIコンペは全員祈っていました。今回はPrivateデータセットが少ないこともあり、正しい実験をしていた場合でも、解法がPrivateに適合しない場合があります。
これはコンペにもよると思います。BirdCLEFの場合、CVは全く信用できず、Publicスコアしか信じられるものがありませんでした。コンペの特性を早いうちに見極めて、どうすればPrivateで良い結果を残せるか?を常に考えておくことが大事だと感じています。

最後に

読んでいただきありがとうございました。参考になれば幸いです。

今後もkaggleは続けようかなと思っています。寝てコンペやって寝てコンペやって...を繰り返す生活は今後はもういいかなって思ってます。目標は達成したので、のんびりゆるりとやろうかなと思ってます。ソロ金取っちゃった以上、いずれはGrandmasterに届く可能性を秘めているかもしれませんが、そこまで行く気は今はないです。今後LLMが大暴走しちゃうし!

一気に駆け抜けた4か月間でした。まさかこんな短時間でここまで到達するとは、しかもソロで金を取ってしまうとは思ってもみませんでした。

ポケカコンペ、あと数日で終わるみたいですね。シミュコンペのことは良くわかりませんが、最後まで走り抜けてください!

kagglerの皆様、特に私が参加したコンペの参加者たちへ。また議論とかで会いましょう。戦ってくれてありがとう。kaggler会とやらにもいつか行くかもしれません

私事ながら、今は業務委託しながらニートやってるので時間はあったとだけ。10月から働きます

またねー

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?