この記事では「なぜ機械学習だけじゃダメなの?」「ベイズ推定って何?」という方のために、以下の内容をまとめています。
- 機械学習が苦手とする 3 つの領域
- 統計学の 3 大ツール(ベイズ・階層モデル・ロジスティック回帰)
- ベイズ推定の直感的な説明(数式ナシ)
- 階層モデルで「サンプル不足」を補う仕組み
- BOATCRAFT での実装例
第 1 回「AI予想とは何か」で予告した「機械学習 × 統計学のハイブリッド設計」の、統計学パートを深掘りする記事です。 第 2 回の「4 モデルブレンド」と合わせて読むと、BOATCRAFT の AI 予想の全体像が見えてきます。
機械学習が苦手な 3 つの領域
機械学習は、過去の大量のデータから学ぶ仕組みです。データが多ければ強い。逆に言うと、データが少ない領域では弱い。
BOATCRAFT の実運用で見える、機械学習が苦戦する場面は次の 3 つです。
領域 1: 新人選手の予測
競艇には、毎年 4 月に新人選手 (養成所卒業組) がデビューします。彼らのレースデータはまだほぼゼロ。
機械学習は「過去データに似たパターンを探す」のが基本。データがなければ、似たパターンも探せない。新人選手の予測はほぼ運になります。
「あの選手は養成所で優秀だった」という情報があっても、それは過去のレース結果には反映されていない。機械学習は使えるデータしか見ないので、こういう「外部情報」を取り込めません。
領域 2: 開催初日の予測
競艇は 1 節 (1 開催) が 5-7 日続きます。1 日目は 「ぶっつけ本番」。
選手・モーター・ボートの組み合わせがその節で初めて走る。過去にこの組み合わせのデータがない。
機械学習が予測の根拠とする「直前情報」(モーター 2 連率、節内 ST、調子の波) もまだ蓄積されていない。1 日目の予測精度は、節後半に比べて確実に落ちます。
領域 3: マイナー会場のレアな組み合わせ
たとえば「桐生 × 6 コース × 体重 56 kg 以上の選手」みたいな細かい条件。データを絞り込んでいくと、過去 27 年分でも数十件しか該当しないことがあります。
機械学習は「サンプル数が少ない条件下では過剰反応する」傾向があります。10 件のレースで偶然「全勝」だった選手がいたら、機械学習は「この選手 100% 勝つ」と学習してしまう。実際には次走で普通に負ける。
共通する問題: サンプル不足
3 つの領域に共通するのは 「サンプルが少ない」 こと。
機械学習はデータドリブンなので、サンプル不足には弱い。これは構造的な制約で、どんなに優秀なアルゴリズム (LightGBM だろうが NN だろうが) でも避けられません。
統計学の 3 大ツール
統計学は 100 年以上の歴史を持つ、データ分析の古典的な学問です。サンプルが少なくても、なんとか答えを出す技術が体系的に発展してきました。
BOATCRAFT で使っている統計学の手法を 3 つ紹介します。
ツール 1: ベイズ推定
「事前の知識」と「観測されたデータ」を組み合わせて確率を更新する手法です。
新人選手の予測なら、「同じ養成所出身の若手選手の過去傾向」を事前知識として使い、わずかな初動データで確率を計算する。
これは機械学習にはない発想です。機械学習は「データのみ」を見るが、ベイズは「データ + 事前知識」を組み合わせる。
ツール 2: 階層モデル
「選手は属性のグループに属している」という構造を活かす手法です。
ある新人選手のデータが 5 件しかなくても、「同じ年齢・同じ支部・同じ級別」の選手たち の傾向は数百〜数千件のデータがある。階層モデルは、その「上位グループの傾向」から個人の予測を補完します。
ツール 3: ロジスティック回帰
オッズ (賭けの倍率) から 「市場が見ている勝率」を逆算する 古典的な手法です。
機械学習が「過去データからの予想」を出すのに対し、ロジスティック回帰は「今この瞬間の市場の判断」をモデル化します。両者の差分 が予想エッジの源泉になります。
この 3 つが、機械学習の弱点を補う統計学のツールセットです。
ベイズ推定 ─ 直感的に理解する
ベイズ推定は、聞いたことはあるけど中身は難しそう、というイメージが強いかもしれません。ここでは数式は一切使わず、直感的に説明します。
例: 新人選手 A の 1 コース勝率を推定する
ある新人選手 A が、デビューから 1 ヶ月で 1 コース から 5 回出走、1 着 2 回取ったとします。
単純に計算すると、1 コース勝率 = 2 / 5 = 40%。
でも、これは正しいでしょうか。
機械学習の答え
機械学習は素直に「40%」と返します。それが過去データだから。
でも 5 件しかないデータで「40% の選手」と決めつけるのは早計です。直感的にも、5 試合のうち 2 勝なら、本当の実力は 30〜50% のどこか の可能性が高い。
ベイズの答え
ベイズ推定は、まず「事前の知識」を考えます。
「同じ年齢・同じ支部・同じ級別」の 新人選手たち の平均 1 コース勝率は、過去データから 35% だったとします。これが「事前確率」。
次に、その新人 A の実データ (5 回中 2 勝) を組み合わせる。
ベイズ推定は、「事前確率 35% × データの強さ」 で更新します。データが少ない (5 件) なら事前確率に近く、データが多ければ実データに近づく。
具体的には、こんな感じ:
| サンプル数 | 単純計算 | ベイズ推定 (事前 35%) |
|---|---|---|
| 5 件 (2 勝) | 40% | 約 36% |
| 20 件 (8 勝) | 40% | 約 38% |
| 100 件 (40 勝) | 40% | 約 39.5% |
| 500 件 (200 勝) | 40% | 約 39.9% |
データが少ない時は事前知識 (35%) に引きずられ、データが増えるほど実データ (40%) に収束する。これが「ベイズ平滑化 (Bayesian smoothing)」 の正体です。
なぜこれが効くのか
5 件で「40%」と決めつけて買うと、実態 36% の選手を高評価しすぎて損する。ベイズなら、データの量に応じた適切な評価ができる。
これが新人選手のレースで効くロジックです。
階層モデル ─ サンプル不足を補う技術
階層モデルは、ベイズ推定をさらに進化させた手法です。
階層構造の例
競艇選手のデータには、以下のような階層があります:
全選手 (約 1,600 人)
├── 級別 A1 (約 320 人)
│ ├── 支部 福岡
│ │ ├── 年齢 30 代
│ │ │ └── 選手 X
│ │ └── 年齢 40 代
│ │ └── 選手 Y
│ └── 支部 大阪
│ └── ...
├── 級別 A2
└── ...
ある選手のデータが少なくても、その選手が属するグループ (級別 × 支部 × 年齢) の傾向は豊富なデータで分かります。
階層モデルの考え方
階層モデルは、選手の予測を以下のように分解します:
選手の真の実力
= 全体の平均
+ 級別による偏り
+ 支部による偏り
+ 年齢による偏り
+ 選手個人の偏り
各層の偏りを別々に推定して、最後に合成する。
選手個人のデータが少ない場合は、上位層 (級別・支部・年齢) の偏りで補う。データが豊富な選手なら、上位層の影響は薄れ、本人の実データが支配的になる。
新人選手への適用
新人選手 A について、階層モデルの推定はこうなります:
| 情報 | 寄与度 |
|---|---|
| 全選手の平均 1 着率 | 約 17% (1/6) |
| 選手 A の級別 (B2 デビュー) | -3% (B2 は平均より低い) |
| 選手 A の支部 (福岡) | +1% (福岡は若手育成が強め) |
| 選手 A の年齢 (24 歳) | +2% (新人は伸び盛り) |
| 選手 A 本人の 5 件のデータ | +5% (5 件で 1 勝なら平均より良い) |
| 合成 | 約 22% |
これで、データが少ない選手でも合理的な推定が出ます。
機械学習がこういう「データのない領域を補う」のは苦手。統計学のメソッドが補完することで、新人選手の予測精度が大幅に上がります。
階層モデルは「グループの知恵」の活用法です。
BOATCRAFT の実装例
BOATCRAFT では、以下の場面で統計学的手法を使っています。
場面 1: 新人選手の勝率推定
過去 1 期 (半年) で 20 走未満の選手については、ベイズ平滑化で勝率を推定。同期の他の新人選手のデータを事前知識として使う。
場面 2: マイナー会場 × 選手の組み合わせ
「桐生 × 選手 X」の組み合わせ実績が 5 件未満の場合、選手 X の他会場での成績 + 桐生での同類選手 (同級別・同支部) の成績を階層モデルで合成。
場面 3: 開催初日の補正
節 1 日目のレースは、機械学習の予測値に対して「過去の節 1 日目の的中率」(節後半より約 8% 低い) を使って 下方修正。過信を抑える。
場面 4: オッズとの統合
ロジスティック回帰で、直前オッズから「市場予想確率」を逆算。AI 予想との 差分が大きい艇 = 市場が見落としてる可能性のある艇として、穴狙いの候補に。
機械学習と統計学のバランス
BOATCRAFT の中で、機械学習部分 (4 モデルブレンド) と統計学部分 (ベイズ + 階層モデル + ロジ回帰) を比べると、サイズで言えば機械学習側が圧倒的に大きい。 ただ、機械学習が弱い領域での精度は統計学が支えている、というのが内部の実感です。
まとめ
長くなりましたが、ポイントを 5 つにまとめます。
- 機械学習はデータが多い領域で強い。少ない領域は苦手 (新人選手・開催初日・レアな組み合わせ)。
- 統計学の 3 大ツール (ベイズ推定・階層モデル・ロジスティック回帰) がこの弱点を補う。
- ベイズ推定 = 事前知識とデータを組み合わせて、サンプルが少なくても合理的な推定を出す。
- 階層モデル = 選手の属するグループの傾向で、個人データの不足を補う。
- BOATCRAFT は機械学習 + 統計学のハイブリッド設計。両方使うことで、機械学習だけ・統計学だけよりも全体精度が高い。
次回の記事では、BOATCRAFT の 23 つまみを全公開します。各つまみがどの場面で効くのか、どう組み合わせるとどんな予想が出るのか。設計者目線で全部解説します。