最小二乘法理論、推導、算法

最小二乘法理論、推導、算法


author@jason_ql
http://blog.csdn.net/lql0716


1、引言

  • 求最小二乘的實例:

假定x , y 有如下數值:
y | 1.00 | 0.90 | 0.90 | 0.81 | 0.60 | 0.56 | 0.35
x | 3.60 | 3.70 | 3.80 | 3.90 | 4.00 | 4.10 | 4.20

解:將這些數值畫圖可以看出接近一條直線,故用y=ax+b 表示,故將上面的數值代入表達式有:

3.6a+b1.00=03.7a+b0.90=03.8a+b0.90=03.9a+b0.81=04.0a+b0.60=04.1a+b0.56=04.2a+b0.35=0

由於直線只有兩個未知數a , b ,理論上只需要兩個方程就能求得,但是實際上是不可能的,因爲所有點並沒有真正的在同一條直線上,即不可能所有的數值都滿足

ax+by0
,故只需找到一對兒ab ,使得誤差平方和
(axi+byi)2=(ax0+by0)2+(ax1+by1)2+......+(axn+byn)2
最小即可。

誤差的平方即二乘方,故成爲最小二乘法。

2、最小二乘法理論(使得平方和最小)

2.1 數學理論推導

  • 線性方程組

a11x1+a12x2+...+a1sxsb1=0,a21x1+a22x2+...+a2sxsb2=0,......an1x1+an2x2+...+ansxsbn=0, (1)

該方程組可能無解,即任何一組x1,x2,...,xs (這裏爲係數)都可能使得

i=1n(ai1x1+ai2x2+...+aisxsbi)2(2)

不等於零。所以找到一組x1,x2,...,xs 使得(2)式最小,稱這樣的解爲最小二乘解,這種問題就叫最小二乘方問題。

對於(1)式,我們可以用矩陣來表示,
自變量矩陣A :

A=a11a21.an1a12a22.an2..........a1sa2s.ans(3)

函數值B :

B=b1b2...bn(4)

係數X :

X=x1x2...xs(5)

函數值Y :

Y=j=1sa1jxjj=1sa2jxj...j=1sanjxj=AX(4)

故(2)式等價於:

|YB|2=|AXB|2=i=1n(ai1x1+ai2x2+...+aisxsbi)2

也就是說,最小二乘法就是找x1,x2,...,xs 使得YB 的距離最短。

對於(4)式Y ,可以寫爲如下形式:

Y=x1a11a21...an1+x2a12a22...an2+...+xsa1sa2s...ans=x1α1+x2α2+...+xsαs(5)

其中αi 爲對應的列向量,由αi 生成的子空間爲L(α1,α2,...,αs) ,那麼Y 就是L(α1,α2,...,αs) 中的向量,故最小二乘法問題可敘述成:

X 使得(2)式最小,就是在L(α1,α2,...,αs) 中找一向量Y 使得B 到它的距離比到子空間L(α1,α2,...,αs) 中其它向量的距離都短。

Y=AX=x1α1+x2α2+...+xsαs ,則

C=BY=BAX

必須垂直於子空間L(α1,α2,...,αs) ,故有

(C,α1)=(C,α2)=...=(C,αs)=0

由向量內積的定義可知:

α1C=0,α2C=0,...,αsC=0(6)

向量的內積:

α=(a1,a2,...,an) ,

β=(b1,b2,...,bn) ,

αβ 的內積爲:(α,β)=a1b1+a2b2+...+anbn

由(6)式可得:

AC=0

即:

AC=A(BY)=A(BAX)=0

從而有:

ABAAX=0

AB=AAX

X=(AA)1AB

其中|AA|0

2.2 常見形式

2.2.1 理論

根據2.1節,可以得出以下形式(s+1n ):

a1x11+a2x12+...+asx1s+by1=0,a1x21+a2x22+...+asx2s+by2=0,......a1xn1+a2xn2+...+asxns+byn=0, (2.2.1)

這裏是常見的方程表示形式aj 爲係數,b 爲常數項,xij 爲自變量,yi 爲函數值。一般我們解方程都是根據ajb 求得yi=a1xi1+a2xi2+...+asxis+b ,但在解決實際問題時,一般我們都是知道xijyi ,需要反過來求解ajb

根據(2.2.1)式,設:

X=x11x21.xn1x12x22.xn2..........x1sx2s.xns1111

a=a1a2...asb

y=y1y2...yn

那麼:

Xa=y

XXa=Xy

a=(XX)1Xy

2.2.2 算法


  • 算法步驟

1、輸入Xy

2、求a=(XX)1Xy

參考

《高等代數》北大三版

乾貨分享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章