clew

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

ちょっと気が早いが・・第644回トトくじ 本トト13枠の賞金額を予測してみる。

対戦カードの組み合わせ表から賞金額を予測することは可能か?

今回はWEKAを用いて”対戦カード情報”から、その開催回での賞金額とか当選口数を予測してみます。

なぜ賞金額とか当選口数の予測が必要なのか?

動機としては”予測の絞り込み”ということ。

普通の予想では、各対戦カード個別にフォーカスして行います。
たとえば 「1枠の対戦カードはこうだから、おそらくこっち・・」みたいな感じで13枠すべてについて予想します。

これを13枠全体で見直した場合、予想結果の組み合わせ全部についてそれぞれ”予想賞金額”は算出することができる。

これは TOTOX というフリーソフトを使えば可能です。
(おそらくみんな知ってるはず)

しかし問題がある。
それは”買いの点数が非常に多くなる”という点。

この”予想賞金額”を正確に予測することができれば・・・予想においてはかなり有利になります。
そういうわけで、この”対戦カードの組み合わせ表から賞金額を予測する”という試みを行うことにしました。

対戦カードの組み合わせ表から賞金額を予測する具体的手法について

まず、今季の本トト 13枠 について以下のようなCSVファイルデータを作成しました。

f:id:swat777:20130720112200j:plain

表の左側、チーム名が並んでいます。
これは13枠の組み合わせを開催回別に上から並べたもの。

1枠から13枠まで、ホームチーム名を並べ、その次にアウエイを並べました。
これらすべてを”説明変数”とします。

右側には各開催回に対応するように賞金額と当選口数が並べられています。
こちらは”目的変数”です。

第644回(つまり予測対象開催回)については”対戦カード情報”については同じように並べて
、数値部分(賞金額など)については”?”と入力しておきます。

※ 注意点として、作成したデータの最上部(各列の頭部分の枠)には必ず”半角英数”で属性名を付けてください。
これがないとエラーとなって読み込んでくれません。
また日本語ですと文字化けして、あとで使いにくくなります。

画像サイズの関係からデータ全体を貼り付けてはありませんが、イメージはつかめると思います。
これをCSV形式で適当なフォルダに保存します。

作成したデータをWEKAに読み込ませてみる。

次は実際にWEKAにデータを読み込ませてみます。

f:id:swat777:20130720123429j:plain

上の赤丸で囲った所、ここにはチェックを入れてあります。
これは”必要のない属性”をデータから削除するためです。チェックを入れて下の赤丸・・REMOVE を押すとデータから消えます。また戻すときは上から二番目のタブ列にある UNDO を押します。こうするとまた元に戻ります。

この場合、開催回という属性は必要ないので消します。
あと、2等、3等賞金とか口数の情報もその都度消したり、あるいは付け足したりしてみてそれぞれ予測して、結果を比較してみるというのもアリですね。

どの分類器を使えばいいのか?

さて、データの読み込みと前処理を行ったら、次は実際の予測に入ります。

私のこのケースでは”目的変数”は数値になっています。
こういう場合、WEKAにおいては”分類器=CLASSSIFIERS”ではなく”REGRESSION”を使います。
まあ、回帰になると思います。

アルゴリズムによっては名義属性でも数値属性でもどちらでも分析できるものがあります。
たとえば MLP(マルチレイヤーパーセプトロン)など。今回はどれにしようか悩みますね。
正直言って”アルゴリズムの選択”によって出力結果はひどく変わりますから。
いろいろテストを繰り返して最終的な信頼度を自分なりに見出すしかないと思っています。

ちなみに 属性数=次元数 が多くなると、この MLP などはすぐに容量オーバーとなってしまって、計算が途中で止まってしまいます。今回は26次元以上という非常に多い次元数でしたので、案の定ストップしてしまいました。
もっと少ない次元数でも非常に時間がかかったりします。

しょうがないので今回は KSTAR で予測してみましょう。

KSTARによる賞金額と当選口数の予測

使用したスキームは bagging
その中で kstar を予測アルゴリズムとして設定しました。
以下がその結果です。

1等賞金額 140381907.326
1等当選口数    1.735

1等賞金額は およそ 1億4千万円程度、当選口数は 1口から2口ぐらいという予測結果ですね。
アルゴリズムに関してはあまり詳しくありませんが、あえて言えばこの KSTAR・・・過去事例をもとにして推論、推定をおこなうアルゴリズムらしい。
おそらく”最近傍法”というものではないかと思います。事例が多いほど精度も上がるんじゃないかと思います。

まとめ

今回は bagging , kstar というアルゴリズムをつかって WEKA において”賞金額と当選口数の予測”を行ってみました。
私自身、初めての試みで、この手法によるバックテストなどは行っていません。なので結果については何とも言えませんね。
試合結果がでてからまた検証してみたいと考えています。

これが上手いこと予測できればかなり絞り込めそうなきがしますが、それでもかなりの組み合わせが候補に挙がることにはなるでしょう。
また面白いアイデアが出てきたら、いろいろ試してみたいと思います。おわり。