要解決的問題在工程應用中,我們經常會用一組觀測數據去估計模型的參數,模型是我們根據先驗知識定下的。比如我們有一組觀測數據 ( x i , y i ) (x_i,y_i) (xi,yi)(一維),通過一些數據分析我們猜測 y y y和 x x x之間存在線性關系,那么我們的模型就可以定為: f ( x ) = k x + b f(x)=kx+b f(x)=kx+b 這個模型只有兩個參數,所以理論上,我們只需要觀測兩組數據建立兩個方程,即可解出兩個未知數。類似的,假如模型有 n n n個參數,我們只需要觀測 n n n組數據就可求出參數,換句話說,在這種情況下,模型的參數是唯一確定解。 但是在實際應用中,由于我們的觀測會存在誤差(偶然誤差、系統(tǒng)誤差等),所以我們總會做多余觀測。比如在上述例子中,盡管只有兩個參數,但是我們可能會觀測
n
n
n組數據
(
x
1
,
y
1
)
.
.
,
(
x
n
,
y
n
)
(x_1, y_1)..,(x_n, y_n)
(x1,y1)..,(xn,yn),這會導致我們無法找到一條直線經過所有的點,也就是說,方程無確定解。 于是這就是我們要解決的問題:雖然沒有確定解,但是我們能不能求出近似解,使得模型能在各個觀測點上達到“最佳“擬合。那么“最佳”的準則是什么?可以是所有觀測點到直線的距離和最小,也可以是所有觀測點到直線的誤差(真實值-理論值)絕對值和最小,也可以是其它,如果是你面臨這個問題你會怎么做? 早在19世紀,勒讓德就認為讓“誤差的平方和最小”估計出來的模型是最接近真實情形的。 為什么就是誤差平方而不是其它的,這個問題連歐拉、拉普拉斯都未能成功回答,后來是高斯建立了一套誤差分析理論,從而證明了確實是使誤差平方和最小的情況下系統(tǒng)是最優(yōu)的。理論的證明也并不難,我寫在了另外一篇博客 最小二乘法的原理理解,相信你了解后會對最小二乘法有更深刻的認識。 按照勒讓德的最佳原則,于是就是求: 至于怎么求出具體的參數那就是另外一個問題了,理論上可以用導數法、幾何法,工程上可以用梯度下降法。下面以最常用的線性回歸為例進行推導和理解。 線性回歸線性回歸因為比較簡單,可以直接推導出解析解,而且許多非線性的問題也可以轉化為線性問題來解決,所以得到了廣泛的應用。甚至許多人認為最小二乘法指的就是線性回歸,其實并不是,最小二乘法就是一種思想,它可以擬合任意函數,線性回歸只是其中一個比較簡單而且也很常用的函數,所以講最小二乘法基本都會以它為例。 下面我會先用矩陣法進行推導,然后再用幾何法來幫助你理解最小二乘法的幾何意義。 矩陣解法線性回歸定義為:
h
θ
(
x
1
,
x
2
,
…
x
n
?
1
)
=
θ
0
+
θ
1
x
1
+
…
+
θ
n
?
1
x
n
?
1
h_{\theta}\left(x_{1}, x_{2}, \ldots x_{n-1}\right)=\theta_{0}+\theta_{1} x_{1}+\ldots+\theta_{n-1} x_{n-1}
hθ(x1,x2,…xn?1)=θ0+θ1x1+…+θn?1xn?1(
θ
\theta
θ為參數)假設現在有
m
m
m個樣本,每個樣本有
n
?
1
n-1
n?1維特征,將所有樣本點代入模型中得: h1=θ0+θ1x1,1+θ2x1,2+…+θn?1x1,n?1h2=θ0+θ1x2,1+θ2x2,2+…+θn?1x2,n?1?hm=θ0+θ1xm,1+θ2xm,2+…+θn?1xm,n?1 h1=θ0+θ1x1,1+θ2x1,2+…+θn?1x1,n?1h2=θ0+θ1x2,1+θ2x2,2+…+θn?1x2,n?1?hm=θ0+θ1xm,1+θ2xm,2+…+θn?1xm,n?1為方便用矩陣表示,我們令
x
0
=
1
x_0=1
x0=1,于是上述方程可以用矩陣表示為:h = X θ \mathbf{h}=\mathbf{X} \theta h=Xθ其中, h \mathbf{h} h為mx1的向量, 代表模型的理論值, θ \theta θ 為nx1的向量, X X X為mxn維的矩陣, m m m代表樣本的個數, n n n代表樣本的特征數,于是目標損失函數用矩陣表示為: J ( θ ) = ∥ h ? Y ∥ 2 = ∥ X θ ? Y ∥ 2 = ( X θ ? Y ) T ( X θ ? Y ) J(\theta)=\|\mathbf{h}-\mathbf{Y}\|^2 =\|\mathbf{X}\theta-\mathbf{Y}\|^2= (\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y}) J(θ)=∥h?Y∥2=∥Xθ?Y∥2=(Xθ?Y)T(Xθ?Y)其中 Y \mathbf{Y} Y是樣本的輸出向量, 維度為mx1。 根據高數知識我們知道函數取得極值就是導數為0的地方,所以我們只需要對損失函數求導令其等于0就可以解出
θ
\theta
θ。矩陣求導屬于矩陣微積分的內容,我也是現學的(…,這里先介紹兩個用到的公式: 幾何意義幾何意義會直觀的幫助你理解最小二乘法究竟在干什么。首先先來解釋一下矩陣乘法的幾何意義,對于一個方程組 A x Ax Ax,我們可以看做是 x x x對矩陣 A A A的列向量的線性組合,比如: { 1 × x 1 + x 2 = 3 ? 1 × x 1 + x 2 = 1 ? [ 1 1 ? 1 1 ] [ x 1 x 2 ] = [ 3 1 ] ? A × x = b \left\{1×x1+x2=3?1×x1+x2=1 1×x1+x2=3?1×x1+x2=1 \Leftrightarrow\left[11?111?111 \right]\left[x1x2x1x2 \right]=\left[3131 \right] \Leftrightarrow A \times x=b\right.
{1×x1+x2=3?1×x1+x2=1?[1?111][x1x2]=[31]?A×x=b可以看作: [ 1 ? 1 ] × x 1 + [ 1 1 ] × x 2 = [ 3 1 ] ? a 1 × x 1 + a 2 × x 2 = b \left[1?1 1?1 \right] \times x_{1}+\left[1111 \right] \times x_{2}=\left[3131 \right] \Leftrightarrow a_{1} \times x_{1}+a_{2} \times x_{2}=b
[1?1]×x1+[11]×x2=[31]?a1×x1+a2×x2=b畫在坐標軸上可以看到,向量 b \mathbf b其實就是向量 a 1 \mathbf{a_1} a1與 a 2 \mathbf{a_2} a2的線性組合,因為他們都是在一個平面上,顯然是有解的。 但是如文章開頭所說,由于存在觀測誤差,我們往往會做多余觀測,比如要擬合一次方程 y = k x + b y=k x+b y=kx+b,我們可能觀測了三個點(0,2),(1,2),(2,3),寫成矩陣形式如下(為表述方便,用x1代替k,x2代替b ): { 1 × x 1 + x 2 = 2 0 × x 1 + x 2 = 2 2 × x 1 + x 2 = 3 ? [ 1 1 0 1 2 1 ] [ x 1 x 2 ] = [ 2 2 3 ] ? A × x = b \left\{1×x1+x2=20×x1+x2=22×x1+x2=3 1×x1+x2=20×x1+x2=22×x1+x2=3 \Leftrightarrow\left[110121102111 \right]\left[x1x2x1x2 \right]=\left[223223 \right] \Leftrightarrow A \times x=b\right.
???1×x1+x2=20×x1+x2=22×x1+x2=3???102111??[x1x2]=??223???A×x=b表示成線性組合的方式: [ 1 0 2 ] × x 1 + [ 1 1 1 ] × x 2 = [ 2 2 3 ] ? a 1 × x 1 + a 2 × x 2 = b \left[102 102 \right] \times x_{1}+\left[111111 \right] \times x_{2}=\left[223\right] \Leftrightarrow a_{1} \times x_{1}+a_{2} \times x_{2}=b
??102??×x1+??111??×x2=??223???a1×x1+a2×x2=b畫在圖中如下: 退而求其次,雖然我們不可能得到
b
\mathbf
b,但在
S
\mathbf{S}
S上找一個和
b
\mathbf
b最接近的總可以吧。那么將
b
\mathbf
b投影 在平面
S
\mathbf{S}
S上得到的向量
p
\mathbf{p}
p就是和
b
\mathbf
b最接近的向量(把向量看作點,最接近的意思就是點到平面某點取得距離最短,自然就是投影所成的交點)。 換句話說,方程組 A x = b Ax=b Ax=b雖然無解,也就是b不在A的列空間中,但是我們可以在 A A A的列空間中找到一個和 b b b最接近的向量 p p p, p p p就是 b b b在 A A A的列空間中的投影,通過求 A x = p Ax=p Ax=p的解,就是原方程的最小二乘解。 由幾何意義可知垂線
e
=
b
?
p
=
b
?
A
x
e=b-p=b-Ax
e=b?p=b?Ax正交于平面
S
\mathbf{S}
S,也就是
a
1
T
e
=
0
,
a
2
T
e
=
0
a_{1}^{T} e=0, a_{2}^{T} e=0
a1Te=0,a2Te=0,寫成矩陣形式: 到這里最小二乘法的推導已經完成了,但是我們忽略了一個問題,就是假如 A T A A^TA ATA不可逆怎么辦?這個問題我會另寫一篇博客進行介紹。 以上就是全部內容。 |
|