Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ド文系だった私が、 KaggleのNCAAコンペでソロ金取れるまで

Avatar for wakama1994 wakama1994
July 11, 2025

ド文系だった私が、 KaggleのNCAAコンペでソロ金取れるまで

Avatar for wakama1994

wakama1994

July 11, 2025
Tweet

More Decks by wakama1994

Other Decks in Science

Transcript

  1. 自己紹介 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)
  2. 発表の構成 • 第1部 (約10分) ◦ 2025年3月に行われたNCAAコンペでソロ金が取れた話をします! ▪ 直前に会社の人と出場した別のコンぺの教訓が生きました • 第2部

    (約5分) ◦ これからメダルを取っていきたい方向けに、私のこれまでの経験を話します ▪ Kaggle歴は浅いものの、これまでの積み重ねが多く関係していると改めて実感 ※第1部の内容は、 2025年4月開催の「湘南Kaggler会」の内容を一部改変したもの
  3. 評価指標C-indexを算出するためのプロセス 1. efs(Event-free survival) • カテゴリカル変数 • 値の意味: イベントが発生または打ち切りを指す ▪

    0: 治療が必要な状態が発生せず、無イベント生存を達成したケース ▪ 1: 治療が必要なイベント(再発、進行、死亡など)が発生したケース 2. efs_time(Time to event-free survival) • 連続変数 • 値の意味:無イベント生存までの時間(月単位) 3. 1と2を組み合わせて、予測対象 yを作成 • 生存時間解析に近い考え方
  4. 私のアプローチ • 右のNotebookをベースラインとした ◦ 生存関数オプション(カンプラマイヤー関数と CoX比例ハザード関数)をモデルアンサンブルした モ デル • ベースラインに対し、特徴量作成に注力

    ◦ efs_timeの平均値 を変数の項目ごとに算出し、カラムとして追加 ◦ efsの0/1をカウント し、1が多い場合は0が多い場合は0とし、カラムを追加 ▪ 35あるカテゴリ変数と、 23の連続値ごとで算出する • 各作成した特徴量に対し、5つのモデルで異なる特徴量加工を 実施 a. カンプラマイヤー関数 i. CatBoost/LightGBM/XGBoost b. Cox比例ハザード関数 i. CatBoost/XGBoost
  5. しくじりポイント 01 LBへの過小な期待 Testデータ3つだったこともあり、手元の CVだけを あげれば良いと勝手に判断 理由: 過去に出た、Kaggle ICR(同じ医療コンペ)も TESTデータが数個で、少なく手元の

    CVだけを信じ、 shakeupして、銀メダルも狙えたという謎根拠から .... 今回: 合成データという特性上、PVととprivate test はある程度は相関する可能性も高い 
 (とコンペ終了後にわかる) NN系の公開コードLB: 0.6904(最終0.6904) CVって俺らの方がよ くない?
  6. しくじりポイント 02 Discussionの読みこみ不足 • コンペの中盤でDiscussion で特徴量 加工が効かない or 議論されてないこと がわかる

    ◦ そもそもCVを信じまくっていたので、 ほぼスルー • 前頁で記載したNotebookは全く特徴 量加工してないものだった..... • DS協会コンペ部チームはこの議論を しっかり理解してた......涙 https://www.kaggle.com/competitions/equity-post-HCT-survival-predictions/discussion/561842
  7. 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:実際の勝敗と、シード情報 を予測したものスコア
  8. おまけ NCAAの賞金受賞までの道のり • 7位は入賞の対象だったため、Winner’s Information Gatheringの提出が必要 ◦ アーキテクチャ、前処理、損失関数、トレーニングの詳細、ハイパーパラメータの詳細な 説明を、2週間以内に事務局に提出 •

    公開Notebookを組み合わせた解法のため、LLMを駆使し読み解きを実施 ◦ 1週間で理解し、提出したものは無事に受領されました! ◦ 7th place solution 🥇 : The very simple method ! に解法とNotebookを記載 • 無事に賞金を獲得できたが、日本口座への振り込みにかなり時間を要した ....
  9. 社会人で始めたデータ分析コンペ • SIGNATEと出会い、データ分析コンペを始める! ◦ データサイエンスの基礎固めとして、コンペ形式の研修 AI Quest2020に参加 ▪ 公開コードやDiscussionの大切さを学ぶ ▪

    上記2つを対象としたPrize(コミュニティ貢献賞)を受賞し、コンペで自分を高める面 白さを実感 • データサイエンティスト養成講座で、チームで出る楽しさを知る! ◦ 養成講座が、チームで SIGNATEの練習問題コンペを競うもの ▪ 2回コンペがあり、どちらも見事優勝 ◦ 修了生が対象のコンペ部で、継続してチームを組む楽しさを覚える ▪ 月1の定例で、データサイエンスの知見、開催中のコンペの共有がある ▪ その中で、SIGNATEで銀1銅1 、Kaggleで銀1を奪取!
  10. 短期間でやるには①目標を定め、継続的にやる • その目標が達成したら、自分はどうなっているか?を想像する ◦ 例えば、Kaggle Expertになるために、今足りないのはメダル何枚で ...そのためにはチー ムで組んで解法共有できる環境がいいな ... •

    その中でモチベーションを維持する方法を模索し、継続的に取り組む ◦ 例えば、気心知れてる仲間で Kaggleに出て、メダルを目指す ◦ 周りにいない場合は、モチベーションを維持してくれる組織や仲間を探す ◦ 1人が好きな場合は、時間を決めて、家以外の場所で取り組む ...など