無料AI予想=ホームtwitterプライバシーポリシーお問い合わせフォームメンバープロフィールレース前日無料AI予想。世界一の競馬AIを目指します。tandeとは、TryAndErrorをして精度を上げていこうが由来です。part1はじめにお!競馬AI作ってみようかなっていう声がTwitter、Instagramで頂けたので、そういった方の力に少しでもなれればと書いてみます。予想させるAIってどう作るの?どう精度を向上させていくの?というのを書いていきます。私が持っているノウハウを公開していくので、参考にしてください。気長にお待ちいただけますようお願いします。競馬予想AIをつくる流れ目標付け大事です。これがないと続きません。・競馬が好きだから・もっと当てたいから・これで億万長者になるぞ!・機械学習に興味がある・勉強のため・競馬で当たらなさ過ぎて、せっかく夫婦で競馬はじめてみたのにつまらなくてやめそう、、、、なんでもいいです。不純な動機でもなんでもいいので、自分が楽しめるものをやりましょう。(競馬予想AIじゃなくても株でもなんでもいいです。)データ収集データがなければ始まりません。・無料でスクレイピングする・有料のデータを使う・自分で日々コツコツつけていたデータを使う等があるとおもいます。「無料でスクレイピングする」だけでは物足りないのではないか?と思います。理由は、それをみんなやってるからです。スクレイピングしたデータを学習させて、はい終わり!できた!!というQiita等の記事がやたら多い気がします。やるのであれば、それでよいと思います。実際に手を動かして、初めてわかることがたくさんありますし、やっていくなかでこうしたらどう!?というのもわいてきます。スクレイピングには気をつけてください。誰かのコードをコピペして、それにバグがあったら?スクレイピングするサイトに負荷をかけすぎて、サーバを落としてしまったら?他人のサーバにアクセスしていることを理解した上で、迷惑をかけないようにしましょう。大事なことなので、分けました。データって以外と汚いんです。無料でも有料でもほとんど汚いことが多いです。自分が使いやすいように綺麗にする作業が必要です。空白とか変な文字が入っていたら綺麗に取り除いてあげるイメージです。学習させるときにも、シンプルできれいなものを教えたほうが当然精度があがります。機械学習とかAIとかってすごいことに見えるし聞こえますが、魔法が使えるわけではありません。掘り下げたことだと思ってください。重要だと思っています。競馬の知識がいります。(ドメイン知識とか言います。)理解した上で使わないと、良いデータがあっても宝の持ち腐れになります。値がない場合があります。レースが中止になった、初めてのレースでデータがない(新馬)等が該当するかと思います。そこを埋めてあげるorレコードを削除する(新馬戦は予想対象外にする)等を考慮しなければなりません。埋め方は一般的には、中央値で埋めることが多いと思います。他には平均値、最頻値で埋めるということがあります。それもどういった意図で埋めるのかを考える必要があります。機械学習では、学習データは全て数値にしなければなりません。ここで言う数値とは、整数か小数です。機械学習では、数値は、「順序のあるもの」と学習されます。[1、2、3]とあれば、3が一番強いんだ!と学習してしまいます。馬番データを考えてみます。馬番[1,2,3,4,5,6,7,8,9,10]があったとして、10が強いんだ!と学習してしまいます。たしかに外枠が強いレースもありますが、一般的には内枠が有利のことが多いと思います。順序性をつけたデータとして学習させたいか、順序はないただのカテゴリとして学習させたいか?を考える必要があります。カテゴリ変数にするやり方は学習器によって違います。様々な種類があります。categoryとしてpandasに指定するやり方もありますし、ワンホットエンコーディングというものもあります。要するに、馬番1であるか、馬番1ではないかということを示してあげます。1みたいなイメージです)上り3Fは数値で~~~、馬番と枠番はカテゴリ変数で~~~ということも考慮、判断が必要です。データスケーリングデータの単位をそろえてあげることです。上り3Fの単位と、レースタイムの単位は違うデータがあるとします。それぞれの単位を統一してあげることで、機械はわかりやすいデータで学習することができます。・データ変換(対数変換とか)・次元削減(特徴をみながらデータを削減して、学習速度を上げる)、、、などがあります。必要に応じて使用しましょう。重要と思いますので、別として書かせて頂きます。特徴量というのはパラメータのことです。特徴量選択というのは、どのパラメータを学習データにいれるかということです。「特徴量」が重要な理由は、ここで他のAIと大きな差別化ができると考えているからです。「短距離」のレースなら「ロードカナロア産駒」が強いでしょ!これです!!!距離のデータと、血統データを用いて新たなパラメータを追加しています。(短距離かつロードカナロア産駒の場合は1、それ以外は0とパラメータで持つイメージ)ここで、競馬の知識、データ解析して得た知識、その他独自のノウハウが試されるところです。やってみた系の記事、Youtube動画は、データをそのまま突っ込むことしかしてないのではないかと思います。(違ったらすみません)重要ではありますが、一番難しいところでもあります。何十年も競馬をやってきた知識を特徴量として追加して、結果の精度が下がっていた、、、、なんてことも全然ありえるからです。前処理では、0.1や0.01しか変わらないというのはざらです。(前処理をきちんとした上で、技術のある方が調整しても)ですが、特徴量選択で大きく違いがでてきます。する、結果をみる、、、、試行錯誤する必要があります。ここが一番難しいところでもあり、一番楽しいところでもあります。学習ようやく学習です。いっても、学習の仕方は、学習器のチュートリアル通りやるだけです。多少の違いはあれど、ここは差別化できるようなところもあまりありません。(データにあった学習器を選択する、分類させるのか回帰させるのか、目的変数を変えてみる、ハイパーパラメータを調整する、というのは違いがでてきますが、そこまで違いはありません。)一応ざっくり書いておきます。学習器とは、機械学習の学習システムのことです。厳密には違いますが、よく聞くLightGBMを使うのか、Deeplearningでやってみるのかとかそんなところです。目的変数とは、予測させるパラメータのことです。着順を目的変数にすれば、着順を予測するモデルをつくれる。レースタイムを目的変数にすれば、レースタイムを予測するモデルをつくれる。いったようにどの観点から予測させるか、というのも重要になります。結果をみるここも重要ですね。学習曲線をみて、過学習していないか等をみます。過学習とは、学習データについて学習しすぎて、実際のデータで予想させたときにあれ??予想精度全然悪いじゃんってなっちゃうことです。みる]を試行錯誤することが多いです。独自のポイントを考えて結果をみてあげる必要があります。独自のポイントとは例えば、予測上位5頭の中に1着がいれば10ポイント、2着がいれば5ポイント、、、等で平均何ポイントとれているか?みたいな感じで精度をはかることができたりします。競馬AI作成手順をざっくり書きました。細かい話は、次パートでゆっくり書ければなと思っております。間違っていたりしたらコメントください。指摘があることで、精度もあがります。この記事が参考になれば幸いです。件のコメント:コメントを投稿このブログについて技術的に悩んだこと、やってみたことを書き溜めています。自身の復習のため、また同じ悩みがある方は参考にできるような書き方にしていきます。趣味の競馬AI開発と競馬AIでの予想も公開していきます。金曜日に土曜日の中央競馬(JRA)全レース予想、土曜日に日曜日の中央競馬(JRA)全レース予想を公開する予定です。(20)投稿者情報はじめまして。