機械学習+競輪予想:開発日誌:2020/3/16:現在の指標の公開
ガチの分析プロからするとハイハイやってんねーくらいかと思うのですが、これを見て私より気付きを得られる人も多いと思います。
※これは経験からの予測
お世話になっております。
合同会社ムジンケイカクプロ 代表ムジンです。
そこで、単にこういうの面白いなと楽しんでいただける方、情報の有効性を考えられる方、これから分類の予測を機械学習でしてみたい方にのみ情報提供したいため、そのうち有料記事化して限定公開状態にしたいと思います。
また注意で、数値的に何パーセントというのをなるべく省いて、見た目からわかることに言及しています。
機械学習やこの手の分析の初心者様に優しい。(、、、はず)
私は永遠の初心者だから、、、
kaggleに一度挑戦して、銅メダルは取れたけど、疲れからかモノモライできるくらいの実力なので!
数値的に言及している記事は別にもあるので、そちらを見ていただいたり、これから更新されていく記事をお待ちいただければと思います。
さらに、楽天さんの【Kドリームス 】の情報と照らし合わせると、楽しんでいただけるかと思います。
分析している競輪データの中身
2020年1月上旬までの19779レース分の過去データから、数値とその傾向を見直している段階です。
2020年1月末に予測データを順次公開し、収益化しようとしましたが、分類結果が思わしくなく(それでもそれなりに当たるが自分の前提予想と乖離が目立つ)、今の分析では予測と言えないとイチからやり直し。
イマココ→徐々に情報公開できる段階にシフト。
有料記事として値段が安いのは、内容を第三者に校閲いただいていないためです。
個々の箇所が間違っているかもしれないから!
その点は予めご容赦いただけばと存じます。
プラスαで、独学の苦しみを見て笑ってもらうコンテンツとなっております。
現在の競輪予想の分析と傾向
解説と私の予想
ちょっと見づらいと思いますが、上記の画像からわかることと、各項目の解説。
項目数、特徴量
およそ127項目ある。
データを取得した段階では131ある。
127項目を特徴量と呼びます。
説明変数とかなんとか。
面倒なので、もう以下特徴量。
予め、いらない情報を削って数を減らしている。
多重共線性(通称「マルチコ」)を排除するために必要の認識。
「重回帰分析 多重共線性」で調べるといいです。
あまりに特徴量同士の関係性が深いと、機械学習の邪魔になる。
お互いに共通点が多すぎる特徴量を与えると、分析によろしくない。
お天気が晴れか雨か予測する
日差しが強いと気温も高い
日差しが弱いと気温が低い
日差しと気温の関係は仲良しすぎたとしましょう。
天気を判断する情報として意味合いが近すぎる。
これをやってしまうと、数学的に正しい式が得られないらしい。
右足の長さと左足の長さを特徴量にして、身長を予測するとおかしなことが起こる。
似すぎたデータを与えるなということ。
コロッケさんと美川憲一さんを分析しても、ダメだということ。
※?
例えが下手だ。
これは多重共線性で検索してみてください。
予想印
画像中の一番上のびよーんのyoというのが予想印を数値に変換したもの。
競馬新聞とかにもある◎とか○です。
これを1とか2とか、数字に変換して、機械学習している。
これが着順に与える影響は大きいということ。
びよーんと右に伸びていれば影響大として、認識いただいて問題ないはずです。
着順に対しての影響度合いの右にびよーんずだと思ってください。
着順を10クラスに分類
df['着順1'] = df['着順1'].astype('int')
print(df['着順1'].unique())
[2 1 3 4 7 6 5 0 8 9]
0はトラブル、競争中に転んじゃったりとか。
実は1着を予測して、その上位から買った方が当たる状態だったのが、研究序盤。
今はデータ生成時には、最初に10クラスの分類を試している。
まず9車に足りないレースはダミーデータを入れて、一旦9車出る予想にする。
7車とか8車で1レースやったりするんですよ、競輪って。
奥さんご存知でしたか?
その後に、正答率20%台のハイパーパラメータチューニング前の予測を出す。
チューニングっていうのは、最適な設定値に、機械学習をメンテナンスするみたいなことです。
10値分類をやっている理由
海外の論文を見ている時に、確率計算までできている、大学教授か誰かの分類モデルに関する論文を見たことがあって、その確率と自分の仮定する確率がほぼ同じだったため。
正しい予測ができているというフラグにしている。
この後に2値分類化する手法を、仕事をしながら、一年くらい試してきた。
予想印に予測が引っ張られる傾向があるのは、まぁそりゃそうだろなんですけど、グラフ化されてみると、他との圧倒的優位性を感じますね。
オッズ問題
オッズ問題は分析中だが、Kaggleのタイタニックで得た知識が役に立ちそう。
オッズをグループ化して、カテゴライズする必要がある。
これはタイタニックをやっていなかったら、わからなかったこと。
Kaggleさまさま。
この修正を加える前に、予測を公開するフローを整えている。
ここでオッズを10段階に分けている。
オッズの数値を山型のグラフにすると、2000を上限としていいと判断。
そこから2000倍までを100段階にクラス分けした。
いらない数値
下記の記事でまとめた、いらない数値をカット。
この記事を書いている今は、3/3です。
ここで予想印が邪魔だという観点はあるものの、その観点での分析ができていないことに気が付きました。
そこで開発タスクに、予想印を表す指標は他にあるのだから、予想印を消してしまう。を追加。
残タスク
kerasは実装済みで、チューニング待ち。
Masterデータへの機械学習用の数値変換作業を完了すること。
最新データのみ変換作業をできるように、特徴量の前処理を分割。
LightGBMを試す。
予想印を表す指標は他にあるのだから、予想印を消してしまう。
レース場毎に予測をし、予測結果を出力する。
7車と9車のレースで、見た目に大きく隔たりがある部分がわかった。
そのため、7車と9車を別々に予測できるようにしよう。
いつもお読みいただき、ありがとうございます。 書くだけでなく読みたいので、コメント欄で記事名入れてもらうと見に行きます。