この記事では、競艇(ボートレース)のAI予想で「なぜ機械学習だけじゃダメなの?」「データが少ないとどうするの?」という方のために、以下の内容をまとめています。
- 機械学習が苦手とする 3 つの領域
- 統計学的なアプローチが果たす役割
- 「事前の知識」で補う考え方を直感的に説明(数式ナシ)
- グループの傾向で「サンプル不足」を補う仕組み
- 機械学習と統計学、それぞれの役割
第 1 回「AI予想とは何か」で予告した「機械学習 × 統計学のハイブリッド設計」の、統計学パートを深掘りする記事です。 第 2 回の「4 つの AI モデルブレンド」と合わせて読むと、BOATCRAFT の AI 予想の全体像が見えてきます。
機械学習が苦手な 3 つの領域
機械学習は、過去の大量のデータから学ぶ仕組みです。データが多ければ強い。逆に言うと、データが少ない領域では弱い。
機械学習が苦戦しやすい代表的な場面は次の 3 つです。
領域 1: 新人選手の予測
競艇には、毎年 4 月に新人選手 (養成所卒業組) がデビューします。彼らのレースデータはまだほぼゼロ。
機械学習は「過去データに似たパターンを探す」のが基本。データがなければ、似たパターンも探せない。新人選手の予測はほぼ運になります。
「あの選手は養成所で優秀だった」という情報があっても、それは過去のレース結果には反映されていない。機械学習は使えるデータしか見ないので、こういう「外部情報」を取り込めません。
領域 2: 開催初日の予測
競艇は 1 節 (1 開催) が 5-7 日続きます。1 日目は 「ぶっつけ本番」。
選手・モーター・ボートの組み合わせがその節で初めて走る。過去にこの組み合わせのデータがない。
機械学習が予測の根拠とする「直前情報」(モーター 2 連率、節内 ST、調子の波) もまだ蓄積されていない。1 日目の予測精度は、節後半に比べて確実に落ちます。
領域 3: マイナー会場のレアな組み合わせ
たとえば「桐生 × 6 コース × 体重 56 kg 以上の選手」みたいな細かい条件。データを絞り込んでいくと、1999 年以降のデータでも数十件しか該当しないことがあります。
機械学習は「サンプル数が少ない条件下では過剰反応する」傾向があります。10 件のレースで偶然「全勝」だった選手がいたら、機械学習は「この選手 100% 勝つ」と学習してしまう。実際には次走で普通に負ける。
共通する問題: サンプル不足
3 つの領域に共通するのは 「サンプルが少ない」 こと。
機械学習はデータドリブンなので、サンプル不足には弱い。これは構造的な制約で、どんなに優秀なモデルでも避けられません。
統計学的なアプローチ
統計学は 100 年以上の歴史を持つ、データ分析の古典的な学問です。サンプルが少なくても、なんとか答えを出す技術が体系的に発展してきました。
機械学習の弱点を補う、代表的な統計学的アプローチを 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%) に収束する。これが統計的な補正の正体です。
なぜこれが効くのか
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% |
これで、データが少ない選手でも合理的な推定が出ます。
機械学習がこういう「データのない領域を補う」のは苦手です。統計学のメソッドで補うことで、極端に偏った推定を避けることを目指す考え方です。
これが「グループの知恵」の活用法です。
機械学習と統計学、それぞれの役割
ここまで紹介した「事前の知識で補う」「グループの傾向で補う」「市場の織り込みを逆算する」という 3 つのアプローチは、 いずれも機械学習が苦手とする「データが少ない場面」を、別の切り口から支えるための一般的な統計的発想です。
BOATCRAFT でも、データ量や品質を確認しながら予測を作っています。具体的な補正方法・発動条件・配合は非公開です。
まとめ
長くなりましたが、ポイントを 5 つにまとめます。
- 機械学習はデータが多い領域で強い。少ない領域は苦手 (新人選手・開催初日・レアな組み合わせ)。
- 統計学的な 3 つのアプローチ(事前知識・グループの傾向・市場の織り込み) がこの弱点を補う。
- 事前知識で補う考え方 = 事前知識とデータを組み合わせて、サンプルが少なくても合理的な推定を出す。
- グループの傾向で補う考え方 = 選手の属するグループの傾向で、個人データの不足を補う。
- 機械学習と統計学を組み合わせるという考え方は、データが少ない場面でも極端に偏らない予測を目指す設計につながります。
次回の記事では、BOATCRAFT の 23 つまみを全部実名で解説します。各つまみがどの場面で効くのか、どう組み合わせるとどんな予想が出るのか。詳しく紹介します。