●多数の前提条件から最適値を予測するアルゴリズムについて
今回のネタは本物の予想ソフトのことはまるで調べずに,素人のレジャーのレベルで書いているのでそのつもりで読んでもらいたい。
ある四足動物を16ないし18頭走らせて,その着順を当てるというゲームがある。最近はネットでも着順を投票できるので,Webmasterもたまに100円とか200円投票することがあるのだが,これがなかなか当たらない。
まったくの素人なので,投票の根拠にするのは胴元が提供する過去の戦績と,オッズと呼ばれる人気順しかない。
他の情報を一切無視したとしても,18頭それぞれに過去4戦の戦績(着順,地面の状態,乗った人などなど)があり,そこから何らかの法則性,あるいは全体性(ゲシュタルト) を読み取って,今回の着順を決めなくてはいけない。
もちろん「こいつは最近2戦調子がいいな」とか「前回勝ってるけど今回は地面が濡れているし...」といちいちデータを検討して,その上で最終的には山勘や思い入れで投票するのももちろん良いのだが,せっかくエンジニアなんだからもうちょっとインテリジェントに決められないものか。
ある程度の数の過去履歴データを用いて,将来の結果を予測する手法としては,ニューラルネットワークのバックプロバケーションモデルがある。
これは過去の履歴を「教師データ」として与えてニューラルネットを学習させるというモノだ。ここでは教師データとして過去戦績データを使う。入力層は1頭あたり過去4戦の着順,地面状態,通過順位あたりを使うとして,3×18頭分の54通り。出力層は2着までを当てるなら2つ,3着までなら3つだ。
実装だが,幸いrubyにはニューラルネットのライブラリを作っている人もいるし,これを使わせてもらえばいいだろう。
一番手間がかかるのは教師データの作成と学習だ。過去戦績のWebページから,htmlを解析して着順などの欲しいデータを抽出・数値化して学習可能な定型フォーマットに変換する必要がある。上記のアイデアはしばらく前から考えているものだが,この作業に着手するのが億劫で実現できなかったわけである。
このデータ変換プログラム,もし外注に出すなら0.5人月くらいの作業量だと思うが,かんな氏作ってくれないかなー。タダで。
もちろんこの程度のアルゴリズムで本当に当たるとは思っていないが,何かしらコンピュータが着順を予測してくれたら面白いと思うし,いろいろとパラメータを調整したりして遊べると思う。
つづく...のか?
コメント
タダでは作らないにゃー
でも遊び道具としては面白そう
ジョッキーのデータ化は・・・
Posted by: かんな | 2008年10月27日 08:31
>>かんなさん
やはりタダではダメですか。うーん,いきなり頓挫。(^^;
ジョッキーや馬の名前とかをまじめにデータ化するとものすごい手間がかかりそうなので,そこは思い切って抽象化して,過去戦績とオッズに絞れば簡単かなーと。
予想ソフト開発者用に有料のデータ提供サービスもありますけど,レジャーとしては精度は低くてもタダがいいかなと。
Posted by: ソウヘイ | 2008年10月27日 20:52
私が登録しているサイトのデータマイニングは、あんまりあてにはならないです(廿ω廿。。)
やっぱり山勘ですよ。それか私みたいな個人的理由とか(笑)
いろいろ調べるとキリがないですからねf^_^;
Posted by: ごん | 2008年11月01日 13:40
>>ごんちゃん
そうそう,データマイニングとも言いますね。
ホントに当たるものが出来たら,作った人は自分で賭けて大儲けすればいいわけで,ソフトを売る必要なんてないですもんね。
やっぱり山勘がいいのでしょうか。
Posted by: ソウヘイ | 2008年11月01日 19:32
勘ですよ、いつも(笑)
Posted by: non | 2008年11月03日 01:18
>>nonさん
今回はnonさんの勘が冴えましたね〜♪おめでとうございます!
Posted by: ソウヘイ | 2008年11月03日 18:51