default eye-catch image.

最尤推定 確率分布をもったトレーニングデータの学習

[mathjax] 前回までのエントリでトレーニングデータからパラメトリック曲線とそのパラメタの導出方法を書いた。 観測点(xn,tn)の背景にあるパラメトリック曲線を求める パラメタの評価式を決定する 評価式の値が最良になるようにパラメタを決定する 実際にはトレーニングデータはパラメトリック曲線から発生したデータではなく、パラメトリック曲線はあくまでトレーニングデータとの最小二乗誤差が最小になる曲線に過ぎない。 未知のサンプルデータの特徴をよりうまく含む方法を考える。 実際のサンプルデータが、トレーニングデータから導出したパラメトリック曲線から±σの誤差を持つデータであると仮定することで、サンプルデータの特徴を確率的に捉えることができる。これによりサンプルデータが「どれ位の範囲で当てはまるか」を推定できるようになる。 ITエンジニアのための機械学習理論入門posted with amazlet at 17.03.10中井 悦司 技術評論社 売り上げランキング: 8,130Amazon.co.jpで詳細を見る 正規分布の確率密度とパラメトリック曲線 統計・確率の基本中の基本、正規分布の確率密度。データxの発生頻度の平均がµ、分散がσ2である場合の確率密度は次の関数で与えられる。 $$ N(x|mu,sigma^2)=frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}(x-mu)^2} $$ で、今、M次多項式を考えている。 $$ begin{eqnarray} f(x) &=& w_0 + w_1x + cdots + w_Mx^M &=& sum_{m=0}^M w_mx^m end{eqnarray} $$ サンプルデータxnに対し観測値tがf(xm)を中心として±σ散らばることを考えると、tはfn,σ2から決まる式となる。 $$ begin{eqnarray} N(t|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t-f(x_n))}^2} end{eqnarray} $$ トレーニングデータからパラメータを決定する 未知のサンプルデータ(xn,t)ではなく、トレーニングデータ(xn,tn)を代入すると、 $$ begin{eqnarray} N(t_n|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t_n-f(x_n))}^2} end{eqnarray} $$ である。このモデルからトレーニングデータ(x0,t0)が得られる確率P0は以下の通り求まる。 $$ begin{eqnarray} P = frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{t_0-f(x_0)}^2} end{eqnarray} $$ ここで、このモデルから全てのトレーニングデータ{(xn,tn)}n=1Nのデータが得られる確率Pは条件付き確率として以下の通り求まる。このPを尤度関数という。 $$ begin{eqnarray} P &=& N(t_1|f(x_1),sigma^2) N(t_2|f(x_2),sigma^2) cdots N(t_n|f(x_n),sigma^2) \\ &=& prod_{n=1}^N N(t_n|f(x_n),sigma^2) end{eqnarray} $$ f(xn)は係数行列wが未決定であり、分散σ2も未決定である。Pを最大化するようにf(xn)=wとσ2を決定する。積を分解して整理すると、 $$ begin{eqnarray} P &=& prod_{n=1}^N frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{t_n-f(x_n)}^2} \\ &=& bigl(frac{1}{2pisigma^2}bigr)^{frac{2}{N}}expBigl[-frac{1}{2sigma^2}sum_{n=1}^N { t_n-f(x_n) }^2 Bigr] end{eqnarray} $$ ここで、尤度関数に二乗誤差EDが現れるので、EDで置き換える。 $$ begin{eqnarray} E_D &=& frac{1}{2} sum_{n=1}^N{f(x_n)-t_n}^2 P &=& Bigl( frac{1}{2pisigma^2} Bigr)^{frac{N}{n}} e^{-frac{1}{sigma^2}E_D} end{eqnarray} $$ 尤度関数がσとwから決まる2変数関数であることを明確にするため、σ^2の逆数をβとし、二乗誤差EDが係数wから決まることを明確とするためED=ED(w)とする。 $$ P(beta,w) = bigl( frac{beta}{2pi} bigr)^{frac{N}{2}} e^{-beta E_D(w)} $$ 両辺に自然対数を取る。Pが最大になることとPの自然対数が最大になることは同じ。 $$ begin{eqnarray} ln{P(beta,w)} &=& ln{bigl( frac{beta}{2pi} bigr)^{frac{N}{2}} e^{-beta E_D(w)}} \\ &=& frac{N}{2}ln{beta}-frac{N}{2}ln{2pi}-beta E_D(w) end{eqnarray} $$ 単調増加関数が最大になる条件は微分した値が0になること。2変数の単調増加関数が最大になる条件は、それぞれの変数で偏微分した値が0になること。つまり、 $$ begin{eqnarray} frac{partial (ln{P})}{partial w_m} &=& 0 \\ frac{partial (ln{P})}{partial beta} &=& 0 end{eqnarray} $$ まず、wの偏微分。EDw項以外は定数になるから、 $$ begin{eqnarray} frac{partial E_D}{partial w_m} = 0 \\ end{eqnarray} $$ パラメトリックモデルに確率密度関数の誤差を含まない最小二乗法における二乗誤差を最小にする条件と同じとなる。つまり、トレーニングデータ{xn}n=0N},{t1,...,tN}から求まる。 $$ begin{eqnarray} w = bigl(Phi^TPhibigr)^-1Phi^T t end{eqnarray} $$ 次に、βの偏微分。β項以外は定数になる。対数の微分は、(logx)\'=1/x だから、 $$ begin{eqnarray} frac{partial P(beta,w)}{partial beta} &=& 0 \\ frac{N}{2} frac{1}{beta} - E_D(w) &=& 0 \\ frac{1}{beta} &=& frac{2E_D}{N} end{eqnarray} $$ ここで、以下としてしたから、 $$ beta = frac{1}{sigma^2} $$ 式変形すると、なんとσと、最小二乗法でパラメトリックモデルの次数Mを評価したときの、モデルとサンプルとの差(平方根平均二乗誤差)ERMSと同じになる。 $$ sigma = sqrt{frac{1}{beta}} = sqrt{frac{2E_D}{N}} = E_{RMS} $$ つまり... 最初に戻ると、トレーニングデータ{xn}が与えられたとき、トレーニングデータがM次多項式f(x)から±σの範囲にバラついていると仮定した場合、モデルから{tn}が得られる確率は、2つのパラメタw,σの関数として以下のように決まる。 $$ begin{eqnarray} N(t_n|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t_n-f(x_n))}^2} end{eqnarray} $$ 全てのトレーニングデータがこのモデルから得られる条件付き確率(尤度関数)は条件付き確率により定まり、尤度関数の最大化問題を解くことで2つのパラメタw,σを得られる。 wは、モデルに含まれる正規分布に従う誤差を含まないで作成したモデルの場合と同じ方法で求められる。また、σはそのモデルとの誤差評価値ERMSと同じである。 最尤推定法は最小二乗法を一般化した話だった、というか最小二乗法がサンプルデータの生起確率が正規分布を前提としていた、という話。 ともかく、トレーニングデータから確率変数付きパラメトリックモデルを立てて、パラメタを確率の最大化問題として解くことを最尤推定という。 サンプルデータの生起確率が正規分布に従う例がわかりやすい。より一般的に、観測した事象から確率的モデルを立てることは統計的なモデル化の王道らしく、そこから派生している機械学習アルゴリズムでも頻出であるようだ。

default eye-catch image.

最小二乗法 パラメトリックモデルのパラメタ決定と過学習

[mathjax] 一つ前のエントリ\"トレーニングデータからパラメトリックモデルを決定してみた\"では、トレーニングデータからM次多項式曲線を求めてみた。このエントリではMの候補の中から一つを見つけ出す方法を書いてみる。 Mを大きくすればするほどトレーニングデータを多く通過することになり、トレーニングデータの数Nを境に、ついにはトレーニングデータを再現する多項式曲線が出来上がる。Mを過剰に大きくすると未知のサンプルデータとの二乗誤差が大きくなる(悪化する)地点が発生する。これは過学習という名前が付いている現象で、パラメトリックモデルにおけるパラメタ決定時に考慮する内容となる。 ITエンジニアのための機械学習理論入門posted with amazlet at 17.03.10中井 悦司 技術評論社 売り上げランキング: 8,130Amazon.co.jpで詳細を見る パラメタの評価 M=0のときの二乗誤差、M=1のときの二乗誤差,...といったように、M次多項式とトレーニングデータの平均二乗誤差EDを記録していき、EDが最小になるMをパラメタとして採用する。平均二乗誤差EDは以下の通り。 $$ begin{eqnarray} E_D = frac{1}{2} sum_{n=1}^{N}bigl( sum_{m=1}^M w_m x_n^m-t_n bigr)^2 end{eqnarray} $$ 平均二乗誤差は、M次多項式とトレーニングデータの差の2乗の合計の1/2だが、評価尺度とするには2乗分と1/2分が無駄だから、それを打ち消すために2倍して平方根を取ったものを利用する。 $$ E_{RMS} = sqrt{frac{2E_D}{N}} $$ これまでトレーニングデータを使ってM次多項式を作ってきた。このM次多項式にトレーニングデータを入力すれば、それは\"モデルを確認している\"作業となる。トレーニングデータの数NとMが等しくなるところでERMSはゼロになる。対して、トレーニングデータと同じ背景を持つ別のサンプルデータを入力するとそのような結果にはならない。 未知のサンプルデータを入力してERMSを計算したときに、ERMSを最も小さくするMが本来採用すべき値である。ERMSがあるMを境に大きくなることはつまり、トレーニングデータにのみ現れる特徴を学習してしまったということであり、この現象を過学習と言う。また、未知のサンプルデータに対してERMSを小さく維持できる能力のことを汎化能力と言う。 んー。言葉はどうでも良いんだが、結局何かまとめが欲しかったのでこうなりました。Mが決まれば、M次多項式の全てのパラメタが決まり晴れて線形回帰モデルの説明ができます。 実際には サンプルデータの背後にあると考えたM次多項式は実在するわけではなく、実際のサンプルデータは誤差の範囲に散らばって存在するはず。最小二乗法で求めたM次多項式はその誤差の範囲の中心を貫く曲線を表しているに過ぎず、誤差を含めてモデル化できると良い。次のエントリでは、観測点xnにおける観測値tnがf(xn)を中心として±σの範囲に存在するものとして考える。

default eye-catch image.

最小二乗法 トレーニングデータからパラメトリックモデルを決定してみた

[mathjax] トレーニングデータが与えらえたとき、与えられたトレーニングデータを最もうまく説明する構造を決めて、その構造から未来のサンプルを予測/説明するという試みがある。トレーニングデータを正解として扱うことになるから「教師あり学習」的な分類に入る。その試みの中には構造をパラメタを含む数式で表現できるものがあり、素性の良い数式であれば数値計算によらず解析的な手法でパラメタを決めることができる。 ITエンジニアのための機械学習理論入門posted with amazlet at 17.03.10中井 悦司 技術評論社 売り上げランキング: 8,130Amazon.co.jpで詳細を見る パラメトリックモデルとM次多項式曲線 M次多項式をモデルとして二乗誤差の最小化問題を解く最小二乗法は最も理解しやすいから良く解説に使われるようだ。自分でも理解できたし。。パラメトリックモデルのパラメタとはM次多項式の係数行列のことではなく次数Mのことだよ。最小二乗法によりM次多項式の係数行列を求めるのは情報系の一般教養的な感じだったと思うけど、どのMを採用すべきかは確かに奥が深そうだ。 トレーニングデータからパラメトリックモデルを決めるプロセスは以下のような感じになる。 現象を予測/説明するモデル(数式)を設定する。モデルにはパラメタが含まれるようにする パラメタの良し悪しを評価する基準を作る パラメタの評価基準を利用してモデルにおける最良の評価を与えるパラメタを決める さて、以下のようなトレーニングデータが与えられたとする。時刻xnにおける値がtnであるデータがN個あるという意味。 $${(x_n,t_n)}^{N}_n=1$$ tnの背景にM次多項式曲線f(x)があると仮決めする。 $$ begin{eqnarray} f(x) &=& w_0 + w_1x+w_2x^2+dots+w_Mx^M \\ &=& sum^M_{m=0} w_m x^m end{eqnarray} $$ サンプルデータtnとf(x)の距離を二乗和で表すと、 $$ begin{eqnarray} { f(x_1)-t_1 }+{ f(x_2)-t_2 }^2 + dots + { f(x_{N})-t_{N} }^2 end{eqnarray} $$ その半分の値を誤差Epとして定義する。{(xn,tn)}m=0mは既に与えられている定数(トレーニングデータ)であり、Epは単純に{wm}m=0Mを変数とする関数。 $$ begin{eqnarray} E_p &=& frac{1}{2}sum^N_{n=1}{f(x_n)-t_n}^2 \\ &=& frac{1}{2}sum^N_{n=1}Bigl(sum^M_{m=0}w_mx^m_n-t_nBigr)^2 end{eqnarray} $$ Epを最小にする係数{wm}m=0Mを求める問題に帰着する。素晴らしいことにwは行列計算で求まる。この求め方は別エントリに書くとして、 $$ begin{eqnarray} Phi &=& left( begin{array}{ccc} x_1^0 & x_1^1 & cdots & x_1^M \\ x_2^0 & x_2^1 & cdots & x_2^M \\ vdots & vdots & ddots & vdots \\ x_N^0 & x_N^2 & cdots & x_N^M \\ end{array} right) end{eqnarray} $$ とすると、係数ベクトルw、トレーニングデータt、観測点xの間に以下が成り立つ。つまり、N個のトレーニングデータとN個の観測点だけから背景として仮決めしたM次多項式曲線のパラメタwを決めることができる。変数として残るのはM次多項式曲線のMだけ! $$ begin{eqnarray} w &=& (w_0,cdots,w_M)^T \\ t &=& (t_1,cdots,t_N)^T \\ x &=& {x_n}^N_{n=1} \\ w &=& ( Phi^T Phi)^{-1}t end{eqnarray} $$ M次多項式曲線の係数行列が求まった。

default eye-catch image.

WordPressで数式を書くプラグイン MathJax-LaTeX を使って見る

[mathjax] 機械学習の各種アルゴリズムを読み解いていく際に、高頻度で確率統計に現れる数式が現れる。機械学習を習得していくにあたってWordPressに習得内容をまとめていきたいな、等と思うと、やはりHTMLで数式を書くことの限界は見えてくる。 MathJax-LaTeX 数式を書くツールといえば、今も昔もTeX(LaTeX)。WordPressのエントリにLaTeXスタイルで数式を記述するプラグイン(MathJax-LaTeX)を利用してみたので記事にしてみた。 エントリの先頭にショートコードmathjaxを書き、以下のような書式で文章を入力する。 $$x=frac{-bpmsqrt{b^2-4ac}}{2a}$$ 結果は以下の通りである。 $$x=frac{-bpmsqrt{b^2-4ac}}{2a}$$ うん。LaTeXのエスケープ文字はバックスラッシュだから、[option]+[¥]を打たないといけなくて面倒な以外はものすごく自然だ。フォントの再現性はこの際気にしなくても良いだろう。 数式サンプル いくつか数式を書いてみる。一番最初は正規分布の確率密度! $$p(x)=frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}(x-mu)^2}$$ $$p(x)=frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}(x-mu)^2}$$ 次、n次多項式。 $$ begin{eqnarray} f(x)&=&w_0+w_1x+w_2x^2+w_3x^3+cdots+w_Mx^M \\ &=&sum^M_{m=0}w_mx^m end{eqnarray} $$ $$ begin{eqnarray} f(x)&=&w_0+w_1x+w_2x^2+w_3x^3+cdots+w_Mx^M \\ &=&sum^M_{m=0}w_mx^m end{eqnarray} $$ 次、行列。 $$ A = left( begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i end{array} right) $$ $$ A = left( begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i end{array} right) $$ まとめ 使用感はまったくもってLaTexでした。フォントの表示を実現するために四苦八苦することも一切なくWordPressで数式を書けます。今までバカみたいにHTMLで数式書いてたのがマヌケでした。

default eye-catch image.

機械学習 決定木 サンプルデータ(iris)をRのrpartに通してみた

教師有り学習の基本、決定木の動作を実データを使って確認してみた。 データの集合が以下の通り与えられていたとする。 (x,y)i = (x1,x2,x3,......,xk,y)i 決定木とは、従属変数x1,x2,x3.. が説明変数yにどの程度影響を与えているかを表すデータ構造を指す。説明変数yを予測するモデルであり、教師データ(x,y)iからこのモデルを生成することから「教師あり学習」に分類される。その素性がとても簡単なので教師有り学習の一番最初に出てくる。 中間ノードは根からそのノードに至るまでの質問を全て満たす説明変数xの集合に対応し、中間ノードから子ノードへの枝はその変数yiが取り得る個別の値に対応する。決定木のノードと枝はIF-THEN-ELSEに相当する。 中間ノードから子ノードへの分岐を繰り返すと、説明変数xが唯一に決まる時が来る。根から末端ノードまで辿るということは、従属変数に対応する質問を繰り返していったときの結論である。 なお、中間ノードから子ノードへ木を成長させていく際、従属変数の選び方が複数発生する。子ノードのバラつきを何らかの形で定量化し、バラつきが最も小さい従属変数を選択する。例えばバラつきの定量化手法としてエントロピーを採用する場合、親ノードの平均情報量と子ノード候補の平均情報量の差(情報利得)が最も小さい従属変数を選択する。バラつきを求める手法として\"ジニ係数\"を利用するものもあるらしい。 ということで、Rを使ってirisデータフレームについてSpeciesを説明変数、残りを従属変数として決定木を作成してみた。 > tree = rpart(Species~.,data=iris,method=\"class\") > tree n= 150 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 150 100 setosa (0.33333333 0.33333333 0.33333333) 2) Petal.Length=2.45 100 50 versicolor (0.00000000 0.50000000 0.50000000) 6) Petal.Width=1.75 46 1 virginica (0.00000000 0.02173913 0.97826087) * 出力にインデントがかかっているので何となく木構造が見えるのだが、Rのグラフ出力機能を使ってみる。 > par(xpd=NA) > plot(treem branch = 0.8, margin = 0.05) > text(tree, use.n = TRUE, all=TRUE) 見づらい...。rpart.plotを使う。 > install.packages(\"rpart.plot\") > library(\"rpart.plot\") > rpart.plot(tree, type=1,uniform=TRUE,extra=1,under=1,faclen=0) まだ見づらい...。partykitを使う。 > install.packages(\"partykit\") > library(\"partykit\") > plot(as.party(tree)) なんだか、rpart.plot だけ分岐の値が異なる気がしないでもないが...。partykitの奴は末端のラベルが全部setosaになってる気がしないでもないが...。この木の見方は以下の通り。 従属変数 Petal.Lengthが2.45未満のものは全て 説明変数が Speciesがsetosa 従属変数 Petal.Lengthが2.45以上のものは 従属変数 Petal.Widthが1.75未満のものは 説明変数 Speciesがversicolorのものが49個 説明変数 Speciesがvirginicaのものが5個 従属変数 Petal.Widthが1.75以上のものは 説明変数 Speciesがversicolorのものが1個 説明変数 Speciesがvirginicaのものが45個 従属変数 Petal.Length と Petal.Width がわかれば、この木を辿ることで 説明変数 Species が何になるか予測できる。決定木のエントリというよりRの使い方みたいなエントリになってしまったな。

default eye-catch image.

計量テンソルの物理的な意味

はじめに Tensor Flowを理解するために計量テンソルの物理的な意味の理解が不可欠なので数式を追ってみた。ちょっと時間かかったけど、計量テンソルまではOK。スカラー、ベクトルを説明するまではまだ理解できてない。しかし、Ad-HocなIT技術ばかり触っていると、数式の美しさは格が違うな。 計量テンソルが直感的に何を表しているのかは最後だけでOK 変換係数αik=gijって何?を理解するために共変ベクトル、反変ベクトルの定義を遡る必要がある ベクトルと変換 ある座標系の基底ベクトル(e1,e2,e3)を、別の座標系のベクトル(e1\',e2\',e3\')に変換することを考える。適当な係数αijを使って線形結合で表現すると、 e1\'=α11e1+α12e2+α13e3 e2\'=α21e1+α22e2+α23e3 e3\'=α31e1+α32e2+α33e3 αikを変換係数と呼ぶ。変換係数により基底ベクトルeから別の規定ベクトルe\'への座標変換を決定している。 まとめると以下のように表現できる。(HTMLじゃ厳しいです...) ei\'=Σk=13αiikek ダッシュ付きベクトルとダッシュ無しベクトルを入れ替えると ek=Σl\'=13αkl\'el\' 上の式に下の式を代入する。これはダッシュ無しベクトルをダッシュ付きベクトルに変換する式に、ダッシュ付ベクトルをダッシュ無しベクトルに変換する式を代入することを表す。もっと言えば、変換と逆変換を同時に行ってみる。 ei\'=Σk=13Σl=13αi\'kαkl\'el\' この右辺はeiiにならないといけないので、 Σk=l3αi\'kαkl\'=0 (i\'≠l\') Σk=l3αi\'kαkl\'=1 (i\'=l\') ダッシュ付きベクトルとダッシュ無しベクトルを入れ替えても同様に、 Σk\'=13αk\'lαk\'l=0 (i≠l) Σk\'=13αk\'lαk\'l=1 (i=l) 見事な感じで、Σk=13Σl=13αi\'kαkl\'は単位行列ということになる。話を戻すと変換、逆変換を同時におこなうと元に戻る、ということになる。 なお、クロネッカーのデルタを使うと、 Σk=l3αi\'kαkl\'=0 (i\'≠l\') Σk=l3αi\'kαkl\'=1 (i\'=l\') は、以下のように1つにまとめられる。 αi\'kαkl\'=δi\'l\' 同様に、 Σk\'=13αk\'lαk\'l=0 (i≠l) Σk\'=13αk\'lαk\'l=1 (i=l) は、以下のように1つにまとめられる。 αk\'lαk\'l=δk\'l 共変ベクトルと反変ベクトル ある基底ベクトルe=(e1,e2,e3)を別の基底ベクトルe\'=(e1\',e2\',e3\')ベクトルに変換する際の座標変換は以下のように表される。 ei\'=αi\'kek この時、変換係数αi\'kを用いて、基底ベクトルの変換式と同一の変換式に従うベクトルA=A1e1+A22+A33を共変ベクトルと呼ぶ。 Ai\'=αi\'kAk 一方、添字を上下逆にした変換係数αki\'ckに従うベクトルC=C1e1+C2e2+C3e3を反変ベクトルという。 C\'i=αki\'Ck ここで、eiを共変基底、eiを反変基底とよぶ。 共変基底、反変基底には次式が成り立つ。 ei・ej=δij 計量テンソル 共変基底ek,ekを用いたベクトルA=Akek=Akek。 それぞれに添字を上下反転させた基底ei,eiとの内積を取る。 ei・A=Akek・ei=Ak(ei・ek) ei・A=Akek・ei=Ak(ei・ek) 共変基底、反変基底の積 ei・ek=gikとする。 ei・A=Akgik ei・A=Akgik A=Aiei=Aieiであるから、 ei・Aiei=Akgik ei・Aiei=Akgik 整理すると、 ei・ei Ai=Ai=gikAk ei・ei Ai=Ai=gikAk つまり以下。 Ai\'=gikAk Ai\'=gikAk これは、ベクトルの共変成分、反変成分の変換式である。 共変成分、反変成分を相互変換する変換係数gij(=αij)の意味 ベクトルrの長さが微小に変化したとする。その微小変化をベクトルdr=dxiei=dxieiとする。 ds2 =dr・dr =dxiei・dxjej=gijdxidxj =dxiei・dxjej=gijdxidxj =dxiei・dxjej=gujdxidxj =dxidxi ei-ejを座標系として取ったとき、dxi、dxjを成分とすることを表す。 また、ei-ejを座標系として取ったとき、dxi、dxjを成分とすることを表す。 これらの座標系で各座標軸に沿った変化分の単純な積dxidxj、dxidxjと、本当の変化分の2乗ds2の比がgij、gijであることを表す。 gij、gijを計量テンソルと呼ぶ。

default eye-catch image.

Q-Lerningを試してみる(座学編)

そういえばQ熱って感染症があったな。不明の(Query)熱という意味だそうな。関係ないがQというパズルゲームがあって名作らしい。 食わず嫌いをしていても仕方がないのでちょっと調べてみた。割と単純な探索アルゴリズムの一種だった。自然界の~とか、脳内の~とか言うから胡散臭くなるだけで、コンピュータ上で動作させる他の探索アルゴリズムの一種だと思います。 結論は、枝コスト選択の難しさの解決を後回しにしたところで避けられない。というより、枝コスト選択を先にやらなくて良い、という事実が唯一にして最大のメリット。 アルゴリズムの概要 探索の際に選ぶ枝のコストを確率として予め求めておくのではなく、探索しながら更新していく。 前提は以下。 stは時刻tにおける状態。 atは時刻tにおける行動。 Q(st,at)は状態stにおいて行動atを選択する価値。 rt+1は環境の変化によって貰える報酬。 maxaQ(st+1,a)は 状態st+1のもとで最もQ値が高い行動aを選んだ場合のQ値。 γ(0<γ<1)は割引率。 α(0<α<1)は学習係数。 Q(st,at)を更新しQ(st+1,at+1)にする式は以下。 Q(st+1,at+1) := Q(st,at) + α(rt+1+γ maxaQ(st+1,a)-Q(st,at)) γ、rt+1の値によるが、Q(st+1,at+1)>Q(st,at)となるためには、Q(st,at)よりも、次の状態における最良の行動aを選択した価値Q(st+1,a)の方が大きい必要がある。 一般的にγ=0.9~0.99のように1に近い値を設定することが多いようなので、概ね最良の行動の選択maxaQ(st+1,a)による価値の増加分に報酬rt+1を加えたものがQ(st+1,at+1)となる。 アルゴリズムの設計 全ての状態とその時に取りえる行動の組(s,a)についてQ(s,a)の値をランダムに設定する。 t=0、s0にセットする。 状態stから行動atを選択し状態st+1とする。 状態の更新を一定回数行ったらt=0,s0に戻す。 グルグル回し、何回か終わったら終了。 状態の更新にはε-greedyアルゴリズムを用いる。状態stから状態st+1に遷移する際、常に最大のQ値となる行動を取るということは、最初にランダムで与えたQ(s,a)を教師として枝コストに確率を与えているのと同じになるからN.G.。定数ε(0<ε<1)を用い(1-ε)の確率で最大のQ値となる行動を選ぶようにする。 胡散臭くなってきた!結局枝コストの求め方の難しさに帰着する。たぶん確率密度とかの話ではなくエイヤっとεを決めるんだろう。

default eye-catch image.

重回帰分析と教師あり機械学習

機械学習と多変量解析は本質的に同じ。 重回帰分析 観測された事象から目的変数と説明変数の関係をモデル化する。 目的変数 = a×説明変数1+b×説明変数2+c×説明変数3+d 機械学習 大量のデータを読み込ませることで、人が教えることなくデータの特徴量を導き出す。 機械学習により求められる特徴量は本質的に重回帰分析の係数に相当する。 時期的に、多変量解析(統計) << データマイニング < 機械学習。 要は多変量解析(統計)の理解がなければデータマイニング・機械学習の理解はおぼつかない。 多変量解析はExcelを使ったサンプルが多い。 Excelを使った重回帰分析のサンプル Excelを使うと簡単に重回帰分析の実行結果を得られる。試しに実行してみる。 SNS広告(Seg.1)、Web広告(Seg.2)、口コミ広告(Seg.3)と売上実績(Sales)の関係が以下のようになっているとする。単位は無し。各広告手段の売上実績に対する寄与度をモデル化する。 つまり、Sales=a×Seg.1+b×Seg.2+c×Seg.3+d の係数(a,b,c,d) を求める。 Seg.1Seg.2Seg.3Sales 4.93.11.50.1 5.43.71.50.2 4.831.40.1 4.331.10.1 5.841.20.2 5.74.41.50.4 5.43.91.30.4 5.13.51.40.3 5.73.81.70.3 5.13.81.50.3 回帰統計量 重回帰式 Sales=a×Seg.1+b×(Seg.2)+c×(Seg.3)+d の当てはまりの良さを表す統計量。 通常、重相関係数Rと重決定係数R2は説明変数の数が多いほど大きくなる傾向がある。 補正R2は説明変数の数を考慮した当てはまりの良さを表す。 そのため一般的に当てはまりの良さを見るためには補正R2を参照する。 重相関 R0.874912 重決定 R20.765472 補正 R20.648207 標準誤差0.06962 観測数10 分散分析表 回帰式の全ての係数が同時に0であることの分析。有意F値が0.05未満ならば、統計的に全ての係数が0でないといえる。 有意F値が0に近ければ近いほど重回帰式の信頼度は高いことを表す。 自由度変動分散観測された分散比有意F 回帰30.0949180.0316396.5277516380.025607 残差60.0290820.004847 合計90.124 以下より、a=-0.133596092、b=0.315699216、c=0.14050611、d=-0.403573178。係数の符号が正の場合、説明変数と目的変数に正の相関があることがわかる。係数の符号が負の場合は負の相関。絶対値は相関の強さ。 係数標準誤差 tP-値 切片-0.4035731780.281209521-1.4351334080.201255935 Seg.1-0.1335960920.110652276-1.2073506010.27272798 Seg.20.3156992160.1056493012.9881808270.024377448 Seg.30.140506110.1522815480.9226732460.391770244 下限 95%上限 95%下限 95.0%上限 95.0% 切片-1.0916680890.284521732-1.0916680890.284521732 Seg.1-0.4043524570.137160273-0.4043524570.137160273 Seg.20.0571846890.5742137430.0571846890.574213743 Seg.3-0.2321134140.513125635-0.2321134140.513125635