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次多項式曲線の係数行列が求まった。