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

第5会 関東kaggler会 NFLコンペ 2026 解法紹介

Avatar for ohkawa3 ohkawa3
January 16, 2026
450

第5会 関東kaggler会 NFLコンペ 2026 解法紹介

第5会 関東kaggler会 NFLコンペ 2026 解法紹介

Avatar for ohkawa3

ohkawa3

January 16, 2026
Tweet

Transcript

  1. • パスが投げられてから、ボールが着地するまでの選手の位置座標を予測 • センサ情報は10fps => 2.5秒のパスの場合は25フレーム分の座標を予測 • 評価指標は平均二乗誤差 • 272試合

    & 4317プレイ @ 2023年のレギュラーシーズン18週間分 5 タスク概要:データと指標 選手の時系列情報 • XY座標 • 速度 • 加速度 • 選手の方向 • 動きの方向 選手の情報 • 予測対象か否か • 役割 パサー、レシーバ、守備、その他 • 攻守 • ポジション • 身長・体重・名前・生年月日 プレイの情報 • 予測フレーム数 • ボールの着地座標 • ゴールへの距離 • 右攻め・左攻め ターゲット • 予測対象選手のXY座標
  2. • パスが投げられてから、ボールが着地するまでの選手の位置座標を予測 • センサ情報は10fps => 2.5秒のパスの場合は25フレーム分の座標を予測 • 評価指標は平均二乗誤差 • 272試合

    & 4317プレイ @ 2023年のレギュラーシーズン18週間分 6 タスク概要:データと指標 選手の時系列情報 • XY座標 • 速度 • 加速度 • 選手の方向 • 動きの方向 選手の情報 • 予測対象か否か • 役割 パサー、レシーバ、守備、その他 • 攻守 • ポジション • 身長・体重・名前・生年月日 プレイの情報 • 予測フレーム数 • ボールの着地座標 • ゴールへの距離 • 右攻め・左攻め ターゲット • 予測対象選手のXY座標 予測フレーム数とボール着地点が与えられるのは簡単すぎでは・・・?
  3. • パスが投げられてから、ボールが着地するまでの選手の位置座標を予測 • センサ情報は10fps => 2.5秒のパスの場合は25フレーム分の座標を予測 • 評価指標は平均二乗誤差 • 272試合

    & 4317プレイ @ 2023年のレギュラーシーズン18週間分 7 タスク概要:データと指標 選手の時系列情報 • XY座標 • 速度 • 加速度 • 選手の方向 • 動きの方向 選手の情報 • 予測対象か否か • 役割 パサー、レシーバ、守備、その他 • 攻守 • ポジション • 身長・体重・名前・生年月日 プレイの情報 • 予測フレーム数 • ボールの着地座標 • ゴールへの距離 • 右攻め・左攻め ターゲット • 予測対象選手のXY座標 予測フレーム数とボール着地点が与えられるのは簡単すぎでは・・・? おそらく上記が与えられないと、不確実性が大きすぎてまともに解けない 「どこにパスを出すのか」 だけで充分コンペになりそう
  4. 10 全体構成 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め id, frame, x, y, s, a, .... : 48フレーム 入力選手 5名 予測選手 2名 22人
  5. 11 全体構成 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め 入力選手 5名 予測選手 2名 id, frame, x, y, s, a, .... : n_output 予測選手とフレーム数で フィルタ 22人
  6. 12 全体構成 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め 入力選手 5名 予測選手 2名 id, frame, x, y, s, a, .... : n_output 予測選手とフレーム数で フィルタ 22人 仕様外データ除去 回転 XYシフト 時間シフト ほぼ無し 標準化 1DCNN Transformer 1DCNN GausianNLL
  7. 13 全体構成 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め 入力選手 5名 予測選手 2名 id, frame, x, y, s, a, .... : n_output 予測選手とフレーム数で フィルタ 22人 仕様外データ除去 回転 XYシフト 時間シフト ほぼ無し 標準化 1DCNN Transformer 1DCNN GausianNLL
  8. 16 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム
  9. 17 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム Depth-wise 1DConv を 繰り返し 特徴を最終フレームに集約
  10. 18 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標
  11. 19 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 埋め込む
  12. 20 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標
  13. 21 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 動的特徴と静的特徴を結合 (ここでシーケンス長は1に固定)
  14. 22 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標
  15. 23 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 並び変えて 選手間でSelf Attenton
  16. 24 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y パス直前の 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標
  17. 25 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y ✕ 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 256次元を1536次元に拡張し 32次元 ✕ 48フレーム にReshape 4つのHeadに分岐
  18. 26 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y ✕ 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 main 予測 main 分散 補助 予測 補助 分散 256次元を1536次元に拡張し 32次元 ✕ 48フレーム にReshape 4つのHeadに分岐
  19. 27 NNモデル 動的 Stem 静的 Stem 統合 選手間 Transformer 座標回帰

    x y sin(o) cos(o) sin(dir) * s cos(dir) * s x - ball_land_x y - ball_land_y x - receiver_x y - receiver_y ✕ 20フレーム 予測フレーム数 ボールの着地座標 パスの開始地点 プレイヤーRole プレイヤーの最終座標 main 予測 main 分散 補助 予測 補助 分散 256次元を1536次元に拡張し 32次元 ✕ 48フレーム にReshape 4つのHeadに分岐 メイン:座標 GausianNLLロス 補助:速度・加速度 GausianNLLロス
  20. 28 全体構成 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め 入力選手 5名 予測選手 2名 id, frame, x, y, s, a, .... : n_output 予測選手とフレーム数で フィルタ 22人 仕様外データ除去 回転 XYシフト 時間シフト ほぼ無し 標準化 1DCNN Transformer 1DCNN GausianNLL
  21. 31 ロス関数: GausiannNLLLoss • GausiannNLLLoss (Gausiann Negative Log-Likelihood Loss) •

    𝜇 と 𝜎2 をNNに予測させる • 基本的に 𝜇 は二乗誤差と同じ、 𝜎2が異なる部分 • 難しいデータ(分散の大きい領域)の重みは小さく • 簡単なデータ(分散の小さい領域)の重みは大きく • CVで0.01の改善(1位と金ボーダーの差が0.02) 定数項なので無視 yとの誤差が小さくなる ように 𝜇 を予測す 分子に応じて𝜎2 が バランスを取る
  22. 34 データ拡張:時間シフト 前処理 データ拡張 特徴量eng Loss関数 正解座標 NNモデル 入力データ 正規化

    id, frame, x, y, s, a, .... : n_input id, frame, x, y : n_output 22人:足りない場合はゼロ埋め 入力選手 5名 予測選手 2名 id, frame, x, y, s, a, .... : n_output 予測選手とフレーム数で フィルタ 22人 仕様外データ除去 回転 XYシフト 時間シフト ほぼ無し 標準化 1DCNN Transformer 1DCNN GausianNLL
  23. 38 まとめ • NFL コンペ 2026でソロ優勝 & GM昇格 • 上位の解放がばらついていて良いコンペだったように思える

    • データ拡張・ロス関数・NNモデル、かなり工夫できた Writeup Notebook https://www.kaggle.com/code/chack3/nfl2026-1st-place-train https://www.kaggle.com/competitions/nfl-big-data-bowl-2026-prediction/writeups/public-3rd-solution Notebook Writeup
  24. 39 おまけ: Forecasting コンペはメンタルに良くない • コンペ終了後、毎週木曜日のLB更新は深夜に目が覚める • 1週目の更新、2週目の更新でどんどんチームが減っていく • 次は自分なのか、、、脱落する夢を何回か

    • 3・4週目はクリスマス&新年で更新されず、逆に良かった • 1月7日朝9時(日本)に発表予定、PrivateのLBが更新されるが2週目結果がそのままコピーで混乱 • 40時間程度放置をされた挙げ句、1月9日朝4時に目が覚めてスマホを見たら、優勝していました • 嬉しいのもあるが、ほっとしたというか
  25. 40