第1章-Sageを使って線形回帰を試してみるでは、 与えられたモデルパラメータM, α、βに対して解いていましたが、 実際には自分でベストなモデルパラメータM, α、βを求める必要があります。 パターン認識と機械学習 の3章ではエビデンス関数を使って最適なパラメータを求める方法が説明されています。
ここでは、Sageを使ってエビデンス関数の評価、最適なモデルパラメータの推定を試してみます。
エビデンス関数の対数表現は、式(3.86) $$ \ln p(t|\alpha, \beta) = \frac{M}{2} \ln \alpha + \frac{N}{2} \ln \beta -E(m_N) - \frac{1}{2} \ln | A | + \frac{N}{2} \ln (2 \pi) $$ で与えられます。
ここで、$E(m_N)$は、式(3.82) $$ E(m_N) = \frac{\beta}{2}|| t = \Phi m_N ||^2 + \frac{\alpha}{2} m_N^T m_N $$ $m_N$は、式(3.84) $$ m_N = \beta A^{-1} \Phi^T t $$ Aは、式(3.81) $$ A = \alpha I + \beta \Phi^T \Phi $$
目指すは、図3.14です。
第1章-Sageを使って線形回帰を試してみる で使ったデータと同じものを座標Xと目的値tにセットし、関数Φを定義します。
|
|
まずは、α、βを固定値
一番良いエビデンスは、M=4あたりになります。 理由は分かりませんが、図3.14のようなM=3以降の急激な下降は見られません。
|
そこで、βを平均値の分散$\beta_{ML}$を使って計算してみました。 $$ \frac{1}{\beta_{ML}} = \frac{1}{N} \sum (y(x_n, W_ML) - t_n)^2 $$
期待に反し、M=0でも高い値となり、あまり良くありません。
|
どうして図3.14のような結果にならないのかと調べたのですが、他にも同様の計算をした 方がいらして、私と同じ傾向になったとの記述がありました。 基底関数を色々変えて、線形回帰のエビデンスを計算してみた
私の推測では、ln |A|の計算をA.norm()と間違えたのではないかと思われます。以下にA.norm()としたときの図を示します。
|
α、βを固定にした場合に、エビデンスが最大はM=4だったので、M=4に対する 最適なα、βを求めてみます。
エビデンスを最大にするαは、式(3.92) $$ \alpha = \frac{\gamma}{m_N^T m_N} $$ ここで$\gamma$は、式(3.87) $$ (\beta \Phi^T \Phi) u_i = \lambda_i u_i $$ の固有値から、式(3.91) $$ \gamma = \sum_{i} \frac{\lambda_i}{\alpha + \lambda_i} $$ で求まります。
βについても、式(3.95) $$ \frac{1}{\beta} = \frac{1}{N - \gamma} \sum_{n=1}^{N} ( t_n - m_N^T \phi(x_n))^2 $$
$\gamma$は、$\alpha$に依存し、$m_N$も$\alpha$に依存するため、すぐに最適な値を得ることが できません。
以下の例では、
4.02295319874 0.0160029572678 15.5703330431 3.86957616939 0.0192233025727 14.6079344569 3.81804019954 0.0208658867531 14.0162355337 3.79079625631 0.021876053777 13.6574090928 3.77410819657 0.0225480023858 13.4248103487 3.76308615077 0.0230152846069 13.2666278994 3.75546956914 0.0233495381967 13.1554382026 3.75004882783 0.0235932327887 13.0754487343 3.74611222743 0.0237732924978 13.0169432556 3.74321234677 0.0239076177514 12.973632867 3.7410540217 0.0240085312871 12.9412853436 3.73943541844 0.0240847392383 12.9169657574 3.7382147331 0.0241425141272 12.8985911035 3.73729026269 0.0241864427411 12.8846563016 3.73658790674 0.0242199173426 12.8740587014 3.73605302024 0.0242454685376 12.8659818046 3.73564493065 0.0242649966702 12.8598160009 3.73533314922 0.0242799360403 12.8551032449 3.73509469602 0.0242913734086 12.8514976848 3.73491217789 0.0243001346625 12.848737196 4.02295319874 0.0160029572678 15.5703330431 3.86957616939 0.0192233025727 14.6079344569 3.81804019954 0.0208658867531 14.0162355337 3.79079625631 0.021876053777 13.6574090928 3.77410819657 0.0225480023858 13.4248103487 3.76308615077 0.0230152846069 13.2666278994 3.75546956914 0.0233495381967 13.1554382026 3.75004882783 0.0235932327887 13.0754487343 3.74611222743 0.0237732924978 13.0169432556 3.74321234677 0.0239076177514 12.973632867 3.7410540217 0.0240085312871 12.9412853436 3.73943541844 0.0240847392383 12.9169657574 3.7382147331 0.0241425141272 12.8985911035 3.73729026269 0.0241864427411 12.8846563016 3.73658790674 0.0242199173426 12.8740587014 3.73605302024 0.0242454685376 12.8659818046 3.73564493065 0.0242649966702 12.8598160009 3.73533314922 0.0242799360403 12.8551032449 3.73509469602 0.0242913734086 12.8514976848 3.73491217789 0.0243001346625 12.848737196 |