Least Squares
8.1 Least Squares
最小絕對偏差法 Least absolute deviation
假設現在給你這些點
(圖源:wiki )
我們沒辦法用一條直線來通過這些全部的點,但我們可以像這樣找到誤差最小的直線:
(圖源:wiki )
這條直線可以幫助我們預測資料的方向。
假設 $a_1x_i + a_0$ 是這條直線上的第 i 個值,$y_i$ 是第 i 個給定的 y 值(原本的 y 值),我們期望誤差最小,所以我們想要找到 $a_0$、$a_1$ 最小化這個式子:
$E_\infty(a_0, a_1) = max_{1 \leq i \leq 10}{|\ y_i - (a_1x_i + a_0)\ |}$
這個方法稱作 minimax approach,我們還可以換個方法,找絕對偏差的最小值:
$E_1(a_0, a_1) = \Sigma_{i=1}^{10} |y_i - (a_1x_i + a_0)|$
那我們要找最小值,也就是說我們要找到 $a_0$、$a_1$ 符合下面這兩條式子:
這個方法叫做最小絕對偏差法(least absolute deviation),但問題是這兩條有絕對值,微分的處理很麻煩,所以下一個方法就出來了
最小平方法 Least Square
剛剛是因為絕對值微分很麻煩,所以這邊就把誤差平方:
$E_2(a_0, a_1) = \Sigma_{i=1}^{10} [\ y_i - (a_1x_i + a_0)\ ]^2$
這樣的話就解決了微分的問題,這樣一來不但微分好算,而且還是 convex 可以找到最佳解
正規方程式 Normal Equations
我們繼續找最小值,對上方的 $E_2$ 做偏微:
然後我們可以推出(用克拉瑪):
這兩個等式就叫 normal equation。
Polynomial Least Squares
然而妳拿到的資料很有可能不是一個用 $ax + b$ 就能表達的資料分布,像是這樣:
藍線明顯比紅線更好的講述了這個資料的分布,要做出這種藍線,我們就需要用更高次方的多項式來表達他,這時就需要用 Polynomial Least Squares 了
我們假設
$P_n(x) = a_nx^n + a_{n-1}x^{n-1} +\ …\ + a_1x + a_0$,defree n < m - 1
那我們要找到 $a_0, a_1, …, a_n$ 來最小化 E:
那一樣對他偏微:
那我們就可以推出這樣:
用矩陣表示
我們的目的是找到一條線 $y = a_1x + a_0$,或一個曲線,可以很好的表示資料 ${(x_i, y_i)}_{i=1}^m$ 的走向,後面可能會用 b 來代表 $a_0$,畢竟比較習慣用 b 來寫。
寫成矩陣會像這樣:
但通常 $b \notin C(A)$,所以我們改成去找能讓 residual $E(\vec x) = ||\vec b - A\vec x||_2$ 最小化的 $\vec x$。 假設 $A \in \mathbb{R}^{m\times n}, b \in \mathbb{R}^{m+1}$,其中 $m>n$ (under determine),
那麼 $\vec x$ 最小化 $E(\vec x) = ||\vec b - A\vec x||_2$ iff $\vec x$ 是 $A^TA\vec x = A^T\vec b$ 的解
證明:
這裡的 $\vec y$ 是 $\mathbb{R}^{n \times 1}$ 裡的隨便一個向量,$A$ 作用上去就會變 $C(A)$ 裡面的一個向量,所以和 $b - A\vec x$ 內積就會等於 0,因為垂直。
註:$A\vec x$ 解出來的所有結果會在一個固定的區域中,這個區域就叫作 column space $C(A)$,顧名思義就是每個 column 的線性組合 $\vec a_0 + \vec x_1 \vec a_1 + \vec x_2 \vec a_2 +\ …\ + \vec x_m \vec a_m$,一維的話就是一條線,二維的話就是一個平面
那這個東西解起來就會像這樣:
因為我們拿到的資料通常都不會在平面 $C(A)$ 上,也就是剛剛說的通常 $\vec b \notin C(A)$,尤其是在妳資料點很多的時候 A 就會很長一坨,像上面就有 m 個資料點,所以 A 就是個 $m\times 2$ 的矩陣,如果 m 遠遠大於 2,那 $A\vec x = \vec b$ 基本上都沒有解,所以我們才會在這邊用這個方法找到誤差最小的解。
多維的 normal equation
多維代表不只有 $a_0$、$a_1$,還有其他的 $a_2$、$a_3$ 等等,所以你的 $A$ 的 column 數就會增加,以 $y = a_2x^2 + a_1x + a_0$ 來說就會長這樣:
那麼 $\vec x = (A^TA)^{-1}A^T \vec b$ 大家應該就會求了。
自然對數相關
有時候資料的表示式可能是 $y = be^{ax}$ 這類的形式,那麼我們可以這樣寫:
基本上跟前面講的一樣