競馬に勝つためのデータ分析の有用性を考えてみた

シェアしていただけると励みになります!

データ分析する数字の画像イメージ

競馬を予想するにあたって、一般の馬券師は馬のタイム・騎手・厩舎・血統・オッズなどから予測し、予想することだと思いますが、そのほとんどは単なる思い込みによるものが多くなってしまいがちです。

MySQLを利用することで、膨大なデータも一括で分析ができますので、これだけ見てもデータ分析は有用性があると言えるでしょう。

私も勉強中なので、全てを紹介することはできませんが、MySQLでできる競馬のデータ分析に有用と思えるものを順次、修正・追加していきたいと思います。

SPONSORED LINK
アドセンス

デシジョンツリーは競馬にピッタリ?

私自身、競馬分析をしてみようと思ってから初めて聞く言葉でしたが、デシジョンツリーは決定木とも呼ばれているようです。

何のことかサッパリ分からなくても大丈夫です。私も同じです。以下に健忘録もかねて、まとめてみたいと思います。

間違えている部分があるかもしれませんが、競馬のデータ分析が有用であることが分かってもらえれば、きっと大丈夫ですよね?(笑)

デシジョンツリーを詳しく知りたい方は、決定木 – Wikipediaを一読ください。

デシジョンツリーって何?

データマイニングといえば、JRA-VANでも提供されているので聞き覚えのある方も多いはずです。データマイニング手法は 予測と分類を目的にしたもので、予測を目的にしたものを「回帰木」と言い、分類を目的にしたものを「分類木」と分けて呼ばれます。

  • 予測と分類を多段階で行う。
  • 多段階の分岐を階層化し、樹木図で表現する。

うん。何のことかさっぱり分かりませんので、図で見てみましょう。

デシジョンツリーの説明画像

図解1 : デシジョンツリーは木を逆さまにしたような状態

デシジョンツリーは樹木を逆さにした状態で見ることでグッと分かりやすくなります。木の幹 部分が目的変数で、枝部分が説明変数になります。

以下、引用ですがゴルフをするかで決定木を作った図があります。

ゴルフを目的変数にした決定木の画像

図解2 : ゴルフを目的変数にした決定木

分類木を自動生成するアルゴリズム(詳細は述べない)があり、それを上の表に示すデータセットに適用すると、従属変数である「ゴルフをするか」を説明する最も良い方法は、変数「天気」を用いることだという結果が得られる。

変数「天気」の値によって表を並び替えると以下の図のようになる。

天気を説明変数にした決定木の画像

図解3 : 晴れ・曇り・雨の3グループができる

変数「気温」の値によって表を並び替えると以下の図のようになる。

気温を説明変数にした決定木の画像

図解4 : 明確なグループ分けができない

出典:決定木 – Wikipedia

以上のことから、説明変数の選択によって、信頼できるデータ信頼できないデータが現われるということが分かる。

デシジョンツリーを競馬に当てはめてみる

まだ分かりにくい場合はデータ分析したい競馬に当てはめて考えてみましょう。

デシジョンツリーを競馬に当てはめた画像

図解5 : 目的変数:1着馬 ・ 説明変数:タイムなど
  • 第一段階は、目的変数を決める。1着になるかならないか
  • 第二段階で、説明変数 = 過去競走馬のタイムや騎手などで分類

一般の馬券師は馬のタイム・騎手・厩舎・血統・オッズなどから予測し、この馬が1着に来る可能性が高いと予想することだと思いますが、そのほとんどは単なる思い込みによるものが多くなってしまいがちです。

デシジョンツリーを競馬に当てはめてみると、1着馬を目的変数にすることで、そこから様々な分析が可能になる。有用なデータを見つける事ができると、単なる思い込みを 確信に変えることができる可能性がある。

当然、過去に起こった現象が、未来でも必ず起こるとは言えないですが、なんとなくワクワクしませんか?

分類木を自動生成するアルゴリズムがあるというのが気になりますが、(私もまだ分かりません)ここでは、競馬に勝つためのデータ分析の有用性を考えるのが目的ですので、以後調べることにして、ここでは省きます。

このように、自分だけの有用なデータを見つけるためには、MySQLでデータ分析することが近道になることだと思います。

基本統計量は馬毎の能力判断にピッタリ?

これはあくまで一つの例としてのものです。例えば、馬以外にも騎手・調教師・種牡馬・血統・オッズなど、人によって分析する方法は様々だと感じるからです。

当然、競馬は多数派の予想になってしまうと負けに近づくことになってしまいます。スピード指数などが良い例で、大多数の人が
使い始めると、それに伴い回収率も著しく低下してしまいます。

理想は、まだ誰も予想に使用していないロジックを使用し、かつ そのロジックの回収率が100%を超えることです。

少し話が逸れましたので 元に戻しますが、基本統計量でオリジナルを見つける事が重要だと考えます。

基本統計量には、代表値と散布度があります。

代表値

代表値には全体的な傾向を表すことができるもので、3つの値があります。競馬で考えると、それぞれ多種多様な使い方ができそうです。

平均値

私も知っていた(笑)一般的に知られているのが平均値です。データの合計をデータの個数で割り算するだけのものです。競馬では調べたいデータの平均を求めるときに使えますね。

MySQLでは、AVG関数で平均を求めることができます。

中央値

データを大きい順に並べて丁度、真ん中にくる値が中央値です。

「1.2.3.4.5」のデータがある場合、平均値も中央値も = 3 となりますが、「1.5.7.8.9」のデータがある場合、平均値 = 6、中央値 = 7となります。

特に競馬の場合、平均値よりも中央値の方が信頼できるケースがありそうです。

最頻値

「1.1.1.2.2.2.2.2.3.3.4.4.5」のデータがある場合の最頻値 = 2となります。

競馬でしたら上がり3Fや、脚質を調べるなど、向きそうです。MySQLでは、最頻値関数が用意されていないようですので、自身で式を作る必要があるようです。

平均値・中央値・最頻値を比較

平均値・中央値・最頻値が全て同じ 3と、指標数が等しい場合と、平均値が3、中央値が4.5、最頻値が 6と、指標数が等しくない場合があります。

以上の事から分かるのは、特に競馬において、平均値のみで判断せず、全ての代表値の度数分布を確認する必要があるということです。

散布度

散布度はデータのバラつきを表すものです。

最大値

データの中で最も大きい値です。

MySQLでは、MAX関数でデータの最大値を求めることができます。

最小値

データの中で最も小さい値です。

MySQLでは、MIN関数でデータの最小値を求めることができます。

範囲

最大値 – 最小値 = 範囲です。データの幅を表します。

MySQLでは、MIN関数でデータの最小値を求めることができます。

分散・標準偏差

次のようなデータA・Bがある場合

データA 4 5 6 7 8
データB 0 1 8 10 11
  • データ A の平均:(4 + 5 + 6 + 7 + 8) ÷ 5 = 6
  • データ B の平均:(0 + 1 + 8 + 10 + 11) ÷ 5 = 6

と、どちらも平均は 6になります。この平均値は同じ扱いをすると信頼できないものになります。そこで分散を求めてみましょう。

A・B の分散は次の式で求めることができます。

{(観測値1 – 平均値)2乗 + (観測値2 – 平均値)2乗 + (観測値3 – 平均値)2乗} ÷ (データ数 – 1)で求めることができます。

データAの標準偏差: 2.5

データBの標準偏差: 26.5

これで、A・Bどちらがバラつきのない信頼できるデータになるのかが見えてきました。MySQLで式を作ればいいですね。

まとめ

このように、デシジョンツリーを基に、基本統計量を使用するだけでも競馬分析に有用であると思いませんか?(思い込みかもしれませんが、私はそう思いました。)

競馬に勝つためには、競馬データのどこに注目し、どのように分析し、分析したデータの回収率が100%を超える、自分だけのデータを見つける事が出来るかが重要だと思います。以上、競馬データの有用性をまとめてみました。

競馬データを分析してみたいという方がおられましたら、競馬データベースを構築する方法をまとめた記事がありますので、参考にしてみてください。

競馬データベースを構築するための 6つの手順のまとめ
1から自分で勉強して、競馬データベースを構築しようと思うと、大変な時間と労力が掛かってしまいますが、無料のソフトのインストールとセットア...

長く、中途半端な記事になりましたが、MySQLがあれば、統計分析などが簡単にできるという事が分かっていただけたと思います。あなたの回収率向上に繋がることを祈って今回は締めさせていただきます。

SPONSORED LINK
アドセンス
楽天336×280

シェアしていただけると励みになります!

コメント

  1. だい より:

    しばらく更新されてないみたいですが、参考になる情報をありがとうございます。
    SQL入門書籍を読んでもよくわかりませんでしたが、ブックマークし、今後の参考にさせていただきます。

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">