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