最初に「パターン認識と機械学習」(PRML)を鈴木由宇さんから紹介して頂いた時に、 RVMが今の流行で、それをとてもスマートに実装している人がいると教えて頂いたのが、 se-kichiさんの 「きちめも」 でした。
これを見て、Sageを使ってPRMLの例題を試してみようと思いました。 ようやく「きちめも」のRVMまでPRMLを読み進むことができました。
ここで紹介するのは、PRMLの図7.9、
1章のSin曲線のフィッティングで使用したデータを今回も使います。 第1章-Sageを使って線形回帰を試してみる参照してください。
|
重みベクトルに対する事後確率は、式(7.81) $$ p(w|t, X, \alpha, \beta) = \mathcal{N}(w|m, \Sigma) $$ 平均と共分散は、式(7.82), (7.83) $$ m = \beta \Sigma \Phi^T t $$ $$ \Sigma = ( A + \beta \Phi^T \Phi)^{-1} $$ で与えられると、αとβのエビデンス近似は、対数尤度の式(7.85), (7.86) $$ \ln p(t|X, \alpha, \beta) = \ln \mathcal{N}(t|0, C) $$ $$ = - \frac{1}{2} \left \{ N \ln (2\pi) + \ln |C| t^TC^{-1}t \right \}. $$ $$ C = \beta^{-1} I + \Phi A^{-1}\Phi^T $$ を最大化することで、式(7.87), (7.88)となります。 $$ \alpha_i^{new} = \frac{\gamma_i}{m_i^2} $$ $$ (\beta^{new})^{-1} = \frac{|| t - \Phi m ||^2}{N - \Sigma_i \gamma_i} $$ ここで$\gamma_i$は、式(7.89)で定義されます。 $$ \gamma_i = 1 - \alpha_i \Sigma_{ii} $$
予測値の条件付き確率分布は、式(7.76)、 $$ p(t|x, w, \beta) = \mathcal{N}(t|y(x), \beta^{-1}) $$ 平均値は、式(7.77)、 $$ y(x) = w^T \phi(x) $$ で、予測値の平均は、重みベクトルwを事後平均mとしたものになります。式(7.90) $$ p(t|x, X, t, \alpha^*, \beta^*) = \mathcal{N}(t|m^T \phi(x), \sigma^2(x)) $$ $\sigma^2(x)$は、式(7.91) $$ \sigma^2(x) = (\beta^*)^{-1} + \phi(x)^T \Sigma \phi(x) $$ となります。
更新式(7.87), (7.88)を使って 「きちめも」 を参考にSageに移植してみました。
|
|
(1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 0.899348917265024, 1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 1.95795402710279, 1.00000000000000e10, 10.9873539203255) (1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 0.899348917265024, 1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 1.00000000000000e10, 1.95795402710279, 1.00000000000000e10, 10.9873539203255) |
[2, 7, 9] [2, 7, 9] |
|
|
オリジナルのsin曲線を緑で、データ点を青で、計算したフィッティング曲線を緑で、予測値の標準偏差をグレイで、 関連ベクトルを大きめの赤い点でプロットしました。
|
|