ギャンブル予想くん
AIに結果を予想してもらうサービスとかあったらわりと面白そうだな、と思った という話
何なのか
「過去の 〇〇のレース とか 試合 の結果」を学習したAI
例えば「明日の〇〇の結果を予想して、」とお願いすると教えてくれるAIサービス、みたいな感じです
つまり、
過去の全てのデータ(試合のカードとか カードごとの勝率とか 体調とか 環境条件とか?)を分析して、
インプットとして、予想したい回のデータ(条件とか)を伝えると
最も確率の高い結果を予想して教えてくれる くん です
(考え)
AIにやってもらいたい事としては、わりとAIに向いてる内容なのでは、という気がする
というのは やりたい事としては、 chatgpt 的な
「①膨大なデータを元に学習してもらう(インプットする) → ②プロンプト(質問)を元に「学習したデータの内容」をいい感じに要約し(分析して)吐き出してもらうみたいなこと じゃない? なんとなく似てる気がするのでいけるのでは、と思いました
イメージとしては いわゆる、(格闘マンガとかにいる)「データ野郎」みたいな 「データが示すところによると、あなたの勝利の可能性は0.1%に過ぎません。」
「計算結果は明白です。あなたが勝てる確率は0.1%です。」
→ (オチ) 試合中に成長する相手に こんなデータは無かった とかデータの再計算とかが必要になって負ける
ていうか もう そういうAIサービス、もうたくさん世の中にあるのでは.?(調べてない)
(とりあえずできるかどうかは置いておいて、)
AIサービスとかを開発したりするのに触れるきっかけとしての、お題としていいのでは(適当) ---
とりあえず問題点
実際に作ってみようとするとしても
作り方がマジで分からない
とりあえず何から始めたらいいのか?からもう よくわからない
具体的にどんなサービスなのか? をとりあえず固めてみる
何の結果を予想するか?
→ 競馬
## 仕様
機能としては、競馬のレースの結果を予想するAIです
インプットとして競馬の過去のレース結果の記録を学習して、最も確率のたかい次回レースの結果を予想することができます
例えば、次のようなイメージです。
過去の全てのデータ(試合のカードとか カードごとの勝率とか 体調とか 環境条件とか?)を分析して、利用者からのインプットとして、予想したい回のデータ(条件とか)を伝えると最も確率の高い結果を予想して教えてくれる。
..
---
code:prompt
こんにちは。AIを自分で作ってみたいのですが、作り方が分からないので教えてください。 次のようなAIを作りたいです。 ## 仕様 * 機能としては、競馬のレースの結果を予想するAIです * インプットとして競馬の過去のレース結果の記録を学習して、最も確率のたかい次回レースの結果を予想することができます * 例えば、次のようなイメージです。過去の全てのデータ(試合のカードとか カードごとの勝率とか 体調とか 環境条件とか?)を分析して、インプットとして、予想したい回のデータ(条件とか)を伝えると最も確率の高い結果を予想して教えてくれる。
→ 回答(回答の要約):
こんにちは!競馬のレース結果を予想するAIを作るには、以下の手順が役立つかもしれません。
基本的な流れとしては、
1.データの収集と前処理、
2.モデルの選定と学習、
そして3. 結果の予測 というステップになります。
1.データの収集
まずは競馬の過去のレース結果データを集める必要があります。次の情報が含まれると良いでしょう:
レースの詳細(開催日、場所、天気など)
出走馬の情報(馬の名前、年齢、体重、成績など)
騎手の情報(名前、成績など)
馬場状態(良、稍重、重、不良など)
2. データの前処理
データを分析可能な形式に整える必要があります。以下のような処理を行います:
欠損値の補完または除去
数値データの正規化
カテゴリカルデータのエンコード(例えば、One-Hot Encoding)
3. モデルの選定と学習
次に、データを使って[機械学習モデル]を構築します。以下の手法が考えられます
回帰モデル: レース結果を連続値として予測
分類モデル: 馬の順位をクラスとして予測
Pythonを使った例として、Scikit-learnライブラリを用いると便利です。さらに、高度な予測にはTensorFlowやPyTorchなどのディープラーニングフレームワークも活用できます。
4. モデルの評価
5. 結果の予測
最後に、モデルを用いて新しいレースの結果を予測します。インプットとして、予測したい回のデータを入力し、モデルから出力される予測結果を取得します。
もし具体的なコーディングのサンプルや詳しい説明が必要であれば、さらに深掘りしてお伝えします!まずは、どの部分に興味があるか教えてもらえますか?
…
課題
競馬の過去のレース成績をどうやって収集するのか?
どうやって加工するのか(最終的にCSVファイルにする?)とか
(適当)そういう競馬情報を公開、配信してるAPIとかDBあるのか
→要調査
わからん
モデル とは
カテゴリかるデータ?のエンコード?
データセットをトレーニングセットとテストセットに分割?
→要調査
競馬について
学習データとして与えるレースの項目は、AIくんが挙げてくれたやつ以外にもいろいろあるのではないか(馬の並び順?馬がどの位置からスタートするか、とか)
→そういうのは競馬やってる人に聞いてみるしかないのでは
.NETでやりたい(せっかくなので)
→.NETでの具体的な実装
1. データの収集と前処理
2. モデルの選定と学習
ツール: ML.NETを使用して機械学習モデルを構築・学習します。 3. モデルの評価
ツール: ML.NET内の評価メソッドを使用して、モデルの評価を行います。
4. 結果の予測
ツール: ML.NETを使用して予測を行い、結果を出力します。
各ステップごとに具体的なコード例や詳細が必要であればお手伝いしますので、遠慮なくお知らせくださいね。頑張ってください!
..
(↑)上に書いたような内容(AIで競馬予想)と
ほとんど同じ事をしてる(してた)人が書いた、Qiita記事 があった(感謝)
競馬AI スクレイピングしない競馬データの取得とデータ構造について とりあえずまずは これを参考にしたらいいのでは
---
競馬データの取得方法 の話
自分が知っている限り、スクレイピングをせずに競馬のデータを取得するには大きく分けて3つある
基本的にすべて有料
毎週・毎日最新のデータを手に入れるには、継続して費用を払う必要がある。
JRA-VAN DataLab
中央競馬のデータを取得することができる。
使い方
中央競馬を開催しているJRA公式の中央競馬のデータです。
とりあえず無料で使える(おそらく)もよう
(おそらく)取得したいのが「最新のデータ(直近 1,2週間以内?)」 じゃなければ無料で使える?
JRA-VAN DataLab のデータの取得方式には 以下の2系統ある
→ 1だったら無料で使えます (2の場合アカウント登録(ライセンス購入)が必要)、という事っぽい
1. 蓄積型データ 👈「レース結果の確定後」にレースの情報が登録されるDB
2. 速報系データ 👈レース結果が確定する前に提供されるデータ
JRA-Datalabは、仕様書が提供されているので、どのようなデータが取得できるのか見ることができます。
JRA-VAN DataLabは、.NET Framework向けのSDKが公開されておりJRA-VAN DataLabを使用するアプリの開発マニュアルなども公開されています。 (↓)JRA-VAN DataLabの資料(ファイルリンク)
JRA-VAN Data Lab.開発ガイド(Ver.4.2.2)(2022/2/22)
JRA-VAN Data Lab. JVData 仕様書
JRDB
中央競馬のデータを取得することができる。
JRA-VAN DataLab同様、基本的なレース情報や成績は網羅されている。
パドックや、馬場が内外どれだけ荒れているかなど、細かい情報も取得できる。
主にデータはテキストファイルをダウンロードすることで取得することができる。
配布されているデータのパーサ(テキストファイル → (PG上で扱うオブジェクト としての競馬データ)への変換)を自分で書く必要がある。
---
■どんなデータが必要か
考え
要りそうな情報を書いてみる
「レース」の情報
いつ、どこで行われたレースなのか
レースの条件(距離とか天気とか)
レースの参加者(馬と騎手)
レースの参加者のスタート時の並び順
「レース結果」の情報
順位
だけ?
その他の情報
馬の体調 ? ..とか
オッズとか賞金の情報
これらはたぶん不要 と思う
(今回やりたい事の 軸として、)
AIが予想してくれる「こと」として目指すのは
→ 「レースの着順」を予想したい。という軸。
「馬の着順」を予想すること とする
---
(実装の話)
実際のところ、(いろいろ)よくわかってない ので適当
機械学習 どの機能を使えばいいのか問題
競馬AI(競馬のレース結果を予想したい) の場合、どうするのがよいのか?
↑のうち、どの機能を使えばいいのか? から もう よく分からない
やりたいこと
過去の競馬レース結果のデータ から 、
未来の( ー 未知の) 競馬レース結果を予測したい?
↓
(考えた結果)
やりたいこととしては これらが近い気がする
回帰タスク :関連する一連のデータの特徴から、その結果のラベルの値を出力する関数をトレーニングにより定義、 その関数に引数として「予測したい 時の特徴 」の条件を与えて実行することで未来の値を予測できる
ランキング:ラベル付きのサンプルのセットからランカーが構築されます。スコアが不明である新しいインスタンス グループをランク付けするように、ランカーがトレーニングされます。 学習データ(インプットするデータ)として
「レースの前提条件」と「レース結果」のセットを与える。
強化学習を行って「レースの前提条件」を引数として「結果」=レース結果 を予想するモデルを構築する。
→そのモデルを使って「未来のレースの前提条件」のときの「レース結果」の値を予測する。 みたいな感じか
よくわかってない
機械学習によって「ランカー」を構築する?
あるモノについて、それのセットがあるときに、
セット内の そのモノ同士を「ランカー」が(何かによって)比較して、順位付けします みたいな感じだったら、やりたい事としては 結構近い気がする
その場合、イメージ的には
学習データ(インプットするデータ)として
「レースの前提条件」&「各参加者 の情報 (騎手x馬 の組み合わせ) 」と「レース結果」のセットを与える。
強化学習を行って「(予想したい場合の) レースの条件」と「各参加者の情報」から、
レースの「各参加者 」同士を「順位」の値でランクキング する「ランカー」を構築する
→ そのランカーを使って 未知の条件のときの結果を予測します、
みたいな感じだったら 結構近い気がする、けど 本当にそんな感じなのか知らない(特に調べてない)
(→ 結論)とりあえず 回帰 でやってみていいのでは。(回帰はチュートリアル(コードサンプル)があって参考になりそう なので ちょっと楽そう) この問題の中心となるのは、ニューヨーク市のタクシー運賃の予測です。 一見すると、単に乗車距離に依存すると思われるかもしれません。 しかし、ニューヨークのタクシー会社は追加の乗客数や現金でなくクレジット カードによる支払いなど、その他の要因によって請求額を変えます。 データ セット内の他の要因に基づき、実際の値である価格値を予測します。 それを行うには、回帰機械学習タスクを選択します。
--
あと、そもそも「レース結果」って具体的に何なのか という話
? → とりあえず A が分かりやすそうなのでそちらを目指す。
→ (A案)「完走タイム」に着目する
レースの条件(距離とか天候とか馬場状態とか) xかける 参加者の情報(騎手と馬) の情報から、
その参加者ごとの 「完走タイム(秒数)」を予想する。
→ それで「未知のレース条件」だったときに誰が一番早いか?を求めて 着順を予想する、とか
(B案)「馬券の買い方」に注目する
例えば、単勝(= 着順で 誰が1位になるか?を当てる)で買う場合、 三連複(= 着順で上位3名は誰か?(3名の順番はどうでもいい)を当てる)で買う場合、... どんな組み合わせで買うのがもっとも「勝てるか(金額 と 確率)」を予想する?みたいなアプローチ、
===
..(以下、ギャンブル予想くん とは全然関係ない話)
「データ野郎」のキャラの例
→ とりあえずAIに聞いてみた 結果
(プロンプト:)
こんにちは。バトル漫画などによくいるキャラクターで「データ野郎」という感じのキャラクターの例を、実在する有名なアニメのキャラでいくつか例を教えてください。
(回答:)
Copilot が送信しました:
こんにちは!「データ野郎」と呼ばれるキャラクターは、バトル漫画やアニメでよく見かけますね。彼らはデータや分析を駆使して戦うのが特徴です。
以下にいくつか有名なキャラクターを紹介します:
乾貞治(いぬい さだはる) - 『テニスの王子様』
-青学テニス部の部員で、データテニスを駆使して戦います。試合中に相手のデータを集め、戦略を立てるのが得意です。
柳蓮二(やなぎ れんじ) - 『テニスの王子様』
-立海大附属の3年生で、乾貞治にデータテニスを教えた師匠でもあります。彼もデータを駆使して戦うスタイルです。
丸尾栄一郎(まるお えいいちろう) - 『ベイビーステップ』
-本作の主人公で、データを基にした戦略で試合に臨むテニスプレイヤーです。彼の成長と共にデータの使い方も進化していきます。
犬牟田宝火(いぬむた ほうか) - 『キルラキル』
-相手の情報を取得・分析することに喜びを感じるキャラクターで、戦闘中もデータ収集に夢中になります。
ネジキ - 『ポケットモンスター』
-バトルファクトリーのファクトリーヘッドで、プレイヤーのポケモンを分析するための「調査・分析マシン」を使用します。
これらのキャラクターは、データや分析を駆使して戦うことで、物語に独特の魅力を加えていますね。どのキャラクターが一番好きですか?
--
テニス多い