一、最小二乘法
最小二乘法是一種數學優化方法,通過最小化誤差的平方和來擬合數據點。
以線性迴歸模型爲例,如果我們用最小二乘法來求解線性迴歸的係數,可得:
err(yi−y^)=n1i=1∑n(yi−y^)2=n1i=1∑n(yi−wTxi)2=n1(y−wX)T(y−wX)=n1(yTy−2wXTy+wTXTXw)
我們要求上式的最小值,要對其求導,然後尋找極小值點。
∂w∂err=n1(2wXTX−2XTy)=0wXTX=XTyw=(XTX)−1XTy
由此我們便可以推導出參數的表達式。
二、QR分解
QR分解是把一個矩陣分解爲一個正交矩陣和一個上三角矩陣的積。即有實數矩陣A,有A=Q×R,其中Q爲正交矩陣(QT⋅Q=I),R爲上三角矩陣。QR分解常見的算法有Gram–Schmid正交化、Household變換,以及Givens變換。
2.1 Gran-Schmid正交化
設矩陣A=(a1,a2,...,an),對矩陣A進行Gran-Schmid正交化過程。其中pi爲正交向量,qi爲歸一化後的標準正交向量,i=1,2,...,n 。
p1p2a2p3a3=a1=∥p1∥q1=r11q1=a2−∥p1∥2a2⋅p1⋅p1=∥p2∥q2=∥p2∥q2+∥p1∥2a2⋅p1⋅p1=∥p2∥q2+∥p1∥2a2⋅p1∥p1∥q1=r21q1+r22q2=a3−∥p1∥2a3⋅p1⋅p1−∥p2∥2a3⋅p2⋅p2=∥p3∥q3=∥p3∥q3+∥p1∥2a3⋅p1⋅p1+∥p2∥2a3⋅p2⋅p2=r31q1+r32q2+r33q3
之後通過分解矩陣A:
A=(a1,a2,...,an)=(r11q1,r21q1+r22q2,...,i=1∑nrniqi)=(r11q1,r21q1,r31q1,...,rn1q1)+(0,r22q2,r32q2,...,rn2q2)+......+(0,0,0,...,rnnqn)=(q1,q2,...,qn)⋅⎣⎢⎢⎢⎡r110⋮0r21r22⋮0⋯⋯⋱⋯rn1rn2⋮rnn⎦⎥⎥⎥⎤=Q⋅R
2.2 Householder矩陣與Householder變換
在平面直角座標系中,將向量a=(c,d)作關於x軸的交換,可得到:
b=[c−d]=[100−1][cd]=(I−2[01][01]T)x=Hx
可將其推廣至:
2.2.1 定義
設單位列向量u∈Rn,稱H=I−2uuT爲Householder矩陣(初等反射矩陣),由Householder矩陣所確定的線性變換(y=Hx)稱爲Householder變換。
2.2.2 性質
(1) HT=H(實對稱),H−1=HT(正交),H2=I(對合),H−1=H(自逆),det(H)=−1
(2) 對於任何非零列向量x∈Rn及任何單位列向量z∈Rn,存在Householder矩陣H,使得Hx=∣x∣z
(3) 初等旋轉矩陣(Givens矩陣)是兩個初等反射矩陣H的乘積
(定理證明請參照參考文獻[2])
2.2.3 採用Householder變換的QR分解
A=[b(1)∗],存在H1,使得
H1b(1)=∣∣∣b(1)∣∣∣e1→H1A=[∣∣b(1)∣∣e1nA(1)]
A(1)=[b(2)∗],存在H2,使得H2A(1)=[∣∣b(2)∣∣e1n−1A(2)]L
A(n−2)=[b(n−1)b(n)],存在Hn−1,使得
Hn−1A(n−2)=⎣⎢⎡an−1,n−1(n−1)0an−1,n(n−1)ann(n−1)⎦⎥⎤
令S=⎣⎡In−200Hn−1⎦⎤⎣⎡In−300Hn−2⎦⎤L⎣⎡I200H3⎦⎤⎣⎡100H2⎦⎤H1
Hl+1=In−l−2uuT(u∈Rn−1,uTu=1)
則
⎣⎡Il00Hl+1⎦⎤=⎣⎡Il00In−l⎦⎤−2⎣⎡000uuT⎦⎤=In−2⎣⎡0u⎦⎤[0TuT]=In−2vvT
vTv=[0TuT][0u]=uTu=1
SA=⎣⎢⎢⎡a11(1)000a12(1)a22(2)00LLO0a1n(1)a2n(2)Mannn−1⎦⎥⎥⎤=R,S−1=Q
Q爲正交矩陣
2.3 Givens矩陣與Givens變換
2.3.1 定義
設實數c與實數s滿足c2+s2=1,稱
爲Givens矩陣,記作Tij=Tij(c,s),由Givens矩陣確定的線性變換成爲Givens變換(初等旋轉變換)。
說明:
(1).實數c2+s2=1,故存在θ,使c=cosθ,s=sinθ
(2).y=Tijx中Tij確定了將向量變成y的一種變換,正是Givens變換。二階情況下,y=[cosθ−sinθsinθcosθ]x確定的正是平面直角座標系中繞原點的一個旋轉變換(旋轉θ度)。
2.3.2 性質
(1) [Tij(c,s)]−1=[Tij(c,s)]T=Tij(c,−s),Tij爲正交矩陣。det[Tij(c,s)]=1
(2) 設x=[a1,a2,⋯,an]T,y=Tijx=[b1,b2,⋯,bn],則有,
⎩⎪⎨⎪⎧bi=c×ai+s×ajbj=−s×ai+c×ajbk=ak,k=i,j
(3) 設x=[a1,a2,⋯,an]T=0,則存在有限個Givens矩陣的乘積T,使得Tx=∣x∣e1,
說明:(1).∣x∣=∥x∥22=xTx
(2).e1=[1,0,0,⋯,0]T
推論:對於任何非零列向量x∈Rn及任何單位列向量z(∣z∣=1),均存在着有限個Givens矩陣的乘積T,使Tx=∣x∣z
(定理證明請參照參考文獻[2])
2.3.3 應用Givens旋轉的QR分解
可以用下面的這幅圖來理解:x是沒有改變的元素,m是改變了的元素。每一次箭頭都進行了一次Givens旋轉。
詳細推導參見
矩陣QR分解 Givens變換 Household變換
2.4 總結
無論是Gram–Schmid正交化、Household變換,還是Givens變換,對矩陣進行QR分解的思路都是對矩陣進行多次線性變換,直至分解成一個正定矩陣與一個上三角矩陣的乘積。不同的方法有不同的優點和缺點。
三、最小二乘法中的QR分解
已知線性迴歸的係數向量w=(XTX)−1XTy,我們爲什麼不直接求解呢?
3.1 條件數
計算機在進行運算的時候,有的時候會因爲矩陣自身的特點而產生較大的誤差。一個矩陣的條件數是它在計算機計算中的容易程度,條件數較大的時候矩陣計算就比較容易產生誤差,此時該矩陣被稱爲病態矩陣。
條件數計算的公式爲:condi(X)=∥X−1∥∥X∥
若∥⋅∥爲2範數,則condi(X)=σmin(X)σmax(X),其中σmax(X)與σmin(X)分別是矩陣X的極大奇異值和極小奇異值(奇異值參考)。
若我們使用最小二乘法推導出的公式計算係數向量,我們可以看到XTX的條件數:
condi(XTX)=condi(VΣTUTUΣVH)=condi(VΣ2VH)=condi(X)2 然而通過使用QR分解,我們可以將條件數降到儘量低。
3.2 最小二乘法與QR分解
我們首先將訓練集X分解爲X=QR,再帶入上面計算係數矩陣的公式中。
w^∗XTXw^∗RTQTQRw^∗RTRw^∗Rw^∗w^∗=(XTX)−1XTy=XTy=RTQTy=RTQTy(QTQ=I)=QTy=R−1QTy 我們僅需直到X的QR分解就可以直接計算出w。
四、參考文獻
[1]. 用QR分解求最小二乘法的最優閉式解
[2]. 矩陣QR分解 Givens變換 Household變換
[3]. 矩陣的QR分解
[4]. QR decomposition and Givens Rotation
[4]. QR分解與最小二乘
[5]. QR分解之Household變換
[6]. 矩陣論基礎知識