読者です 読者をやめる 読者になる 読者になる

底辺大学の院生がプログラミングや機械学習を勉強するブログ

勉強していることを雑にまとめるブログ。当然、正しさの保証は一切しない。

1.1 例:多項式曲線フィッティング

1行目「まず最初に単純な回帰問題から始めよう.」

 

……。

回帰問題ってなんやねん!!!!

 

回帰分析

回帰(かいき、: regression)とは、統計学において、Y が連続値の時にデータに Y = f(X) というモデル(「定量的な関係の構造[1]」)を当てはめる事。別の言い方では、連続尺度の従属変数(目的変数)Y と独立変数(説明変数)X の間にモデルを当てはめること。X が1次元ならば単回帰、X が2次元以上ならば重回帰と言う。Y が離散の場合は分類と言う。

回帰分析(かいきぶんせき、: regression analysis)とは、回帰により分析する事。

回帰で使われる、最も基本的なモデルは Y = AX + B という形式の線形回帰である。

wikipedia: 回帰分析

 

つまり、入力値 xと、ある関数 f(x)にしたがって生成されたデータ tの組み合わせをたくさん観測したとき、それぞれのベクトル {\bf x}=(x_1,\dots,x_N)^T {\bf t}=(t_1,\dots,t_N)^Tを使って f(x)の方を推定しようということらしい。

んで、 f(x)さえ分かってしまえばわざわざ観測しなくても、新しい \hat{x}に対する観測 \hat{t}が予測できるよね、という話か。

ただしここでは観測値にはガウス分布に従うランダムノイズが加算されていることに注意する。こういう雑音がガウス分布でモデル化されることはよくある話。無線通信とかではノイズは複素ガウスの標本としてモデル化されていた。一般に、ホワイトノイズとか呼ばれているあれ。

だから必ずしも t_n=f(x_n)とはならず、ノイズを \epsilonとすると観測値は t_n=f(x_n)+ \epsilonで与えられている。

 

さて、ここでやっと出てくる題目の「曲線フィッティング」とは、 f(x)

 y(x;{\bf w})=w_0+w_1x+w_2x^2+\cdots+w_Mx^M=\sum_{j=0}^Mw_jx^j

という M多項式で当てはめようというアプローチのこと。

実際の関数が \sinでも \expでも、こういう形式なら線形非線型に限らずそれなりに当てはめられそう。

 

 だからやることは、観測された {\bf t}を使ってなんとかして多項式の係数ベクトル {\bf w}を求めること。そのための方法として、誤差関数を最小化しようという考え方がある。

つまり、

 E({\bf w})=\frac{1}{2}\sum_{n=1}^N\{y(x_n,{\bf w}) - t_n\}^2

これが最小になる {\bf w}を採用しようというもの。

 

まあ、予測値と実際に得られた観測値の誤差が一番小さくなるようなモデルを採用しようという考え方は直感的には理解できる。ただ、本当にそれが最適な推定規範なの?という疑問を持つことは、ついつい疎かにしがちだけど、とても大切。

後半に、確かにこの規範は最適であることが述べられるが、直感的に正しいと思われる解釈に流されて思考を止めることが無いよう注意したいところ。

 

さてここまでくれば話は簡単。

 E({\bf w})は下に凸の二次関数だから、最小になる {\bf w}を見つけたければ {\bf w}についての1階微分が0になる点を求めればいい。

 

 

というところで眠くなってきた。明日はこれの続きやる。

実際にプログラムを書いてちゃんと関数が推定できていることを確認するぐらいまでやりたいなー。