1. 程式人生 > >線性代數之——最小二乘

線性代數之——最小二乘

1. 最小二乘

A x = b Ax=b 經常會沒有解,當方程個數大於未知數個數,也即 m >

n m>n 時,列空間並不是 R m R^m 空間的全部,因此 b
b
可能不在列空間中,這時候方程組就無解,但我們不應該就此而停止。

也就是誤差 e = b A x

e = b-Ax 並不總是能得到 0,這時候,如果誤差 e e 的長度儘可能的小,那我們就得到了最小二乘解 x ^ \hat x

A x = b Ax=b 無解的時候,我們乘以 A T A^T 來求解 A T A x = A T b A^TAx=A^Tb

假如我們要找到一條直線,讓它距離 (0, 6) ,(1, 0),(2, 0) 這三點最近。沒有直線 b = C + D t b = C+Dt 同時穿過這三點,我們要找的兩個常數 C C D D

C + D 0 = 6 C + D 1 = 0 C + D 2 = 0 \begin{alignedat}{3} &C\quad+ \quad&D&\cdot 0 \quad=\quad 6 \\ &C\quad + \quad&D&\cdot 1 \quad=\quad 0 \\ &C\quad + \quad&D&\cdot 2 \quad=\quad 0 \end{alignedat}

A = [ 1 0 1 1 1 2 ] x = [ C D ] b = [ 6 0 0 ] A = \begin{bmatrix}1&0\\1&1\\ 1&2 \end{bmatrix} \quad x = \begin{bmatrix}C\\D \end{bmatrix} \quad b = \begin{bmatrix}6\\0\\0 \end{bmatrix}

由於 b = ( 6 , 0 , 0 ) b = (6, 0, 0) 不是 A A 的列的一個線性組合,因此方程組無解。

A T A x = A T b [ 3 3 3 5 ] [ C D ] [ 6 0 ] A^TAx=A^Tb \to \begin{bmatrix}3&3\\3&5\end{bmatrix} \begin{bmatrix}C\\D \end{bmatrix}\begin{bmatrix}6\\0 \end{bmatrix}

C = 5 D = 3 \begin{alignedat}{2} C = 5 \\ D =-3 \end{alignedat}

因此,距離這三點最近的一條直線為 b = 5 3 t b = 5-3t

2. 最小化誤差

  • 幾何理解

任何 A x Ax 都是 A A 的列的一個線性組合,它們都位於以 A A 的列為基的一個平面中。因此,我們要找的就是平面中的一個距離 b b 最近的向量,而這個向量就是 b b 在這個平面中的投影 p p

  • 代數理解

A x = b = p + e Ax=b=p+e 是不可解的,但 A x ^ = p A\hat x = p 是可解的。我們需要最小化下面這個誤差

A x b 2 = A x p 2 + e 2 ||Ax-b||^2 = ||Ax-p||^2 + ||e||^2

當取 x = x ^ x = \hat x ,$ ||Ax-p||^2 = 0$,因此最小誤差為 e 2 |e||^2

  • 微積分理解

誤差函式可以表示為

兩個未知數有兩個導數,當導數分別為零時,我們就得到了誤差函式的最小值。

整理後我們得到

可以看到,這和 A T A x = A T b A^TAx=A^Tb 得到的結果是一樣的。也就是說當 A T A x = A T b A^TAx=A^Tb