WEKA の Randomizable Filtered Classifier を使って予想してみる
第845回トトくじ は、J1 6試合、J2 7試合 というちょっと変わった編成となっています。今節から熊本も復帰するようです。是非良い試合をして被災された方々へ勇気と元気、そして希望を与えてくれたらと思います。巻選手の涙にすべての思いが込められていたと感じます。しかしながら勝負の世界と被災は別の話。厳しい話ではあるけれど千葉も手加減せず全力でぶつかって欲しい。
さて、予想のほうはいつもと同じ 機械学習による予測です。今回はWEKAを使った予想となります。しばらく触ってないうちにいろいろヴァージョンもアップされていて、いくつか変わったアルゴリズムが追加されています。今回注目したのは Randomizable Filtered Classifier というフィルターです。
デフォルトでは IBK というアルゴリズムと組み合わされてひとつの分類器として機能するようになっています。基本的には instance-based classifier であり、各インスタンスの距離の近さでクラス分けする原理です。
このフィルターの特徴は 元になるデータをスパースにするところにあり、デフォルトでは 10 の属性になるようになっています。私のケースでは 48 の次元が 10次元として表現されています。ただ単に属性を10に絞るわけではなくて、数値そのものも変化させて10次元に表現し直している模様。いくつかのテストで良い感触があったので採用してみました。いつものことながら結果については蓋を開けてみなければ分からないです。
以下にいつものように予測一覧表を載せます。
J1 浦和 とか、鹿島 が負けの予想となっていますね。これはどう考えてもやっぱり無謀です。機械の判断なんだけど間違ってる可能性は高いです。名古屋の勝ちも怪しい。当たればファインプレイだけど逆を買ったほうがいいかも。この予想 50%ぐらい当たれば良い方ですね。評価については追記します。
もうひとつ WEKA で気になるアルゴリズムがあったので予測を記録しておきます。
IBKLG というもの。K近傍法 のひとつです。こちらの予測ではフィルターを使ってデータをスパースにはしていません。
結果検証
今回は大荒れ、キャリーオーバーという展開です。予想も大きくハズれてしまいました。簡単にはいきませんね。少し細かく評価してみます。
まず J1 。
冒頭で紹介しているアルゴリズムは Randomizable Filtered Classifier
これは J1リーグ の予想においては そこそこ通用すると判断しています。今節 トト対象外となった3試合とも正解していますし、浦和の勝利を否定しているところなんかも結果的にはハズレましたが印象は良いです。あと名古屋の追い上げも示唆している。完全に読み間違いというのは 仙台ー大宮、そして 鹿島ーマリノスのみ。全体的には勝敗傾向をちゃんと読めているんじゃないかと解釈できます。
同じアルゴリズムによる J2予想はどうか?
全体的印象は デタラメっていうわけではありませんが、まず正解が11枠中 千葉勝利の一個しかない。これは結果からいうとアウト。まったくダメです。しかし細かいところを見ると 清水勝ちを否定していたりしていて、まあまったく使い物にならんという印象でもない。しかし同じアルゴリズムによる予想傾向が J1 とは明らかに違うなあ という感じがします。データとしては J1 J2 はきっちり分けて予測しています。これはデータの性質が違うかもしれないという考えから分けるようにしています。
データの質というか傾向が同じはずなら、もう少し正解率が上がってもいいはず。やはりステージが変わるとデータの示す傾向が変化するような気がします。対策としてはリーグ別にアルゴリズムを変えて予測する必要がある。
IBKLGについては見ての通りで、正解率は前者よりも劣っています。ただ全体的印象としては そんなにデタラメでもないなあ という感じ。展開によっては全然アリな予想だと感じます。まったく当たっていなくて説得力ゼロですけどね。
せっかくなので、他に有望だと感じているアルゴリズムを紹介しておきます。簡単に名前だけ挙げておきます。
weka.classifiers.lazy.LWL
コメント