Python素人だった私が独学でAI競馬予想モデルを作ったら、バックテストで衝撃の数字が出た話【非エンジニアのAI実装記①】

このブログには広告が含まれています

Python素人だった私が独学でAI競馬予想モデルを作ったら、バックテストで衝撃の数字が出た話【非エンジニアのAI実装記①】

こんにちは!🏇

今日からこのハンモックドットコムで、ちょっと変わった連載を始めようと思います。テーマは、AI(機械学習)で競馬予想モデルを本気で作った話

しかも書いてる本人、プログラミングはWordPressをいじる程度の完全な素人。「Python?蛇?」っていうレベルからのスタートでした。

ハマちゃん
ハマちゃん

え、ど素人なのに?大丈夫だったの?

私

大丈夫じゃなかった(笑)。でも、半年〜1年くらいがんばったら、ここまでは行けたっていう記録を全部書こうと思って。

たどり着いた数字はこちら👇

指標 結果 どういう意味?
AUC 0.86 AIの賢さスコア。0.5は無能、1.0が完璧
バックテストROI 330〜800% 過去のレースで「もし買ってたら」の儲け率
実機運用 今週スタート いよいよリアルなお金で馬券を買い始める段階
ハマちゃん
ハマちゃん

ROI 800%!?それ本当に儲かるってこと?

私

そこは正直に言うと、過去データで試した数字はあくまで「最大値」。本番ではガッツリ下がる可能性もある。その現実も含めて、全部このブログに書いていくつもり。

⚠️ 念のための前置き
この記事は「絶対に儲かる方法」「必勝法」みたいな話じゃなくて、AIの使い方の一例として競馬データを扱った記録です。ギャンブルを勧めるものではありません。


目次

目次

  1. はじめに:素人でもAIで結果は出せるのか?
  2. なんで「競馬AI」を選んだのか
  3. 使った道具(素人なりの選び方)
  4. データ集めが9割:地味だけど大事な作業
  5. AUC 0.86までの道のり
  6. ROI 330〜800%をどう見るか(正直な話)
  7. 次のステップ:今週から本番スタート
  8. これから書いていきたいこと
  9. 同じように「AIをちょっと触ってみたい」あなたへ

🤔 はじめに:素人でもAIで結果は出せるのか?

ハマちゃん
ハマちゃん

「AIで何か作ってみたい」って思っても、「自分エンジニアじゃないし…」って詰むよね。

私

完全にそれ。私もそうだった。本業はブログ運営で、コードはせいぜいWordPressのテーマをいじる程度だったから。

それでも半年〜1年くらい色々やった結果、AUC 0.86・過去データのROI 330〜800%まで行けました。

このブログのコンセプトはシンプルです。

違い
専門書をなぞるだけ
「ChatGPTに聞いたらこうなりました」
素人の自分が、本当に手を動かして結果を出した記録

を、中身はちゃんと正確に・説明はわかりやすく書いていきます。

第1回は、ここまでで何があったかをざっくり全部見せる回にしました。


🐎 なんで「競馬AI」を選んだのか

ハマちゃん
ハマちゃん

そもそもなんで競馬選んだの?AIなら他にもいろいろあるじゃん。

私

実は、機械学習を学ぶのに最高の素材だったんだよ。理由は3つ。

# 理由 どういうこと?
1 データと答えがハッキリしてる 馬・騎手・コースのデータ→「3着以内に入ったか」で答え合わせできる
2 データがたくさんある netkeibaやJRA公式から何十年分も集められる
3 当たれば楽しい やる気が続く=独学が続く
ハマちゃん
ハマちゃん

3番目、半分ふざけてる?

私

半分本気(笑)。独学って続かないと意味ないから、「うまくいったら週末ちょっとワクワクするテーマ」を選んだのは大正解だった。


🛠️ 使った道具(素人なりの選び方)

最終的に落ち着いた組み合わせはこんな感じ。

役割 使ったもの
プログラミング言語 Python
データの整理 Pandas / NumPy
機械学習 scikit-learn / LightGBM / XGBoost
データ集め requests + BeautifulSoup(スクレイピング)
開発する場所 Jupyter Notebook(VS Code拡張)
履歴管理 Git / GitHub(非公開リポジトリ)
自動売買(これから) Pythonスクリプト + ブラウザ自動化
ハマちゃん
ハマちゃん

TensorFlowとかPyTorchじゃないんだ?

私

表データ(行と列のデータ)を扱う今回みたいなケースだと、深層学習よりLightGBMの方が圧倒的に作るのが早くて、しかも当たりやすいんだよ。素人が最初の1個目を作るなら、深層学習よりまず勾配ブースティング、これは強くおすすめ。

選び方のコツは「日本語の情報がたくさんある道具を選ぶ」。詰まったときにググって解決できるかどうかが、独学の生死を分けます。


📊 データ集めが9割:地味だけど大事な作業

ハマちゃん
ハマちゃん

機械学習って、モデル作るのが大変なんでしょ?

私

実は逆。作業時間の8〜9割は「データを集めて整える」ことに消える。モデルを動かすコード自体は、最後の1割。

最終的に使った主なデータはこちら。

種類
馬の基本情報 性別、年齢、馬体重、血統
過去成績 直近◯走の着順、走破タイム、上がり3F
騎手・調教師 勝率、複勝率、コース別の相性
レース条件 距離、コース(芝/ダート)、馬場、天気、頭数
オッズ・人気 単勝オッズ、人気順位、市場の歪み

シンプルに見えるけど、実際にはこんなトラブルだらけ👇

# トラブル
1 データを取ってくる先のページの作りが変わって、急にコードが動かなくなる
2 データが抜けてる(出走取消とか)
3 同じ馬名なのに微妙に違う書き方になってる(半角・全角とか)

💡 学んだこと:「データは汚れてる」って前提で作るのが鉄則。

ここは連載の第2〜3回で、コード付きでもっと詳しく書いていく予定です。


🎯 AUC 0.86までの道のり

ハマちゃん
ハマちゃん

そもそもAUCって何?難しそうな単語…。

私

シンプルに言うと、「AIがどれくらい賢く順位付けできるか」のスコアだよ。

AUC どれくらい賢い?
0.5 コイン投げと同じ(バカ)
0.7 普通に使えるレベル
0.8 かなり優秀
0.86 私のモデル(がんばった方)
1.0 完璧(ここまでは行けない)
ハマちゃん
ハマちゃん

おお、なるほど。じゃあ、最初からその数字出せたの?

私

全然。色んなモデル試してやっと到達した。

試したモデルの遍歴

段階 モデル AUC やってみた感想
1 ロジスティック回帰 0.70 スタートライン。意外と健闘
2 ランダムフォレスト 0.78 どのデータが効いてるか見えるのが便利
3 XGBoost 0.83〜0.84 学習はちょっと遅い
4 LightGBM 0.85〜0.86 学習が速くて調整しやすい

💡 気づき:派手なテクより、「使うデータを工夫する」ことの方がスコアは伸びる

たとえば「直近3走の平均着順」とか「その騎手×そのコースの複勝率」みたいなまとめた数字を入れると、目に見えてスコアが上がりました。

過学習との戦い

ハマちゃん
ハマちゃん

過学習って何?

私

「過去問だけ覚えた状態」のAIのこと。テスト問題(未来のレース)になったら普通に外す。機械学習で一番厄介な敵。

これを防ぐために、3つの対策を徹底しました。

対策 中身
時間の順番を守ってチェック 未来のレースを学習データに混ぜない
早めに学習を止める 学習が伸びなくなったら止める
使うデータを絞る 「答えがバレてそうな情報」を削る

⚠️ ROI 330〜800%をどう見るか(正直な話)

ハマちゃん
ハマちゃん

で、結局のところ、実際に儲かるの??

私

ここが一番大事。結論から言うと、儲かるかどうかはまだ分からない。過去データの数字を冷静に見ようか。

タイトルにも書いた ROI 330〜800%。これは過去データで以下のやり方を試した結果です。

  • AIが「この馬の複勝(or単勝)は買い」って言った馬券だけ買う
  • 1点いくらにするか、ベットの量を固定 or オッズで変える
  • 期間や買い方によって330%〜800%でブレる

数字としてはド派手だけど、過去データのテストにはよくある罠がいくつもあります。

# 本番で起きること
1 過去データに合わせすぎ(過学習) 未来のレースで同じ精度が出るとは限らない
2 自分の影響を計算してない みんなが同じ馬を買うとオッズが下がる
3 手数料・買い損ね・ネット投票の縛り 「タイミング遅れて買えなかった」が普通に起きる
4 お金の管理がリアルじゃない 負け続けで元手が尽きるリスク
ハマちゃん
ハマちゃん

てことは、800%が500%になったり、もっと下になることもあるってこと?

私

その通り。最悪、マイナス(赤字)になる可能性もちゃんとある。だから今は「リアルなテストで、現実の色んなロスを差し引いてどれくらい残るか」を測っていく段階。

✍️ ROIの数字に派手なものを並べてるAI馬券系のサービスは世の中にたくさんあるけど、本当に大事なのは「どう確かめたか」と「本番でどう崩れたか」
このブログでは、崩れたら崩れたで、その数字も全部書きます


🚀 次のステップ:今週から本番スタート

ハマちゃん
ハマちゃん

ついに本番!緊張するね。

私

めっちゃ緊張する。でも、ルールはちゃんと決めてある。

ルール 中身
使うお金 少額から(生活が傾かない金額で)
1レースの上限 上限を決めてそれ以上は買わない
記録 全レース・全買い目を残す
振り返り 過去データとのズレを毎週レポート化

この本番フェーズの記録こそ、たぶんこの連載のいちばん面白い部分になります。 AIが「現実」とぶつかったときに、何が起きるのか。理屈と現場のズレを、できるだけ正直に書いていきます


📝 これから書いていきたいこと

このブログでは、競馬AIを中心にしつつ、「素人がAIで結果を出すまでの全部の流れ」を分けて書いていきます。

テーマ 中身
第2回 データ収集編 netkeibaからルールを守ってデータを集める設計と落とし穴
第3回 データの工夫編 AUCを0.78→0.86に上げた具体的な工夫
第4回 本番1週目レポート 過去データと現実、どこがどれくらいズレたか

「AI×副業」「素人の機械学習入門」みたいなテーマでも、ちょこちょこ記事を出していきます。


💡 同じように「AIをちょっと触ってみたい」あなたへ

ハマちゃん
ハマちゃん

私もちょっとAI触ってみたくなってきたかも。何から始めればいい?

私

いいね!もうAIは「エンジニアだけのもの」じゃないから、誰でも始められるよ。

ChatGPTやClaudeみたいなAIアシスタントが、コードを読み書きするのをガッツリ手伝ってくれる時代です。「自分で全部書ける」必要はもうなくて、「何を作りたいかを言葉にできる人」の方が、むしろ強くなり始めてます。

ただ、土台になる基礎は、ある程度自分の頭に入れておいた方が圧倒的に強い。

私が独学に使った本・サービスはこちら👇

種類 役割
Pythonの入門書 入門書1冊+手を動かす練習本1冊
機械学習の入門書 数式は飛ばし読みでOKって割り切る
オンライン学習サービス ちゃんと順番に学べる+詰まったときの保険
ハマちゃん
ハマちゃん

「もう30代だし」「文系だし」って言い訳してるんだけど…

私

それ全部、昔の私。一個ずつ潰していくのに、いちばん効いたのはたぶん「結果が出るテーマを選んだこと」。失敗しても折れないように、ワクワクするテーマから入るのがコツ。

このブログでは、私が実際に使った本やサービスも、これから紹介していきます。 「自分でも何か作ってみたい」って思った人が、最初の一歩を出せる場所にしたいです。

それでは、次回のデータ収集編でまた会いましょう。🏇


連載予告

タイトル
次回(第2回) データ収集編 〜netkeibaから10年分のレースデータを集めた設計と落とし穴〜
第3回 データの工夫編 〜AUCを0.78→0.86に上げた具体的な工夫〜
第4回 本番1週目レポート 〜ROI 330〜800%は、現実でどう崩れたか〜

目次