clew

気になるモノ 気になる人 気になる言葉

*

トト予想についての仮説。 リーグの特徴に合わせてデータとアルゴリズムを変えるべきか。

   

予想について 「単一の考え方では上手く対応しきれていない」 という事実

国内リーグ戦、Jリーグがオフの間に来季のトト予想について今から考えを練りなおして、準備を整えておこうと考えています。このページのテーマは、予測対象について 「より細かい点でフィットする予想方法を考える必要があるのではないか?」 ということです。

従来の私のやり方というのは、単一の方法、手法をもって、「すべての枠を予想する」 というものでした。このやり方では経験的に 「すべての正解を含む予想ができない」 ということが分かっており、なおかつ 絞り込みも難しい。これを補てんする意味合いから、違った予測手法で出した予想を合成するといった手段もあるのですが、これをやると 「効率的なマルチ買い」 といった観点からはかなりズレたものとなってしまいます。 下手な鉄砲 数うちゃ当たる みたいなものではダメですからね。

より精度の高い予想をするためにはどんなことを考えなければならないか?

考えられる方向性をあらためて書くと以下のようになります。

1、トレーニングデータ構成の見直し

2、アルゴリズムの選定と設定

これからこのふたつについて、再度考え方を整理します。

トレーニングデータの限界

まずトレーニングデータには限界があります。ここでいう限界とは 「前もって入手できる」 という意味です。予想するためにはそれなりの時間が必要であり、締め切りまでの時間を考慮すると、予測作業の開始時点での情報量というのは限られてきます。また過去データというのは、かなり詳細に入手できますが、試合前に「試合後のデータ」を参照して予測することは不可能ですので、機械学習による予測においては 「過去の詳細なデータ」 というのはテストデータ作成時にはまったく意味はなく、使いたくても使えないものです。ただし人力予想のケースでは大いに活用のしがいはある。

教師あり機械学習 というのは、すでに分かっているデータを参照して、分類なり回帰予測をすることなので、分かっているデータのみで予測をしなければなりません。仮のデータを作って予測させるのはシミュレーションです。この違いをきっちり認識しなければなりません。

以上の流れから考えると、基本的データというのは次のようになるかと思います。

1、誰が?

2、誰と?

3、どこで?

4、いつ?

5、その結果は?

これにプラス、天候であるとか、あと分かるなら審判であるとか、公式戦のスケジュールとか、そういった要素を付け足してもいいです。複数年度にわたるデータの場合は、1部、2部とか、カップ杯のデータ、年度なども良いかもしれません。もちろん監督交代などもありますから、そういった情報も。

重要なのは、テストデータに不確定要素がないようにする ということ。事前に入手できる情報だけでテストするわけですから、ここが不確定な状態ですとまともに判断ができません。理想はトレーニング属性とテスト属性が完全に一致していることです。

これはクロスバリデーションと大いに関係があります。交差検定というのは教師アリ機械学習においては 「その性能を判断する唯一の方法」 です。すでに分かっている情報だけでどれだけ正しく判断できるか? これを測る目安、指標となります。これで良い数値を出したものが、おそらく未知のデータにおいても正しい判断をするであろう という期待からこういったテストをするわけです。ただし実際に正しい判断を下すかどうかは分かりません。ただ期待値が高いというだけです。

正直言って、これら 「データの作り方」 に関しては、まだ道半ばです。いろいろな形を考えてはきましたが、どれがベストなのか、どうやってそれがベストなのかを判断するのか? についてはまだ定まってはいません。スコア情報というのも重要なファクターではあるけれど、トレーニングには使えても、テストにおいては未知の情報ですから使えない。これをどうやって上手く使えるようにするか? とか、いろいろ工夫している段階です。

ちなみに種明かしとして以下の例を挙げておきます。例題は 第891回トトくじ です。

第891回におけるトレーニングデータ

以下のエクセル画像は 891回における 第1枠

メンヘン 1-1 ホッフェン

の予想に使用した実際のデータです。

891-1%e6%9e%a0%e3%80%80%e3%83%88%e3%83%ac%e3%83%bc%e3%83%8b%e3%83%b3%e3%82%b0%e3%83%87%e3%83%bc%e3%82%bf%e4%be%8b%e9%a1%8c

これを CSV形式で保存し、H2O に読み込ませて予測しました。予測結果は こちらのページ
を参照してください。こうやって実際のデータ構成を公表するのは初めてです。興味のある方はご自分でもアレンジして試してみることをおすすめします。(今後は公開しないかも)

それなりに試行錯誤して作成した結果なので、単純ではあるけれどもかなり使えるデータ構成だと自負しています。

データ構造としては、もっとも単純なものです。黄色のマーキングは空白箇所。この空欄行がテストデータとなっていて、トレーニングデータとテストデータをひとつのファイルに収めた形となっています。

*H2O においては100行までのデータなら上のような形式で予測結果を表示させることが可能(経験上)

このデータ構成における 「意味、考え方」 を説明すると以下のようになります。

1、ホーム と、アウェイ、それぞれのチームの今季における過去戦績を並べる。(ホーム試合かアウェイ試合かの区別はする。)予測対象となるチームが、ホーム、アウェイにおいて、どんな相手に、どんな結果を残してきたか を機械に認識させるため。

2、予測対象となるこれら二つのチームが対戦したらどういう結果になるか?

考え方としてはすごく単純ですね。これ正直言って、機械が行同士の関係性をどうやって把握して、そして計算しているのか全然分からないんですが、(苦笑)結果から言うと、ディープラーニング を使用した予測では見事に正解を出してくれています。

また GBM を使用した予測においても第二候補ではあるけれど、分類確率においては正解を示唆しています。詳しくは先のリンクをじっくり検証していただきたいのですが、こんなシンプルなデータでも(偶然かもしれないが) かなり優秀な予測結果を残してくれています。

しかしぬか喜びはまだ早い。問題は 「このやり方でも間違った答えを出している枠があること」 です。ある枠、対戦カードにおいてはちゃんと正解しても、違う対戦カードではまったく見当が外れている・・・

これはなぜか?

ここがこのページのテーマですよね。非常に前置きが長くなってしまいましたが、「単一の考え方では上手く対応できていない」 ということ。体験的によくよく分かっていることなので、これを解決するためにはこれまでとは違ったアプローチをとらなければいけないなと思っています。

アルゴリズムを変えても根本的な問題は解決しないだろうと思う。

過去に さんざんアルゴリズムを変えて予測した経験から言うと、「アルゴリズムの変更だけでは正しい分類を導くことは不可能だ」 というのが現状での認識です。たまたま891回におけるディープラーニングを使用した予測では好成績を出すことができましたが、こういった現象はかなり以前にもありましたし、今季のトト予想においても、記事にこそ残すことはしませんでしたが、いくつか例はありました。

たまたま好成績を残した予測手法というのは、再現性を測ることがものすごく難しい。汎化性能が高いほど優秀な予測手法だと思うのですが、対象回とかデータによっては 予測ムラ、揺れ幅 が大きすぎて使い物にならない。

そこでいろいろ考えた結果、標準偏差 という考えに行きつきます。

予測手法に標準偏差を取り入れる

単純にいうと、「データのばらつき加減から判断する」 ということですね。これはまだ試行中なのですが・・・

ばらつきの小さいものほど信頼できる

という考え方です。

何のばらつきかというと、それは予測結果の信頼性についての ばらつき です。たとえば エラー率 というものがあります。あるアルゴリズムを用いて予測させた結果、クロスバリデーションを行うと必ずコンフュージョンマトリクスが示され、エラー率 というものが表示されます。

単純に考えて一番エラー率の低いものを選べば良いのですが、ここで標準偏差についても考えてみる。予測結果の正確性について、その内容を調べるわけです。そしてその結果、もっともばらつきが小さいものを 「一番信頼できる予測」 として採用する。平均値として予測誤差が小さいものはダメ。このあたりの考え方についてはいろいろ考える余地がありますね。

実際のやり方についてはまだ試行中です。この作業を個別の対戦カードについてやるわけです。私自身、まだやったことがなくて、その効果については未知数ですが、事前想定ではかなりきめ細かい予測が可能となるのではないかと考えています。


 

実際の予測手法について、かなり踏み込んだ内容になったと思います。追記の予定あり。

 

 

 

 

 

 

 

 - トト予想