KEIBA-ROBOs 開発奮闘記(仮)
博士達が競馬予想ロボットを本気で開発しております
2008-12-01 月曜日(友引)
_ [感想戦] 11月はマチ型1号が良い感じです。
11月は、マチ型1号が通算でプラスとなりました!
マチ型の予想は、全般的に悪くない感じがするので、リカ型の修正が完了したら、この方面の精密化を進めて行きたいと思ってます。
逆にリカ型1号は絶不調ですが、こちらは予想の範囲内。リカ型2号に向けて準備も着々と進んでいますんで(11月のブログ参照)、こっちも上げて行きますよ。
方向性が定まらないのがタキ型。どう進化させたら良いのかなぁ。まあ、マチ型とリカ型を確定させて、それとは違うモノの見方で定式化することになるんだろうなぁ。使ってるツールは違いますが、現在のタキ型1号の仕様はリカ型とベースのところでつながってしまってるんで、もうちょっと違う視点が欲しいところ。なにか良いアイデアありませんかね?
2008-11-29 土曜日(赤口)
_ [データマイニング] ヒストグラムから連続分布へ〜推定:補足〜
ヒストグラムから分布関数(確率密度関数)を推定する方法を3回に渡って説明しましたが、言葉足らずの部分もありましたので頭の整理もかねて補足しておきます。
今回のテーマでやりたい事は、ある事象の起こる確率密度又は確率が知りたい訳です。ところがデータは事象が起こったか起こらなかったかを教えてくれるだけなので、背後にある真の確率密度又は確率(これまでの説明だと g(x) )が判らない場合、多くのデータサンプルを集めて確率を計算することになります。
あるデータ点の値を取る事象の起こる確率は、データサンプルを階級に分けた時の度数から求めることができるので、ヒストグラムの頂点を繋いで行けば確率の関数の各点での値が判るという訳です。
そこで任意のデータの値に対する確率が知りたい時は、ヒストグラムの頂点を結ぶ曲線の式を求めておけば良いことになります。従って点の集まりが与えられた時にその点を結ぶ曲線の推定する事が、連続分布を求める1つ目の主要な要素になります。点の集まりに対する関数の推定は、スプライン補間法や、フーリエ分解、ウェーブレットを利用した方法など多くの方法が提案されています。説明したカーネル関数の線形和を用いた補間法はフーリエ分解やウェーブレットを利用した補間法の一種だと考えることができます。
分布関数の推定では、補間すべき点の集まりがヒストグラムの頂点となる事は述べましたが、分布関数推定についての説明の第1回目で述べたように、頂点の値は階級の幅に依存します。従って確率の関数の推定を正しく行うためには、正しい補間点が必要で、言換えるとヒストグラムの頂点の値が、真の関数値と出来るだけ近い値を取るように、階級幅を決める事が必要となります。これが、連続分布を求める2つ目の主要な要素です。
カーネル密度推定法では、上記の2つの要素を同時に解こうとしているのですが、その一方で背後にある真の確率が判っている時に、分布関数の特徴をもっともよく表すヒストグラムを描く際に使われる、最適な階級幅を決める手法(1回目と2回目で説明した手法です)ともよく似ているので混同し易く、注意が必要です。前回までの説明にはこのような説明も無く、判り難いので補足しておきます。
2008-11-27 木曜日(先負)
_ [データマイニング] ヒストグラムから連続分布へ〜推定〜
前回行った定式化を用いて密度関数を推定します。前回の終わりにMISE(h)を直接推定する事が困難なため、近似を行った推定がいくつか提案されていると書きましたが、逆に言うと最も有効な確立した方法が無い状況でもあります。
話を始める前に、前回導入したカーネル関数に仮定されている性質を書くと次のようになります。
_ このカーネル関数を k 次のカーネルと呼び、k = 2 がよく用いられます。このカーネルの性質を用いると一般的に k 次のカーネルに対して、漸近積分2乗平均(AMISE(h))が次のように表せます。
_ これにより、最適な密度関数は、近似関数 AMISE(h) を最小にする hAMISE を数値的に求めることで推定されます。なお、g(k) は、真の確率密度関数 g(x) の k 階微分であり、本来、真の関数形が分からないと計算できないのですが、数値計算の際は適当な関数で代替(近似)することによって hAMISE を求めて行きます。例えば、^f(x;h) の h に適当な数値を入れた関数を g(x) の代りに上記式に代入して暫定的に求めた ^hAMISE を再度 ^f(x;h) に代入して g(x) の代替とする等が考えられます。
最初に述べたように、他に比べて秀でた近似法が確立されていないため、近似法と数値的な関数の評価法によって種々の方法が提案されています。
2008-11-26 水曜日(友引)
_ [データマイニング] ヒストグラムから連続分布へ〜推定の定式化〜
ヒストグラムから連続分布を推定するためには、推定するヒストグラムの最適な階級幅を決める事が必要な事が、前回の説明から判りました。今回は、最適な階級幅を決めるためにどう定式化して推定するかについて説明します。
ある任意の点 x0 において、推定される階級幅 h を持つ密度関数と未知の正確な密度の間の誤差は、
_ と表せます。ここで平均2乗誤差(MSE)を考えると、
_ となり、右辺第1項目のバイアス(度数に対する誤差)と分散の和となります。
バイアスは階級幅が大きい程大きな値を取り、逆に分散は、階級幅が小さくなる程大きくなります。
これは、g(x0) ; x0 ∈ Ck の漸近表現を用いた以下の近似による評価からも判ります。
_ 以上から、MSE を最も小さくするような階級幅 h を選ぶことができて、この時誤差が、最小になる事が判ります。
実際には上記の各点での2乗誤差を積分した、平均積分2乗誤差(MISE)、
_ が評価する関数としてよく用いられます。
MISE(h) を用いた最適な階級幅 h の推定は、次のように定式化できます。
_ ただ、この方法では、hMISE を求めるために真の関数 g(x) の関数形が必要となり、近似的に求めるにせよ、g(x) が従う関数の概要(例えば、外部要因から真の関数は正規分布に近い形が期待される等の情報が得られる場合は、g(x) に正規分布の関数形を入れて計算すれば良い)が必要になってしまいます。
そこで g(x) の関数形が全く分からない状況においても h の最適値を求めることができる方法について考えることにします。この場合は、まず ^f(x;h) が、ある関数(カーネル関数)の線形和で表せるとして、以下のように定義するところからスタートします。ここで、xi は、実際に観測した点(確率変数の観測点)を表します。また、カーネル関数 K(u) は、通常、ガウス関数のように対称な確率密度関数が使われます。
_ この関数を用いて再度 MISE(h) を求め、h の最適値を推定して行くことになります。
以上で最適な連続関数推定の定式化と推定への道筋の説明が出来ました。ところが、よく使われるガウス関数をカーネル関数として採用しても、計算すべき MISE(h) は、閉じた解析解で書く事が出来ず、積分が有るため計算も困難です。そこで、近似を行って MISE(h) を評価する方法がいくつか提案されています。
これについては明日続けて説明しますので、お楽しみに。
2008-11-18 火曜日(赤口)
_ [データマイニング] ヒストグラムから連続分布へ
リカ型1号では使っているデータがガウス分布に従っているとして計算していますが、精度向上のためデータから分布を推定するロジックに変える計画です。そこで使われる確率密度分布推定について。
_ 推定する対象はヒストグラムなのですが、棒グラフであるヒストグラムは、その棒の幅の取り方によって大きく形が変わります。例えば次の図は同じデータを、幅を変えてヒストグラムにした場合の図です。
_ となります。このとき、確率の線密度は、
_ と書けます。ここで、h は階級の幅で、h = tk+1-tk です。また、
_ を満たします。データがある階級に入るか入らない確率が一定のとき、階級を設定してデータを配置する試行はベルヌーイ試行ですので、度数は2項分布 B(n,pk) に従います。ここで、度数νk が実現する確率をpk とすると、未知の正確な確率線密度関数g(x) を用いて、
_ と表せます。また、度数 νk が2項分布に従う事から、期待値と、分散は以下のようになります。
_ よって線密度関数に関する期待値と分散は、
_ となります。
以上で、ヒストグラムに関する基礎的な関係が定式化できたので次回に最適な階級幅と密度の推定の説明をします。
2008-11-13 木曜日(先勝)
_ [データマイニング] 統計いろいろ:相関係数
データマイニングは、統計の手法を組み合わせてデータの持つ性質を理解します。データの性質を調べる基本は2つの量の間に関係性が有るか無いかです。関係の強さは相関係数と呼ばれる量で評価できます。x、yの量の間の相関係数は次のように
_ です。ここで、,
は、それぞれx、yの平均値です。相関係数についての解説は他に譲るとして、以下にまめ備忘録を列挙します。
● 相関係数の有意検定
(相関係数が0である)母集団から抽出した標本に関する相関係数をrとした時、
_ は、自由度N-2のt分布に従います。よって、母相関係数が0である、という仮説が棄却出来るかどうかによって検定できます。
● 回帰と相関:x,yの相関係数をRとすると、回帰式は、
_ とかけます。ここで、Sijは変数i,jの共分散。また決定係数=R2
● Pearson積率相関係数
相関係数の絶対値 解釈
0.0〜0.2 ほとんど相関関係がない
0.2〜0.4 やや相関関係がある
0.4〜0.7 かなり相関関係がある
0.7〜1.0 強い相関関係がある
● Spearman順位相関係数
Pearson相関係数に準ずる。
● Kendall順位相関係数
上位二つとは目安が異なる。
▪ 独立係数(質的×質的):Cramer's V
0.0〜0.1 ほとんど相関関係がない
0.1〜0.3 やや相関関係がある
0.3〜0.5 かなり相関関係がある
0.5〜1.0 強い相関関係がある
▪ 相関比(量的×質的)
0.0〜0.25 ほとんど相関関係がない
0.25〜0.5 やや相関関係がある
0.5〜0.8 かなり相関関係がある
0.8〜1.0 強い相関関係がある
以上、相関係数まめ備忘録でした。
2008-11-11 火曜日(大安)
No. 性別(S) 年齢(O) 血圧(P) 効いた薬(D) 1 男 20 中 A 2 女 73 中 B 3 女 37 高 A 4 男 33 低 B 5 女 48 高 A 6 男 29 中 A 7 女 52 中 B 8 男 42 低 B 9 男 61 中 B 10 女 30 中 A 11 女 26 低 B 12 男 54 高 A
_ でした。前回の説明に沿って進めると、分類属性Cは効いた薬(D)で、その属性値CiはA, Bの2種類です。また、
N : データのサンプル数 = 12 nA : CAを取るデータのサンプル数 = 6 nB : CBを取るデータのサンプル数 = 6
_ となります。血圧(P)[低、中、高]を分類に使用する属性として選択した場合各エントロピーは、
_ となります。なお上記の計算では血圧(P)の属性値、低、中、高の順に計算しています。よってこの時の情報量利得、情報量利得比は、
_ となります。一方分類に性別(S)[男、女]を使用すると、
_ で、Gainの値は負となり性別が分類に使用されない事が判ります。
ようやく復習できてきたので次回から他のいろいろな属性選択指標の話を続けます。
2008-10-16 新型ロボット完成
2008-10-01 水曜日(大安)
_ [雑記] オールカマー
いやぁ、更新が滞ってる間に始まっちゃいましたね、秋競馬。感想戦を書く気がしないほど悲惨な夏競馬の予測結果でしたが、9月28日の阪神12レースで2万円馬券を当てて幸先良さそうですよ(笑)。
嘘々、幸先が良いとか、そんなオカルト目指してる訳じゃないので反省すべき点はちゃんと反省しております。現在、タキ型2号のために1号の問題点を徹底的に洗っているところです。近いうちに2号をアップしますんで、もう暫くピーキー予測のタキ型1号とお付き合い頂ければと思っております。
今頃タキ型1号の問題点整理?、夏の間、いったい何をしてたんだい?、と言う方は、トップページのロボット紹介をご覧下さい。ついに、リカ型と、マチ型の1号が動き出しました。インターネット上で公開するのはもう少し先になるかもしれませんが、既に予測結果を吐き出しており、マチ型の方はかなり良い感じです。残念ながらリカ型の方はチューニング不足で1号の予測性能は高くありませんが、基礎となる理論体系がしっかりしてることや、チューニングの方向が明確なんで、2号、3号辺りは期待大です。
ようやく3タイプのKEIBA-ROBOが出揃い、本格的なチューニングも始まりました。ここからが本当の意味でのスタートです。今後のKEIBA-ROBOの超進化にご期待下さい。
2008-09-25 木曜日(先負)
_ [データマイニング] 決定木 その三
決定木その二では、決定木学習の概要を説明しました。今回は生成される分類ルールの善し悪しを決める、分類に使用する属性選択指標について説明します。決定木のロジックの心臓部と言えるこの指標は多種多様な指標が考案されていて、タキ型1号で用いている分析ツールでも29種類の指標が用意されています。
(この分析ツールに関しては機会を改めてご紹介する予定です。)
さて、ここでは代表的な4種類の属性選択指標を説明したいと思います。
指標自体の説明の前に説明に使う言葉と変数の定義をしておきます。まず、決定木学習によって出来る、ある属性によって分割されたデータのサブセットをノードとよび、最終的に到達するノードをリーフと呼びます。
決定木の学習に用いるデータについて、目的とする分類属性Cの属性値をCi (1 ≤ i ≤ nC)とします。このとき、全てのデータ又は各ノードそれぞれについて、次のような数が決められます。
N : データのサンプル数 ni : Ciを取るデータのサンプル数。ここで、分類に使用する属性選択の指標は属性毎に同じ形式で定義できるため、ある一つの属性に関してまず考えるとさらに以下のような数が定義できます。
nj : 与えられた一つの属性に関してjの属性値を持つデータのサンプル数 nij : Ciの値を取りかつ、jの属性値を持つデータのサンプル数を持つデータのサンプル数つまり、iは分類の目的に関する属性値、jはデータを分割する属性値に関する添字になります。以上から対応する頻度の比を用いた以下の確率、
pij=nij/N pi=ni/N pj=nj/N pi|j=nij/nj
_ が算出できます。これでようやく属性選択の指標のための基礎量が定義できました。
最初に紹介するのは一番古くから使用されている指標の一つで、情報理論で定義されている情報量を基にした指標です。
ある事象Eが生じる確率をP(E)とするとき、情報量は-log2P(E)で定義されます。複数の事象に対する情報量は、その期待値で見積もられ、平均情報量(エントロピー)と呼ばれています。そこで、上記の分類と属性に関するサンプル数の頻度から算出した確率を用いて以下のエントロピーを考えます。
分類を試す属性Aに関しての情報量の変化を次の情報量利得で計算します。![]()
_ このGainが情報量に基づく属性選択指標で、Gainを最大にする属性が選ばれます。この指標は決定木の代表的な学習アルゴリズムである、ID3で用いられています。式から判るようにGainが最大となるのは、HC|Aが最小の時なので、目的とする属性の分布が最も偏るような指標が選ばれます。
この指標の改良版として、次の比の値、
_ が提案されており、現在最も良く使用されている学習アルゴリズムであるC4.5でも使われています。
ようやく1つめが終わったところですが、長くなってきましたので次回へ。
(C) 2008 KEIBA-ROBO制作委員会 All Rights Reserved.





