競輪データ解析

機械学習とデータで競輪と向き合うブログ

カテゴリー

機械学習による競輪の1着予想・2連対率予想・3連対率予想

ブログに掲載している「本命選手情報」の1着予測値・2連対予測値・3連対予測値について,その値がどのように算出されているか説明してなかったので簡単にまとめておきます。 これらの予測値は機械学習で構築した予測モデルを使用して算出してます(統計分析ソフトにはRを使用)。 日々掲載している本命選手の予測値は私の独断と偏見で出しているわけでないことと,ブログのタイトルにもある機械学習について一度も触れてなかったので記事に起こしました。 Rのコードやモデル・その他実装周りについては晒してもしょうもないので割愛します。

予測対象となる選手の条件

全ての選手が予測対象となるわけではなく,出走メンバーのうち競走得点が最も高く,かつラインの先頭を走る選手に限定してます。必然的に,対象となるレースも限定されます。

 

予測モデル構築のための学習データ

機械学習による予想モデル構築のための学習データとして,2012年1月1日~2017年12月31日までの6年間(13万レース程度)の競走データの中から 前述した予測対象となる選手がいるレースを抽出して学習データとしています(4.5万レース程度)。

予測モデル構築

学習データをRで扱えるよう適当に加工してモデル作成。 (モデルの作成には入力変数の正則化やハイパーパラメータのサーチなど非常に泥臭い作業がありますが省略)

予測精度の検証

学習データとは別に準備しておいた検証用データで予測精度の検証をしてみました。結果を表とグラフで示します(予測値の±3σを10区間に区切って,その予測区間のデータの実際の1着率・2連対率・3連対率をプロット)。 グラフの見方ですが,X軸は予測モデルの予測値(%),Y軸は実際の発生率(%)となってます。 グラフのX軸・Y軸のレンジは同じにしてあるのでグラフの対角線(左下から右上)に対してデータの傾きが小さければ予測値より実際の発生率は低く,逆に対角線より傾きが大きければ予測値より実際の発生率が高いことになります(以下の説明図を参照)。

f:id:ai_keirin:20180328195344p:plain

 

ではここから実際の結果を掲載します。掲載の順序は以下の通り。

  • S級 本命ライン3車 1着率・2連対率・3連対率
  • S級 本命ライン2車 1着率・2連対率・3連対率
  • A級(1・2班) 本命ライン3車 1着率・2連対率・3連対率
  • A級(1・2班) 本命ライン2車 1着率・2連対率・3連対率
  • チャレンジ 本命ライン3車 1着率・2連対率・3連対率
  • チャレンジ 本命ライン2車 1着率・2連対率・3連対率
S級ライン3車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195357p:plain
14 0 0/1
21 20 15/76
28 26 186/713
35 31 515/1662
42 37 666/1823
49 46 713/1557
56 51 545/1069
63 60 335/561
70 65 191/296
77 73 78/107
S級ライン3車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195400p:plain
32 26 5/19
39 41 82/202
46 44 336/756
53 49 658/1334
60 57 953/1687
67 63 1015/1604
74 69 879/1276
81 79 585/737
88 86 217/253
95 96 25/26
S級ライン3車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195404p:plain
45 54 28/52
51 51 130/254
57 56 374/674
63 59 724/1235
69 66 1079/1630
75 72 1213/1680
82 78 1061/1362
88 86 668/781
94 91 202/221
100 0 0/0
S級ライン2車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195347p:plain
11 0 0/0
17 17 2/12
24 25 64/260
31 30 210/709
38 33 260/794
45 41 240/586
52 46 183/402
59 51 107/209
65 64 70/109
72 68 36/53
S級ライン2車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195350p:plain
27 43 3/7
33 37 22/60
40 41 108/266
47 44 268/616
54 50 342/690
60 56 375/672
67 61 269/443
74 70 178/253
80 83 91/110
87 89 32/36
S級ライン2車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328201002p:plain
40 63 5/8
46 49 50/102
51 53 127/241
57 54 302/558
63 59 401/677
69 64 444/690
74 71 349/493
80 76 197/258
86 87 90/104
92 91 20/22

 

A級ライン3車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195312p:plain
13 0 0/1
20 20 21/107
28 25 312/1269
36 33 1031/3135
44 38 1468/3824
51 46 1286/2787
59 55 999/1822
67 64 651/1025
74 74 424/576
82 81 222/273
A級ライン3車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195316p:plain
34 31 14/45
41 38 145/387
48 45 582/1296
55 54 1384/2587
62 59 1940/3314
70 65 1993/3092
77 73 1634/2233
84 81 1035/1283
91 91 516/569
98 98 59/60
A級ライン3車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195321p:plain
48 48 50/104
54 51 202/397
60 57 596/1039
65 64 1300/2033
71 68 1963/2871
77 73 2317/3165
83 79 2094/2655
88 86 1477/1728
94 95 725/766
100 100 91/91
A級ライン2車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195303p:plain
12 0 0/1
18 21 5/24
24 23 78/347
30 28 230/828
37 34 327/957
43 39 302/779
49 44 221/504
55 51 127/251
62 56 75/134
68 73 41/56
A級ライン2車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195306p:plain
25 25 1/4
32 33 24/73
39 35 135/386
46 44 306/697
52 49 434/893
59 56 436/776
66 62 358/582
73 67 212/318
80 77 116/150
87 87 27/31
A級ライン2車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195309p:plain
37 29 7/24
44 42 49/118
51 51 163/318
57 55 354/644
64 60 492/825
70 67 569/850
77 72 480/664
83 81 265/328
90 83 111/134
97 100 5/5
チャレンジライン3車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195334p:plain
20 24 4/17
29 30 75/253
38 33 249/759
47 42 549/1296
56 51 818/1594
65 58 1019/1761
73 69 1191/1722
82 80 1114/1399
91 88 569/646
100 100 23/23
チャレンジライン3車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195337p:plain
44 43 44/102
50 53 132/248
56 54 213/398
62 57 370/650
69 68 613/904
75 70 847/1205
81 77 1173/1521
87 85 1607/1896
94 92 1844/2016
100 96 468/486
チャレンジライン3車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195341p:plain
60 68 84/123
64 63 122/195
69 66 207/316
73 68 307/451
78 77 513/665
82 80 768/956
87 85 1154/1362
91 88 1588/1809
96 94 2252/2399
100 98 1062/1086
チャレンジライン2車 1着率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195325p:plain
9 0 0/1
19 12 18/148
28 27 173/650
38 32 336/1055
47 42 438/1056
57 51 490/957
66 62 472/758
76 74 363/492
85 81 149/183
95 87 13/15
チャレンジライン2車 2連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195328p:plain
25 19 5/27
33 30 37/123
42 42 151/356
50 45 280/627
58 52 440/841
67 61 569/928
75 70 663/949
83 80 727/905
92 91 466/514
100 98 43/44
チャレンジライン2車 3連対率
予測値
(%)
実際の
発生率
(%)
レース数
(発生数/予測数)
f:id:ai_keirin:20180328195331p:plain
43 49 26/53
49 50 58/115
55 57 140/247
62 56 246/439
68 66 392/593
75 68 524/767
81 77 713/925
87 85 892/1044
94 92 871/951
100 96 149/156

おわりに

こんな感じで個人的には概ね期待どおりの性能が出ました。予測モデルの傾向としては本命選手のラインの長さが3車と2車では前者の方がモデルの当てはまりが良い感じです。これはライン2車のほうが学習データのサンプル数が少ないことと、競走がパターン化しにくいことが影響しているものと考えています。
あとでこの予測値を使用した車券購入シミュレーションについての記事を書こうと思ってます。

以下のリンクは機械学習の関連記事です。「機械学習による本命選手ライン2名の2連対率・3連対率の予測」www.ai-keirin.com