競馬AIをつくる

斤量1kgは0.2秒ではなかった — 競馬の定説を改めて考え直す

競馬の予想において、斤量ほど頻繁に語られながら、根拠が曖昧なまま使われている要素も少ない。

「1kg重いとおよそ0.2秒」。この数字を聞いたことがある方は多いと思う。ハンデ戦の分析でも、格上挑戦の評価でも、この換算はしばしば前提として置かれる。私も自作のスピード指数を組むとき、疑いもせずこの値を使っていた。

結論から書く。実測すると0.2秒ではなかった。しかも芝とダートで倍違った。

なぜ「素直に測る」ができないのか

斤量の効果を測るのは、一見すると簡単そうに思える。同じ馬が違う斤量で走った記録を集め、タイムの差を見ればよい。同じ馬なら能力は変わらないのだから、差は斤量で説明できるはずだ。

やってみると、期待した関係は出てこない。それどころか、斤量が重いときのほうが良いタイムで走っているという、逆向きの傾向すら見える。

理由は競馬のルールを考えれば明らかだ。斤量は成績に応じて決まる。

勝てば次走で背負う。ハンデ戦では強いと判断された馬ほど重くなる。別定戦では過去の実績が斤量に反映される。つまり重い斤量を背負っている馬は、強い馬である

ここで「斤量が重い」と「その馬が強い」が同時に成立してしまう。統計ではこれを内生性と呼ぶ。原因と結果を分離できない状態だ。

しかも、同じ馬の中で比較しても消えない。同じ馬でも、成績を上げれば斤量は増える。斤量が増えた時期は、その馬が充実していた時期でもある。3歳春に52kgで走っていた馬が、秋に57kgを背負うようになる頃には、馬そのものが変わっている。

データを積み増すことでは解けない構造だ、と分かった。 ならば別の道を探すことになる。

問いを立て直す

原因が測れないなら、問いのほうを変えるしかない。

私たちが斤量の補正を使う目的は何か。物理法則を解明することではない。レースの着順を、より正しい順番に並べることである。

ならば、こう問い直せる。

1kgあたり何秒として扱えば、着順の予測が最も当たるか。

これは測れる。補正の強さを 0.02秒、0.04秒、0.06秒……と変えながら、そのたびに「予測した順位と実際の着順がどれだけ一致したか」を計算し、最も良かった値を採る。総当たりである。

得られるのは「1kg重いと物理的に何秒遅くなるか」への答えではない。「実用上、何秒として扱うと予想が当たるか」への答えだ。

問いをすり替えていると言われれば、そのとおりである。ただ、答えの出ない問いに固執して係数を空欄のままにするより、答えの出る問いに置き換えて前に進むほうがよいと判断した。そして決め方を記録しておくことにした。後から誰かが別の方法で解けたとき、置き換えられるように。

斤量がタイムに及ぼす影響の真実

総当たりの結果は明確だった。

芝は1kgあたり0.05秒。ダートは0.10秒。

従来使っていた一律0.2秒は、芝に対しては4倍の過大である。そしてダートは芝のの感度を持っていた。

芝ダートを分けて適用した効果は、はっきり数字に出た。レース内で着順を正しく並べる能力を表す指標が、0.4767 から 0.4902 へ改善した。特に芝での改善が大きい。

ダートのほうが斤量に敏感である、という結果は、競馬の理屈からも納得がいく。ダートは砂を掻いて進む競走であり、脚が沈む。体を浮かせて前へ運ぶために、より多くの力を使う。そこへ追加された1kgは、芝の1kgより重く効く。

逆に言えば、同じ斤量増でも芝とダートでは意味が違うということでもある。芝の57kgとダートの57kgは、馬にとって別の負荷である。ハンデを読むとき、この差は頭に入れておいてよい。

「0.2秒」はどこから来たのか

では従来の0.2秒という値は、まったくの誤りだったのか。そこまでは言い切れない。

推測になるが、この値は「斤量が重い馬ほど着順が悪い」という観測から逆算されたものではないかと思う。だとすれば、そこには先ほどの内生性が逆向きに効いている可能性がある。

あるいは、特定の条件下では実際に0.2秒に近い値になるのかもしれない。距離、クラス、時代。私たちが測ったのは2021年以降の全レースを均した値であり、条件を切れば違う数字が出てもおかしくない。

いずれにせよ、手元のデータで、着順予測を最大化する係数は0.05と0.10だった。これが現時点で言えることのすべてである。

馬体重で変わるのか——これから確かめたいこと

ひとつ、心残りがある。

同じ1kgでも、480kgの馬と520kgの馬では意味が違うはずだ。体重に対する比率で考えれば、軽い馬のほうが同じ1kgを重く感じる。これは直感的にもっともらしい。

実際、牝馬と牡馬を分けて測ると、牝馬のほうが斤量の影響を受けやすいように見える結果が出た。しかし馬体重の近い馬同士に絞って比べ直すと、その差は消えた。つまり見えていたのは性別の差ではなく、牝馬のほうが馬体重が軽いという事実だった可能性が高い。

ここまでは分かっている。では馬体重帯ごとに係数を分けるとどうなるのか。これはまだ検証していない。

検証の道筋は見えている。馬体重を帯に切り、帯ごとに同じ総当たりを回して、係数が体重とともに系統的に動くかを見る。動くなら、体重比で正規化した補正に置き換えられるかもしれない。「斤量」ではなく「斤量÷馬体重」という量のほうが本質だという可能性は、十分にある。

注意すべき点も分かっている。馬体重は当日の状態を反映して増減するし、そもそも大型馬と小型馬では脚質も適性も違う。単純に帯で切れば、また別の交絡を拾う。それでも、切り分けられる設計を組むことはできるはずだ。

これは次に手をつけたい課題のひとつである。結果が出たら、改めて書く。

履歴と予測で、係数を揃えるという判断

最後に、実装上の判断をひとつ書いておきたい。

斤量の補正は、システムの中で二か所に登場する。過去のタイムを指数に直すときと、AIの予測値を補正するときだ。向きは逆になる。過去は「重い斤量で出した時計なのだから割り増して評価する」、予測は「今日は重い斤量を背負うのだから割り引く」。

ある時期、この二か所で違う値を使っていた。それぞれを単独で最適化した結果、片方が0.2秒、もう片方が0.05秒になっていたのである。

数字の上では、そのほうが成績は良かった。だが同じ現象を表す係数が、同じシステムの中で4倍も食い違っているのは、説明のつかない状態である。

揃えることにした。成績の数字はわずかに下がった。

この差は、斤量の係数そのものではなく別のところに理由があると見ている。次に切り分ける対象がひとつ増えた、という受け止め方をしている。少なくとも、説明のつかない4倍の不一致を抱えたまま改良を積み上げるより、揃えたうえで原因を追うほうが先へ進める。

辻褄が合っていることには、予測精度よりも上回る価値がある。 まだこの競馬予想AIは育てている段階ということについては、そう考えている。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です