[]で囲ってる部分はあとから図を追加する予定です.

簡単のため1次元データについて考えてみます.

最小二乗法による1次元の線形回帰の場合

得られたデータ点の組み合わせ\((a_i,b_i), i=1,\dots,N\)を原点を通る直線で回帰することは

$$b=xa$$

という直線の中でデータ点をうまく説明する\(x\)という傾きを見つけることに等しいです.

‘‘うまく説明する”という基準としては最小二乗法というものがよく用いられます.最小二乗法では直線からデータ点までの距離の差の二乗を一番小さくする\(x\)がデータ点を最もうまく説明すると考える方法です.

[最小二乗法の図,縦方向の距離であることを示す]

直線からデータ点までの距離の差の二乗を\(S\)とすると

$$S=\sum_{i=1}^N(b_i – xa_i)^2$$

となります.

これを最小化するような\(x\)を計算するためには\(x\)で微分します.なぜなら,\(S\)は二次関数で下に凸なので微分したとき0になる点で\(S\)が最小値を持つからです.

[下に凸の図]

\(S\)を微分すると

$$\frac{dS}{dx}=\sum_{i=1}^N-2a_i (b_i – xa_i)$$

\(S\)の微分が0になる傾きは

\begin{align}
\frac{dS}{dx}&=0\\
\sum_{i=1}^N-2a_i (b_i – xa_i)&=0\\
\sum_{i=1}^N a_i b_i – x\sum_{i=1}^N a_i^2&=0\\
x\sum_{i=1}^N a_i^2&=\sum_{i=1}^N a_i b_i\\
x&=\frac{\sum_{i=1}^N a_i b_i}{\sum_{i=1}^N a_i^2}
\end{align}

つまりデータ点を原点を通る直線で近似したときにデータ点を最小二乗法の基準で最もよく表す傾きは\(a_i b_i\)を足したものを\(a_i\)の二乗の和で割ったものになることがわかります.

特異値分解を1次元のデータに適応して未知数を求めた場合

特異値分解は行列Aを特異値行列と2つのユニタリー行列に分解する手法ですが疑似逆行列とも深い関係があります.

先ほどと同じように\((a_i,b_i), i=1,\dots,N\)というデータがあるとき,

$$A = \left[
\begin{array}{c}
a_1\\
a_2\\
\vdots\\
a_N
\end{array}
\right],
B = \left[
\begin{array}{c}
b_1\\
b_2\\
\vdots\\
b_N
\end{array}
\right]
$$

とすると\(B=Ax\)と書けます.

もし,Aが正方行列かつ正則で逆行列を持つならば\(x=A^{-1}B\)として計算することができますが,今回はAが正方行列ではないため逆行列\(A^{-1}\)を使って計算することができません.

このようなとき逆行列の代わりに使用されるのが疑似逆行列です.疑似逆行列は正方行列でない行列\(A\)に対して,転置もしくは複素共役行列\(A^*\)を左からかけることで\(A^* B=A^* A x\)の形にし,\(A^* A\)という正方行列の逆行列を左からかけることで

\begin{align}
x&=(A^* A)^{-1}A^* B\\
x&=\frac{\sum_{i=1}^N a_i b_i}{\sum_{i=1}^N a_i^2}
\end{align}

1次元の場合は疑似逆行列も簡単に計算できて,最小二乗法を使用した時と同じ解になることがわかります.(*)は複素共役転置ですが,実数のみの行列を扱う場合はただの転置と同じです.

補足:\(A^* A=\sum_{i=1}^N a_i^2\)なので\((A^* A)^{-1}=\frac{1}{\sum_{i=1}^N a_i^2}\)となります.スカラーの逆行列は,割り算して1になる値なので簡単に求めることができますね.

今回はさらに\((A^*A)^{-1}\)を計算する代わりに特異値分解を用いて未知数\(x\)を求めてみます.

行列\(A\)を特異値分解すると

$$A=\tilde{U}\tilde{\Sigma}\tilde{V}^*$$

と分解できます.このとき\(\tilde{U}\), \(\tilde{V}\)はユニタリー行列,つまり回転を表す行列.\(\tilde{\Sigma}\)は特異値行列で拡大縮小を反映する行列です.

[U, V, Sigmaの説明をする図]

このとき\(B=Ax=\tilde{U}\tilde{\Sigma}\tilde{V}^* x\)とかけます.

また,\(A^*=\tilde{V}\tilde{\Sigma}^{-1}\tilde{U}^*\)となるので左からかけると

\begin{align}
\tilde{V}\tilde{\Sigma}^{-1}\tilde{U}^*B=\tilde{V}\tilde{\Sigma}^{-1}\tilde{U}^*\tilde{U}\tilde{\Sigma}\tilde{V}^* x\\
\tilde{V}\tilde{\Sigma}^{-1}\tilde{U}^* B= x
\end{align}

このとき

\begin{align}
A^*A V = V\Sigma^2\\
\sum_{i=1}^N a_i^2 V = V \Sigma^2
\end{align}

ここで\(\sum_{i=1}^N a_i^2\)はスカラーなので\(V=1\),\(\Sigma = \sqrt{\sum_{i=1}^N a_i^2}\)が条件を満たすことがわかります.

このとき\(\tilde{U}\)は

\begin{align}
\tilde{U} = A\tilde{V}\tilde{\Sigma}^{-1}\\
\tilde{U} = \frac{1}{\sqrt{\sum_{i=1}^N a_i^2}} A
\end{align}

よって

\begin{align}
x &= \tilde{V}\tilde{\Sigma}^{-1}\tilde{U}^* B\\
x &= 1 \times \frac{1}{\sqrt{\sum_{i=1}^N a_i^2}} \times \frac{1}{\sqrt{\sum_{i=1}^N a_i^2}} A^* B\\
x &=\frac{\sum_{i=1}^N a_i b_i}{\sum_{i=1}^N a_i^2}
\end{align}

となり,最小二乗法と疑似逆行列,特異値分解を利用した\(x\)の解は同じになります.

まとめ:最小二乗法と疑似逆行列,特異値分解による連立方程式の解き方は一見異なるが実は同じことをしている

カテゴリー: 線形代数

N

博士後期課程学生 研究中に気づいた事を中心に記事を作成していきます.研究内容は主にヒト運動計測と脳波解析.

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA