Share
Embed
ド文系だった私が、 KaggleのNCAAコンペでソロ金取れるまで
関西Kaggler 交流会 in Osaka 2025#2の登壇資料
https://kansaikaggler.studio.site/posts/event_202507
wakama1994
July 11, 2025
Transcript
32 slides
-
自己紹介 primeNumber.Inc (2023.10-): ダッシュボード構築 , データ基盤構築 , DataOps, データカタログ Takumu
Wakamatsu 若松 拓夢 その前 ウェザーニューズ (2020-2023): データサイエンス , 気候変動のサービス開発 その前 北海道大学 法学部 → 同大学院 農学院 (2014-2020) : 学部でデータ分析を知り、理系の道へ • 普段の活動 : DS協会コンペ部 ◦ DS協会が主催するデータサイエンティスト養成講座の修了生が入部可能 ▪ kaggle masterの講師の方と、いつも参加するメンバー 6-7人 (Kaggle Expertが3人) ◦ チーム組んでコンペ出場や、月次定例でコンぺの解法や DS周りの知見共有 コンペ暦5年 : 国内コンペ3年弱, kaggle2年(TEAM4, SOLO2) -
発表の構成 • 第1部 (約10分) ◦ 2025年3月に行われたNCAAコンペでソロ金が取れた話をします! ▪ 直前に会社の人と出場した別のコンぺの教訓が生きました • 第2部
(約5分) ◦ これからメダルを取っていきたい方向けに、私のこれまでの経験を話します ▪ Kaggle歴は浅いものの、これまでの積み重ねが多く関係していると改めて実感 ※第1部の内容は、 2025年4月開催の「湘南Kaggler会」の内容を一部改変したもの -
私は、今年に入って土日 Kaggleを始めました ....!! • 会社のメンバーとKaggleのCIBMTRのコンペに、土日でフルコミット! ◦ 2年前からKaggleはやってたが、仕事と並行して取り組む難しさを感じていた .... ◦ 会社の同僚からコンペの誘いがあり、土日に有料のコワーキングスペースを借りてトラ
イ..!! ▪ 平日は仕事で忙しいため、リフレッシュも兼ねて • CIBMTRでは、メダルは取れなかったものの、次はメダル取りたいと考えていたとこ ろ.... -
そもそもなんで CIBMTRでたの? • 11月に入社したエンジニアが、「kaggleやったことないけど、一緒にチーム組んでメダルとり たい!」 • ちょうどDS協会コンペ部でCIBMTRに参加する流れがあったので、彼と別チームで参加を決 意 ◦ 彼の熱量がすごかったのと、初心者と組むことで、業務外の時間
kaggleにフルコミットしたい ◦ コンペ部側とでることも考えたが、上手い人と組むと妥協してしまう可能性も 普段参加しているコンペ部の方達は銅メダルを獲得し、 Expertに昇格..... -
評価指標C-indexを算出するためのプロセス 1. efs(Event-free survival) • カテゴリカル変数 • 値の意味: イベントが発生または打ち切りを指す ▪
0: 治療が必要な状態が発生せず、無イベント生存を達成したケース ▪ 1: 治療が必要なイベント(再発、進行、死亡など)が発生したケース 2. efs_time(Time to event-free survival) • 連続変数 • 値の意味:無イベント生存までの時間(月単位) 3. 1と2を組み合わせて、予測対象 yを作成 • 生存時間解析に近い考え方 -
私のアプローチ • 右のNotebookをベースラインとした ◦ 生存関数オプション(カンプラマイヤー関数と CoX比例ハザード関数)をモデルアンサンブルした モ デル • ベースラインに対し、特徴量作成に注力
◦ efs_timeの平均値 を変数の項目ごとに算出し、カラムとして追加 ◦ efsの0/1をカウント し、1が多い場合は0が多い場合は0とし、カラムを追加 ▪ 35あるカテゴリ変数と、 23の連続値ごとで算出する • 各作成した特徴量に対し、5つのモデルで異なる特徴量加工を 実施 a. カンプラマイヤー関数 i. CatBoost/LightGBM/XGBoost b. Cox比例ハザード関数 i. CatBoost/XGBoost -
しくじりポイント 01 LBへの過小な期待 Testデータ3つだったこともあり、手元の CVだけを あげれば良いと勝手に判断 理由: 過去に出た、Kaggle ICR(同じ医療コンペ)も TESTデータが数個で、少なく手元の
CVだけを信じ、 shakeupして、銀メダルも狙えたという謎根拠から .... 今回: 合成データという特性上、PVととprivate test はある程度は相関する可能性も高い (とコンペ終了後にわかる) NN系の公開コードLB: 0.6904(最終0.6904) CVって俺らの方がよ くない? -
しくじりポイント 02 Discussionの読みこみ不足 • コンペの中盤でDiscussion で特徴量 加工が効かない or 議論されてないこと がわかる
◦ そもそもCVを信じまくっていたので、 ほぼスルー • 前頁で記載したNotebookは全く特徴 量加工してないものだった..... • DS協会コンペ部チームはこの議論を しっかり理解してた......涙 https://www.kaggle.com/competitions/equity-post-HCT-survival-predictions/discussion/561842 -
NCAAの概要 https://www.kaggle.com/competitions/march-machine-learning-mania-2025/overview をGoogle自動翻訳、一部抜粋 • 米国の大学バスケリーグの過去の試合結果から、 2025年のNCAAの結果を予測する • 評価指標はブライアースコアを使用 ◦ 勝率と勝敗の差で算出
◦ LBはリアルタイムで 3/20-4/8の期間随時更新され、順位の変動が激しい ▪ 私のスコアも、銀圏と金圏を行き来した -
NCAAでの戦略 -2つに絞る- 1. 過去NCAAに参加したことのあるTierのNotebookをベースライン a. 過去のトーナメントのシード情報・シード情報を予測したもの・ ELO rate を特徴量に入れる 2.
ベースラインに、「ブライアスコアに基づく最適リスク戦略」を追加 https://www.kaggle.com/code/kaito510/updated-goto-conversion-winning-solution/notebook の一部抜粋 https://www.kaggle.com/code/kaito510/goto-conversion-winning-solution をGoogle自動翻訳 https://www.kaggle.com/code/raddar/vilnius-ncaaを一部抜粋・改変 NotebookのAUC情報と経年比較 • Seed AUC: 実際の勝敗と、シード情報と のスコア • Quality AUC:実際の勝敗と、シード情報 を予測したものスコア -
おまけ NCAAの賞金受賞までの道のり • 7位は入賞の対象だったため、Winner’s Information Gatheringの提出が必要 ◦ アーキテクチャ、前処理、損失関数、トレーニングの詳細、ハイパーパラメータの詳細な 説明を、2週間以内に事務局に提出 •
公開Notebookを組み合わせた解法のため、LLMを駆使し読み解きを実施 ◦ 1週間で理解し、提出したものは無事に受領されました! ◦ 7th place solution 🥇 : The very simple method ! に解法とNotebookを記載 • 無事に賞金を獲得できたが、日本口座への振り込みにかなり時間を要した .... -
数学が苦手 →ちょっとできる、そして楽しい! • 大学受験で数学に対して苦手意識が払拭できたことで、機械学習周りの土台がある 程度あったと実感 • 文系学部在学中に、データ分析に出会い、基礎をしっかり学べたことも起因 • 社会人になって、データコンペと出会い、仕事外でも取り組むくらい面白いと感じた 2014年
2025年 ソロ金 2020年 2010年 大学受験の数学 データ分析と出会い、理転 社会人で始めたデータ分析コンペ -
社会人で始めたデータ分析コンペ • SIGNATEと出会い、データ分析コンペを始める! ◦ データサイエンスの基礎固めとして、コンペ形式の研修 AI Quest2020に参加 ▪ 公開コードやDiscussionの大切さを学ぶ ▪
上記2つを対象としたPrize(コミュニティ貢献賞)を受賞し、コンペで自分を高める面 白さを実感 • データサイエンティスト養成講座で、チームで出る楽しさを知る! ◦ 養成講座が、チームで SIGNATEの練習問題コンペを競うもの ▪ 2回コンペがあり、どちらも見事優勝 ◦ 修了生が対象のコンペ部で、継続してチームを組む楽しさを覚える ▪ 月1の定例で、データサイエンスの知見、開催中のコンペの共有がある ▪ その中で、SIGNATEで銀1銅1 、Kaggleで銀1を奪取! -
短期間でやるには①目標を定め、継続的にやる • その目標が達成したら、自分はどうなっているか?を想像する ◦ 例えば、Kaggle Expertになるために、今足りないのはメダル何枚で ...そのためにはチー ムで組んで解法共有できる環境がいいな ... •
その中でモチベーションを維持する方法を模索し、継続的に取り組む ◦ 例えば、気心知れてる仲間で Kaggleに出て、メダルを目指す ◦ 周りにいない場合は、モチベーションを維持してくれる組織や仲間を探す ◦ 1人が好きな場合は、時間を決めて、家以外の場所で取り組む ...など -
短時間でやるには②本質の理解を怠らない • Kaggleはデータサイエンスコンペなので、数式の理解は必要 ◦ 全く知らなくても途中までなんとかなりそうだが、ハイレベルな議論についていけない可 能性 • 「どうしてダメだったのか?」「より良くするためにはどうしたら良いか?」を常に心がけ る ◦
今回のソロ金でも、DS協会コンペ部のCIBMTRの振り返りが生きる部分もあった ◦ 本質的な理解を心がけていたからこそ、振り返りを素直に受け入れた節も大きい -
まとめ • NCAAコンペのソロ金では、直前のCIBMTRでは多くの知見が得られました! ◦ LB向上のDiscussionの見方、 公開Notebookへのアプローチを見直す ◦ 普段参加しているDS協会コンペ部の存在と、すぐに別コンペで生かしたいという気持ち • ソロ金を取るまでの「データサイエンスにまつわる私の経験」も、間接的に起因してる
と思っています ◦ その中でのエッセンスとして「目的を定める」と「本質を怠らない」の 2つを重視したことが 成功の要因だなと改めて実感