clew

どっかの誰かの役にたてばうれしい。

トトくじ13枠(本トト予想)においてパーフェクト予測に成功した事例を公開する。

第599回トトくじにおいてパーフェクト予想を達成。

長い間、封印していた予測手法とその内容、経緯を今回詳細に説明したいと思います。
これは単なる偶然かも知れませんし、あるいはまた同じ事を再現できる可能性もあります。

本来なら、こういった情報はあまり公開すべきものではないかもしれません。
私としては”勘に頼ることなく勝敗を予測できる可能性”について知って頂くことを目的として公開することにしました。

これまでの経緯

機械学習でトトくじを予測させる試みは昨年シーズン途中から本格化させました。
”本格化”といってもWEKAを使って我流でデータをぶちこんで結果を見てまた繰り返す・・・といった感じです。

必要な情報はすべてネットから拾い集めたものばかりで、参考書やテキストといったものはありません。
バラバラに散らばった情報の断片を自分なりに再構築させ、自分のレベルで分かる範囲で応用するだけです。

色々なやり方を自分で考えだし、毎回試行を繰り返してきましたが、いずれもパーフェクト予想には至りませんでした。
それは現在も続いています。
しかし今回公開するデータと手法においてだけは、(1回限りではあるけれど・・・)完璧に13枠を捉えることが出来ました。

目的変数を変えることで予測範囲が広がった。

パーフェクト予想につながった要因のひとつに”目的変数の変更”があると思います。
これを変えることによって視界が拡がります。

従来は、トトの結果である・・・ホーム勝ち、引き分け、アウエイの勝ち、という3個のどれに分類されるか?
という”分類”のみにフォーカスして考えていました。

これを、”ゴール数の予測”に切り替えて考えてみたわけです。
これは属性の尺度によりますが、数値の場合は ”回帰分析” になると思います。

与えられた条件から ”数値を予測する” わけですね。
そして得られた数値から勝敗について予測するわけです。ただしこの場合は”引き分け”については判断が難しくなる。

第599回トトくじについて具体的な予測手法を公開します。

さて前置きが長くなりましたが、具体的手法について書きます。
まずはデータから説明します。

f:id:swat777:20130725155007j:plain

上の画像がWEKAに与えるデータの全体の様子です。
1行にあるデータ(属性)を以下に左から順に書き出してみます。

  • ホーム投票率
  • ドロー投票率
  • アウエイ投票率
  • ホームチームの対戦前のリーグ順位
  • アウエイチームの対戦前リーグ順位
  • 試合会場
  • ホームチーム名
  • アウエイチーム名
  • ホームチームのゴール数

表の一番上の列を見れば分かりますが、ずらーっと9個の属性名が並べられています。
次の画像はデータの最後の箇所です。

f:id:swat777:20130725160127j:plain

赤い線で囲った箇所は599回の予測の行です。
ここは”まだわからない=予測する箇所”なので”?”と入力します。

551回から598回までのデータに599回のデータをくっつけて、予測数値に?を入力するわけです。
これを”CSV形式”で適当なフォルダに保存します。

上の画像の例では、「ホームチームのゴール数」 を予測する場合です。
アウエイチームのゴール数予測については”属性の最後の列”をアウエイのデータに差し替えるだけです。
もしくはWEKAの REMOVE でデータを切り替えてもOKですね。

ここでのポイントは・・・両チームのゴール数を併存させてプログラムを実行してはいけないということ。
必ずホームゴール数データとアウエイゴール数データは(読み込みファイルとしては)分離しておいてください。

WEKAに読み込ませるデータについては以上です。

WEKAの”CLASSIFY”は何にするのか?

次は実際の分類器、および回帰についてです。
今回のケースにおいては”数値の回帰、REGRESSION”ですから、フィルターでの属性変更はしません。
先に作成したデータでは最後の列がそのまま予測する行として認識され、使えるアルゴリズムも自動で制限される仕様になっています。

作業手順 :


1、データを読み込ませたら”CLASSIFY”をクリック。

2、”CROSS-VALIDATION” から ”USE TRAINING SET” に変更。

3、MORE OPTION をクリック、メニューの”OUT PREDICTION”から ”CHOOSE”をクリック、PLAIN TEXT を選択。OKで閉じる。

4、左上部二段目の CLASSIFIER の CHOOSE をクリック。

5、メニューから ”LAZY”をクリック。

6、開いたタブから ”KSTAR”を選択する。

これで実際にプログラムを走らせる準備ができました。
KSTARの設定はデフォルトでOKです。あとはスタートを押すだけで計算が始まります。

599回の予測結果を見てみる。

f:id:swat777:20130725163416j:plain

赤丸で囲った所が予測結果です。
実際の試合結果と照合してみます。

何度見ても震えるパーフェクト予測!!

f:id:swat777:20130725173500j:plain

この表はアウエイチームのゴール数についても同じように予測させて数値を出し、それらを結果と照合したものです。

我ながら何度見ても震えます。
このような予測方法の場合、たいていのケースでは小数点が付いた数値となるのですが、今回のケースでは一部を除き整数での予測値が多くなっています。

原因は分かりませんが、ほぼ結果と同じ予測となっているのが分かります。
毎回、これぐらいの精度で予測できれば言う事ありませんね。この599回付近の開催回について同じように予測してみましたが、残念ながらパーフェクトは、この599回予測のみとなっています。

予測用データについての補足説明

今回の予測で使用したデータについての補足説明です。

1、使用したデータ範囲は、551から598回までの”本トト13枠”のみです。

2、データの左部分3列は、いずれもトト公式サイト最終支持率を使用しています。

まとめ

この一連の予測手法は”バックテスト”として行われました。
つまり599回のトト開催が行われた後に行ったわけです。

テスト終了後にチェックした個所は以下の通り。

1、試合終了後にしか知り得ない情報を使っていないか?

これはクリアしています。
試合開始前にしか入手できない情報のみで予測していることは確かです。
したがって”後からどうにでも操作できるのでは?”といった疑念を差し挟む余地はありません。

今回、時間をおいてあらためて再度テストしてみました。
紹介した方法は残念ながら毎回のパーフェクト予想を実現できる方法ではありません。
しかし、現実に13枠すべてを正確に予測することが機械的予測で可能であることが分かって頂けたかと思います。

以上です。おわり。