この記事では、線形回帰モデルのフィッティングでよく利用する最小二乗法(least squares method)について、正規方程式を用いて最小二乗法の解を導出します。
私の理解のため表現、理解等に誤りがあれば、コメント等でご指摘いただけますと嬉しいです。
線形回帰モデル
線形回帰モデル(liner regression)は、1つ以上の説明変数(x)と被説明変数(y)との関係性をモデル化しています。
線形回帰モデルの基底関数(basis function)の違いによって以下のように呼ぶことができます。
単回帰
単回帰は、説明変数が1変数のみであり、説明変数(1次元)から
xT=(1,x1)
と考え、
y^(x,w)=w0+w1x1
で、説明変数と被説明変数の関係性をモデル化します。
ここで、線形回帰モデルの基底関数をϕ0(x)=1,ϕ1(x)=x1として、特徴ベクトル(feature vector)をϕ(x)=(ϕ0(x),ϕ1(x))Tとおくと、
y^(x,w)=w0+w1x1=(w0,w1)(1x1)=wTϕ(x)
となり、ベクトルの内積で表現できます。なお、wはモデルの係数ベクトルです。
重回帰
重回帰は、説明変数が多変数と なり、説明変数(D次元)から
xT=(1,x1,x2,…,xD)
と考え、
y^(x,w)=w0+w1x1+w2x2+⋯+wDxD
で、説明変数と被説明変数の関係性をモデル化します。
ここで、線形回帰モデルの基底関数をϕ0(x)=1,ϕ1(x)=x1,…,ϕD(x)=xDとして、特徴ベクトルをϕ(x)=(ϕ0(x),ϕ1(x),…,ϕD(x))Tとおくと、
y^(x,w)=w0+w1x1+w2x2+⋯+wDxD=(w0,w1,w2,…,wD)⎝⎜⎜⎜⎜⎜⎜⎛1x1x2⋮xD⎠⎟⎟⎟⎟⎟⎟⎞=wTϕ(x)
となり、単回帰と同様に内積で表現できます。異なっている部分は基底関数の定義のみです。
つまり、重回帰は単回帰を多変数に拡張しています。
多項式回帰
多項式回帰は、説明変数に対して非線形な関数ϕ(n次多項式や三角関数等)を基底関数として、
y^(x,w)=w0ϕ0(x)+w1ϕ1(x)+⋯+wHϕH(x)
で、説明変数と被説明変数の関係性をモデル化します。
例として、多項式
y^(x,w)=w0+w1x1++w2x12+w3sin(x1)
に回帰する場合を考えます。
この場合、基底関数はϕ0(x)=1,ϕ1(x)=x1,ϕ2(x)=x12,ϕ3(x)=sin(x1)、特徴ベクトルはϕ(x)=(ϕ0(x),ϕ1(x),ϕ2(x),ϕ3(x))Tとなるため、以下のように表現できます。
y^(x,w)=w0+w1x1++w2x12+w3sin(x1)=(w0,w1,w2,w3)⎝⎜⎜⎜⎛1x1x12sin(x1)⎠⎟⎟⎟⎞=wTϕ(x)
多項式回帰では、多項式がxに対して非線形になっていますが、wに対しては線形となっているため、線形回帰と呼ばれています。
上記から、基底関数を変更することで、単回帰、重回帰、線形回帰が同一のベクトル表現で表現できることが分かります。
最小二乗法
ここからが本題です。
線形回帰モデルのフィッティングでは、標準的に使われる手法として、最小二乗法があります。
最小二乗法は、実際の測定値yがN個ある場合に、測定値yと線形回帰モデルでの予測値y^の二乗誤差の総和
E=n=1∑N(yn−y^n)2=n=1∑N(yn−wTϕ(xn))2
を最小にするwを求めることで、線形回帰モデルをフィッティングさせます。
ここからは、このwを導出していきます。
事前準備
二乗誤差の総和(E)を最小にするには、Eをベクトルwで微分して0とすれば、Eを最小とするwが導出できます。
∂w∂E=∂w∂n=1∑N(yn−y^n)2=∂w∂n=1∑N(yn−wTϕ(xn))2=0
上記を解くために以下の公式等を準備します。
- 計画行列
- ベクトル要素の二乗和
- 内積の微分
- 二次形式の微分
計画行 列
線形回帰モデルでは、単回帰、重回帰、多項式回帰のどれもy^(x,w)=wTϕ(x)で表現できました。
そこで、実際の測定値yがN個ある場合、yの予測値y^は、基底関数を用いて以下の行列で表現できます。
⎝⎜⎜⎜⎜⎛y^1y^2⋮y^N⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛wTϕ(x1)wTϕ(x2)⋮wTϕ(xN)⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛ϕ(x1)Tϕ(x2)T⋮ϕ(xN)T⎠⎟⎟⎟⎟⎞w=⎝⎜⎜⎜⎜⎛ϕ0(x1)ϕ0(x2)⋮ϕ0(xN)ϕ1(x1)ϕ1(x2)ϕ1(xN)⋯⋯⋯ϕH(x1)ϕH(x2)⋮ϕH(xN)⎠⎟⎟⎟⎟⎞w
なお、ϕ0(x)≡1 と定義しています。
ここで、
y^=⎝⎜⎜⎜⎜⎛y^1y^2⋮y^N⎠⎟⎟⎟⎟⎞,Φ=⎝⎜⎜⎜⎜⎛ϕ0(x1)ϕ0(x2)⋮ϕ0(xN)ϕ1(x1)ϕ1(x2)ϕ1(xN)⋯⋯⋯ϕH(x1)ϕH(x2)⋮ϕH(xN)⎠⎟⎟⎟⎟⎞
とおくと、y^=Φwと表現でき、行列Φを計画行列と呼びます。
この計画行列Φは、線形回帰モデルの基底関数を行列で表現しています。
ベクトル要素の二乗和
ベクトルx=(x1,x2,…,xn)Tの要素の二乗和は
x12+x22+⋯xn2=(x1,x2,…,xn)⎝⎜⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎟⎞=xTx
内積の微分
w=(w1,w2,…,wn)T,x=(x1,x2,…,xn)Tとすると、
wTx=w1x1+w2x2⋯+wnxn
スカラーである内積wTxをベクトルwで微分することを考えます。ベクトルの各要素で微分すれば良いので、
∂w∂wTx=⎝⎜⎜⎜⎜⎛∂w1∂wTx∂w2∂wTx⋮∂wn∂wTx⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎟⎞=x
となります。
二次形式の微分
w=(w1,w2,…,wn)T,XをN次正方行列として、スカラーである二次形式wTXwをベクトルwで微分することを考えます。
まず、二次形式を変換します。
wTXw=wT⎝⎜⎜⎜⎛∑j=1NX1jwj⋮∑j=1NXNjwj⎠⎟⎟⎟⎞=w1j=1∑NX1jwj+w2j=1∑NX2jwj+⋯+wNj=1∑NXNjwj=i=1∑Nj=1∑NXijwiwj
ここで、wのk番目の成分wkで二次形式の微分を考えると、積の微分公式から
∂wk∂wTXw=∂wk∂(i=1∑Nj=1∑NXijwiwj)=i=1∑Nj=1∑NXij(∂wk∂wi)wj+i=1∑Nj=1∑NXijwi∂wk∂wj=j=1∑NXkjwj+i=1∑NXikwi
上記から二次形式のwkでの微分は、前半の項がXwのk番目の成分、後半の項がXTwのk