矩陣的QR分解以及在最小二乘法中的應用

一、最小二乘法

  最小二乘法是一種數學優化方法,通過最小化誤差的平方和來擬合數據點。
  以線性迴歸模型爲例,如果我們用最小二乘法來求解線性迴歸的係數,可得:
err(yiy^)=1ni=1n(yiy^)2=1ni=1n(yiwTxi)2=1n(ywX)T(ywX)=1n(yTy2wXTy+wTXTXw) \begin{aligned} err(y_i-\hat y) &= \frac{1}{n}\sum_{i=1}^n (y_i-\hat y)^2 = \frac{1}{n}\sum_{i=1}^n (y_i-w^Tx_i)^2\\ &= \frac{1}{n}(y-wX)^T(y-wX) \\ &= \frac{1}{n}(y^Ty-2wX^Ty+w^TX^TXw) \end{aligned}
  我們要求上式的最小值,要對其求導,然後尋找極小值點。
werr=1n(2wXTX2XTy)=0wXTX=XTyw=(XTX)1XTy \begin{aligned} \frac{\partial}{\partial w}err &= \frac{1}{n}(2wX^TX-2X^Ty) = 0\\ &wX^TX = X^Ty\\ &w=(X^TX)^{-1}X^Ty \end{aligned}
  由此我們便可以推導出參數的表達式。

二、QR分解

  QR分解是把一個矩陣分解爲一個正交矩陣和一個上三角矩陣的積。即有實數矩陣A,有A=Q×RA=Q\times R,其中Q爲正交矩陣(QTQ=IQ^T\cdot Q=I),R爲上三角矩陣。QR分解常見的算法有Gram–Schmid正交化、Household變換,以及Givens變換。

 2.1 Gran-Schmid正交化

  設矩陣A=(a1,a2,...,an)A=(\vec{a_1},\vec{a_2},...,\vec{a_n}),對矩陣A進行Gran-Schmid正交化過程。其中pi\vec{p_i}爲正交向量,qi\vec{q_i}爲歸一化後的標準正交向量,i=1,2,...,ni=1,2,...,n
p1=a1=p1q1=r11q1p2=a2a2p1p12p1=p2q2a2=p2q2+a2p1p12p1=p2q2+a2p1p12p1q1=r21q1+r22q2p3=a3a3p1p12p1a3p2p22p2=p3q3a3=p3q3+a3p1p12p1+a3p2p22p2=r31q1+r32q2+r33q3 \begin{aligned} \vec{p_1} &= \vec{a_1} = \lVert \vec{p_1}\rVert\vec{q_1}=r_{11}\vec{q_1}\\ \vec{p_2} &= \vec{a_2} - \frac{\vec{a_2}\cdot \vec{p_1}}{\lVert \vec{p_1}\rVert^2}\cdot \vec{p_1} = \lVert \vec{p_2}\rVert\vec{q_2}\\ \vec{a_2} &= \lVert \vec{p_2}\rVert\vec{q_2} + \frac{\vec{a_2}\cdot \vec{p_1}}{\lVert \vec{p_1}\rVert^2}\cdot \vec{p_1}\\ &= \lVert \vec{p_2}\rVert\vec{q_2} + \frac{\vec{a_2}\cdot \vec{p_1}}{\lVert \vec{p_1}\rVert^2}\lVert \vec{p_1}\rVert \vec{q_1}\\ &= r_{21}\vec{q_1} + r_{22}\vec{q_2}\\ \vec{p_3} &= \vec{a_3} - \frac{\vec{a_3}\cdot \vec{p_1}}{\lVert \vec{p_1}\rVert^2}\cdot \vec{p_1} - \frac{\vec{a_3}\cdot \vec{p_2}}{\lVert \vec{p_2}\rVert^2}\cdot \vec{p_2}\\ &= \lVert \vec{p_3}\rVert\vec{q_3}\\ \vec{a_3} &= \lVert \vec{p_3}\rVert\vec{q_3} + \frac{\vec{a_3}\cdot \vec{p_1}}{\lVert \vec{p_1}\rVert^2}\cdot \vec{p_1} + \frac{\vec{a_3}\cdot \vec{p_2}}{\lVert \vec{p_2}\rVert^2}\cdot \vec{p_2}\\ &= r_{31}\vec{q_1} + r_{32}\vec{q_2} + r_{33}\vec{q_3} \end{aligned}
  之後通過分解矩陣AA:
A=(a1,a2,...,an)=(r11q1,r21q1+r22q2,...,i=1nrniqi)=(r11q1,r21q1,r31q1,...,rn1q1)+(0,r22q2,r32q2,...,rn2q2)+......+(0,0,0,...,rnnqn)=(q1,q2,...,qn)[r11r21rn10r22rn200rnn]=QR \begin{aligned} A &= (\vec{a_1},\vec{a_2},... ,\vec{a_n})\\ &= (r_{11}\vec{q_1},r_{21}\vec{q_1}+r_{22}\vec{q_2},... ,\sum_{i=1}^n r_{ni}\vec{q_i})\\ &= (r_{11}\vec{q_1},r_{21}\vec{q_1},r_{31}\vec{q_1},...,r_{n1}\vec{q_1})\\ &+ (0,r_{22}\vec{q_2},r_{32}\vec{q_2},...,r_{n2}\vec{q_2})\\ &+...... \\ &+ (0,0,0,...,r_{nn}\vec{q_n})\\ &= (\vec{q_1},\vec{q_2},...,\vec{q_n})\cdot \left[ \begin{matrix} r_{11} & r_{21} & \cdots & r_{n1} \\ 0 & r_{22} & \cdots & r_{n2} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & r_{nn} \\ \end{matrix} \right]\\ &=Q\cdot R \end{aligned}

  2.2 Householder矩陣與Householder變換

     
  在平面直角座標系中,將向量a=(c,d)\vec a=(c,d)作關於x軸的交換,可得到:
b=[cd]=[1001][cd]=(I2[01][01]T)x=Hx b = \left[ \begin{matrix} c\\-d \end{matrix} \right]=\left[ \begin{matrix} 1 & 0\\ 0 & -1 \end{matrix}\right] \left[ \begin{matrix} c\\ d \end{matrix} \right]=(I-2 \left[ \begin{matrix} 0\\ 1 \end{matrix} \right] \left[ \begin{matrix} 0\\ 1 \end{matrix} \right]^T)x=Hx
  可將其推廣至:

  2.2.1 定義

  設單位列向量uRnu \in R^n,稱H=I2uuTH=I-2uu^T爲Householder矩陣(初等反射矩陣),由Householder矩陣所確定的線性變換(y=Hxy=Hx)稱爲Householder變換。

  2.2.2 性質

  (1) HT=HH^T=H(實對稱),H1=HTH^{-1}=H^T(正交),H2=IH^2=I(對合),H1=HH^{-1}=H(自逆),det(H)=1det(H)=-1
  (2) 對於任何非零列向量xRnx\in R^n及任何單位列向量zRnz\in R^n,存在Householder矩陣HH,使得Hx=xzHx=|x|z
  (3) 初等旋轉矩陣(Givens矩陣)是兩個初等反射矩陣HH的乘積
  (定理證明請參照參考文獻[2])

  2.2.3 採用Householder變換的QR分解

  A=[b(1)]A=\left[\begin{matrix} b^{(1)}& * \end{matrix}\right],存在H1H_1,使得
H1b(1)=b(1)e1H1A=[b(1)e1nA(1)] H_1b^{(1)} =\left|b^{(1)}\right|e_1\to H_1A=\left[\begin{matrix}\left|b^{(1)}\right|e_1^nA^{(1)}\end{matrix}\right]
  A(1)=[b(2)]A^{(1)}=\left[\begin{matrix} b^{(2)}& * \end{matrix}\right],存在H2H_2,使得H2A(1)=[b(2)e1n1A(2)]LH_2A^{(1)} =\left[\begin{matrix}\left|b^{(2)}\right|e_1^{n-1}A^{(2)}\end{matrix}\right]L

  A(n2)=[b(n1)b(n)]A^{(n-2)}=\left[\begin{matrix} b^{(n-1)}& b^{(n)} \end{matrix}\right],存在Hn1H_{n-1},使得
Hn1A(n2)=[an1,n1(n1)an1,n(n1)0ann(n1)] H_{n-1}A^{(n-2)} = \left[ \begin{matrix} a^{(n-1)}_{n-1,n-1} & a^{(n-1)}_{n-1,n}\\ \\ 0 & a_{nn}^{(n-1)} \end{matrix} \right]
  令S=[In200Hn1][In300Hn2]L[I200H3][100H2]H1S=\left[ \begin{matrix} I_{n-2} & 0\\ \\ 0 & H_{n-1} \end{matrix} \right] \left[ \begin{matrix} I_{n-3} & 0\\ \\ 0 & H_{n-2} \end{matrix} \right]L \left[ \begin{matrix} I_{2} & 0\\ \\ 0 & H_{3} \end{matrix} \right] \left[ \begin{matrix} 1 & 0\\ \\ 0 & H_2 \end{matrix} \right] H_1

Hl+1=Inl2uuT(uRn1,uTu=1)H_{l+1}=I_{n-l}-2uu^T(u\in R^{n-1},u^Tu=1)

  則

[Il00Hl+1]=[Il00Inl]2[000uuT]=In2[0u][0TuT]=In2vvT\left[ \begin{matrix} I_l & 0\\ \\ 0 & H_{l+1} \end{matrix} \right]= \left[ \begin{matrix} I_l & 0\\ \\ 0 & I_{n-l} \end{matrix} \right]-2 \left[ \begin{matrix} 0 & 0\\ \\ 0 & uu^T \end{matrix} \right]= I_n-2\left[ \begin{matrix} 0\\ \\ u \end{matrix} \right] \left[ \begin{matrix} 0^T & u^T\\ \end{matrix} \right]=I_n-2vv^T

vTv=[0TuT][0u]=uTu=1v^Tv= \left[ \begin{matrix} 0^T & u^T\\ \end{matrix} \right] \left[ \begin{matrix} 0\\ u \end{matrix} \right]=u^Tu=1

SA=[a11(1)a12(1)La1n(1)0a22(2)La2n(2)00OM000annn1]=RS1=QSA=\left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & L & a_{1n}^{(1)}\\ 0 & a_{22}^{(2)} & L & a_{2n}^{(2)}\\ 0 & 0 & O & M\\ 0 & 0 & 0 & a_{nn}^{n-1} \end{matrix} \right]=R,S^{-1}=Q

  QQ爲正交矩陣

  2.3 Givens矩陣與Givens變換

  2.3.1 定義

  設實數cc與實數ss滿足c2+s2=1c^2+s^2=1,稱

  爲Givens矩陣,記作Tij=Tij(c,s)T_{ij}=T_{ij}(c,s),由Givens矩陣確定的線性變換成爲Givens變換(初等旋轉變換)。
  說明:
  (1).實數c2+s2=1c^2+s^2=1,故存在θ\theta,使c=cosθs=sinθc=cos\theta,s=sin\theta
  (2).y=Tijxy=T_{ij}xTijT_{ij}確定了將向量變成yy的一種變換,正是Givens變換。二階情況下,y=[cosθsinθsinθcosθ]xy=\left[\begin{matrix}cos\theta&sin\theta\\ -sin\theta&cos\theta\end{matrix}\right]x確定的正是平面直角座標系中繞原點的一個旋轉變換(旋轉θ\theta度)。

  2.3.2 性質

  (1) [Tij(c,s)]1=[Tij(c,s)]T=Tij(c,s)[T_{ij}(c,s)]^{-1}=[T_{ij}(c,s)]^{T}=T_{ij}(c,-s)TijT_{ij}爲正交矩陣。det[Tij(c,s)]=1det[T_{ij}(c,s)]=1
  (2) 設x=[a1,a2,,an]T,y=Tijx=[b1,b2,,bn]x=[a_1,a_2,\cdots,a_n]^T,y=T_{ij}x=[b_1,b_2,\cdots,b_n],則有,
{bi=c×ai+s×ajbj=s×ai+c×ajbk=ak,ki,j \begin{cases} b_i = c\times a_i+s\times a_j \\ b_j = -s\times a_i + c \times a_j\\ b_k=a_k,k\neq i,j \end{cases}
  (3) 設x=[a1,a2,,an]T0x=[a_1,a_2,\cdots,a_n]^T\neq 0,則存在有限個Givens矩陣的乘積T,使得Tx=xe1Tx=| x |e_1
  說明:(1).x=x22=xTx| x |=\sqrt{\lVert x \rVert_2^2}=\sqrt{x^Tx}
     (2).e1=[1,0,0,,0]Te_1=[1,0,0,\cdots,0]^T
  推論:對於任何非零列向量xRnx \in R^n及任何單位列向量z(z=1)z(|z|=1),均存在着有限個Givens矩陣的乘積T,使Tx=xzTx=| x |z
  (定理證明請參照參考文獻[2])

  2.3.3 應用Givens旋轉的QR分解

  可以用下面的這幅圖來理解:x是沒有改變的元素,m是改變了的元素。每一次箭頭都進行了一次Givens旋轉。

  詳細推導參見 矩陣QR分解 Givens變換 Household變換
  2.4 總結

  無論是Gram–Schmid正交化、Household變換,還是Givens變換,對矩陣進行QR分解的思路都是對矩陣進行多次線性變換,直至分解成一個正定矩陣與一個上三角矩陣的乘積。不同的方法有不同的優點和缺點。

三、最小二乘法中的QR分解

  已知線性迴歸的係數向量w=(XTX)1XTyw=(X^TX)^{-1}X^Ty,我們爲什麼不直接求解呢?

  3.1 條件數

  計算機在進行運算的時候,有的時候會因爲矩陣自身的特點而產生較大的誤差。一個矩陣的條件數是它在計算機計算中的容易程度,條件數較大的時候矩陣計算就比較容易產生誤差,此時該矩陣被稱爲病態矩陣。
  條件數計算的公式爲:condi(X)=X1Xcondi(X)=\lVert X^{-1}\rVert \lVert X\rVert
  若\lVert\cdot\rVert爲2範數,則condi(X)=σmax(X)σmin(X)condi(X)=\frac{\sigma_{max}(X)}{\sigma_{min}(X)},其中σmax(X)\sigma_{max}(X)σmin(X)\sigma_{min}(X)分別是矩陣XX的極大奇異值和極小奇異值(奇異值參考)。
  若我們使用最小二乘法推導出的公式計算係數向量,我們可以看到XTXX^TX的條件數:
condi(XTX)=condi(VΣTUTUΣVH)=condi(VΣ2VH)=condi(X)2 condi(X^TX)=condi(V\Sigma^TU^TU\Sigma V^H)=condi(V\Sigma ^2V^H)=condi(X)^2   然而通過使用QR分解,我們可以將條件數降到儘量低。

  3.2 最小二乘法與QR分解

  我們首先將訓練集XX分解爲X=QRX=QR,再帶入上面計算係數矩陣的公式中。
w^=(XTX)1XTyXTXw^=XTyRTQTQRw^=RTQTyRTRw^=RTQTyQTQ=IRw^=QTyw^=R1QTy \begin{aligned} \hat w^* &= (X^TX)^{-1}X^Ty \\ X^TX\hat w^* &= X^Ty \\ R^TQ^TQR\hat w^*&= R^TQ^Ty \\ R^TR\hat w^*&= R^TQ^Ty(Q^TQ=I) \\ R\hat w^*&= Q^Ty \\ \hat w^*&= R^{-1}Q^Ty \end{aligned}   我們僅需直到X的QR分解就可以直接計算出ww

四、參考文獻

[1]. 用QR分解求最小二乘法的最優閉式解
[2]. 矩陣QR分解 Givens變換 Household變換
[3]. 矩陣的QR分解
[4]. QR decomposition and Givens Rotation
[4]. QR分解與最小二乘
[5]. QR分解之Household變換
[6]. 矩陣論基礎知識

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