updated at 2023-3-17
kaggle のタイタニックで100%の予測できても実際の海難事故の予測は出来ないし参考にもならない。
データサイエンスのコンペであるKaggleは予めデータやルールが用意されていますが、
現実のテーマは、無限に広がる世界の中で起こるので、目標設定やデータ取得から始まります。
Kaggleのスコアだけでは、実際の業務に必要なAI開発者の能力の半分も測れません。
また、ゴリゴリと精度をあげていく作業は自動化していく流れにあるので、 ただの特徴量エンジニアリング屋やハイパーパラメータ職人に留まっていては真っ先にAIに仕事を奪われます。
従って?Kaggleの次は競馬の予測モデルを作ろう。(ボートレース版はこちら)
決して、キワモノではなく、古くから、統計学や数学のテーマとなってきました。
https://arxiv.org/
「HorseRace」で検索すると、結構な数の論文がヒットします。
日本語だと、
「競艇データベースに対する SVM による解析」等がGoogle検索で見つかります。
http://www.st.nanzan-u.ac.jp/info/gr-thesis/it/proc/2009/05mt060.pdf
アリゾナ大学の研究者チームがドッグレースの予測をめぐり、1レース1ドルをかけて100レースでプロの予想屋と対決した例も有ります。
当時、勾配問題を解決できていなかった未完成なニューラルネットワークを使った予測でしたが、
的中率と回収率の双方でアリゾナ大学が勝利しています。
予想屋チームは、マイナス60ドル
研究者チームは、プラス125ドル
競馬の予測システムは、着順を当てる予測とオッズの歪みを探すシストレ的な方法の2種類に分けることができます。
このページでは正攻法である前者を狙います。
尚、ここ数年、各地の競馬場の有料席で中国人らしき集団がパソコンを持ち込み締め切り直前に大金を持って買いに走る光景が目撃されていますが、 買い方から察するに、後者の方法を用いていると思われます。
宝くじと競馬の違いは、各券の当選確率が均等倍な宝くじと異なり、競馬は変数と変数の重みによって確率が変動するということです。
従って、18頭走るレースにおける3連単の組み合わせは18×17×16で4896通りありますが、 18通りしか無い単勝の方が高いオッズになることもあります。
変数と変数の重みの関係をもっともシンプルな式で表すと、
Y = X1W1 + X2W2 + X3W3 + X4W4 .....
このX1やX2に入るのが馬の過去の成績や血統になり、 AIに任せる作業は説明変数が目的変数に及ぼす影響度や変数同士が作る交互作用の算出です。
データは馬王等の公式・非公式ソフトウェアに付属しているデータベースを利用するかPythonやPHPでWebスクレイピングのコードを書いて集めます。
に加え、距離、天気、馬場状態 などが説明変数として考えられます。
これを学習データとテストデータに分け、最低限の前処理を加えます。
レース結果(馬の着順)を目的値とするモデルを作成し、ぐるぐるとAIに計算させるだけで、事前オッズ上位の人気馬を予測できるモデルは簡単に出来上がります。
不思議にも、 この、そこそこ当たる予測モデルの回収率は競馬全体の控除率である75%前後にきれいに落ち付きます。
お高い競馬新聞の代わりにはなりますが、10,000円買うと2,500円の損害が出る競馬予測なんて役に立たないので、 これを叩き台として、的中率や回収率(高オッズを当てる)を上げていきます。
競馬を予測する人の間では、スピード指数という指標がよく参照されています。
これは、馬の過去のレコードから距離やタイムや斤量を差っ引いて馬の能力を平準化したものです。
機械学習の要となる変数もこれと同じ意味合いを持っています。
AIは、スパコン等を使って学習リソースを強化することよりも、強力な説明変数を1つ投入した方が遥かに精度が高いモデルが作れます。
説明変数の探し方が解らなければ、数値データの最大値や中央値を変数化するのも定番メソッドです。
x["max_"+name]=x[name].apply(np.max) x["min_"+name]=x[name].apply(np.min) x["mean_"+name]=x[name].apply(np.mean) x["std_"+name]=x[name].apply(np.std) x["var_"+name]=x[name].apply(np.var) x["median_"+name]=x[name].apply(np.median)
上から、最大値、最小値、平均値、標準偏差、分散、中央値
要するに、レース結果に影響を与えているが、オッズの元となる競馬新聞や競馬情報サイトが注目していない変数を探します。
例えば、レース場のカーブ(内積と外積)の違いを数値化してみる。
馬の体重
変数を影響度で降順に並べると、馬の体重変化が重要な変数であることに気づくかと思います。
しかし、一部のレースを除いて馬の体重の発表はレースの60分前にならないと解りません。
WIN5なら完全に締切に間に合いません。
天候
気象条件は出走直前まで変化し続けます。
その他
競馬実況歴64年の吉田さんの引退レースに1着を捧げますな騎手の意気込みとあったかもしれない他の騎手の忖度
NHK総合テレビ「最後の“吉田節”~園田競馬 名物実況アナの引退~」
https://www4.nhk.or.jp/P2852/
(このレースでは実際に勝たれました。)
馬の気分
所詮、お馬さんなので・・・
出典 : 双葉社 じゃりン子チエ21巻 はるき悦巳
テツは連れていかれた京都競馬場で馬単転がしで大勝ちしていたが・・・
http://www.futabasha.com/chie/
競馬の場合、馬の強さを表す変数として、過去のレース結果を数値化したものを変数として採用することが多いです。
変数は演算過程で抽象化されていきますが、テスト用とバリデーション用を分けていたとしても、 未来の指標で過去のデータを予測させれば精度が良くなるのに決まっているので、的中率が高いモデルが作れたとは言えません。
予測の精度向上に費やす集中力が違ってくるので、自分にとって外せば痛い金額を実際に賭けることをお勧めする。
例えば、下記は2019年有馬記念のAI予測である。
単勝の事前オッズが2を切っていたダントツ1番人気のアーモンドアイが9着になり外した人も多かったレース。
この予測でも3号機は1着を当てているが、2着に番外のアーモンドアイが入ってきてしまっている。
本命が1番にならなくても上位に来るだろうと考えてしまうのは人と同じですが、
2500mも走るのに20cmのハナ差で順位が変わるの世界なので、順位を問わない馬連や一部を当てれば良いワイドに買いに変えてみるのも戦略です。
(馬券の種類はこちらを参照)
やたらとフットワークの良い大阪国税(褒めている)に所得の無申告と脱税で訴えられた著者。
外れ馬券の購入費を必要経費と認めるか否か争点になった事件の顛末を描いた本です。
100万円の元手を増やし、最終的に30億1000万円の払い戻しを受けたウォーレン・バフェットばりの錬金術です。
結果的に、1億4000万円の利益を得ていますが、28億7000万円の購入に対して30億1000万円の払い戻しなので回収率は1.05倍。
額が大きいと負けた時の損害もドデカいので世間の顰蹙をかったのも納得です。
著者は市販のソフトウェアをクエリとオリジナル関数(数式)でカスタムしているっぽいです。
AIとは関係ありませんが、地道なデータ分析をトライ&エラーで磨いていく過程は参考になります。
ちなみに、馬券裁判への国税庁の見解は下記
https://www.nta.go.jp/information/other/data/h30/keiba/index.htm
この件の裁判の判決文そのままで、外れ馬券が損金算入出来る要件について概念化されてないので、額面通り受け取る必要はないでしょうが、
一般的な馬券の購入は一時所得として「損金算入不可」の認識で良いかと思われます。
要するに、当たれば税金取られ、外れたら知ったこっちゃねえ
「実践データマイニング 金融・競馬予測の科学」
AI冬の時代である1999年に書かれた本。
頭の固い学者先生がタブー化する学問とギャンブルを融合しタイトルに科学と付ける著者のチャレンジ精神に敬意を表す。
方法論として採用されているのは、重回帰分析、ニューラルネットワーク、決定木。
順位を予測するのは難しいから人気馬を予測しようという展開ですが、仮説の導き出し方が参考になる。
絶版していてプレ値になっているので図書館で探そう。
著者のホームページ
http://www.ail.c.dendai.ac.jp/professor.html
今回、モデルを作成するにあたり、競馬に関する知識はこの一冊で足りました。
楽しく読めます。
https://www.seibundo-shinkosha.net/book/hobby/20657/
よく読まれてる記事