線性迴歸 linear regression 原理及推導

概述

  • 優點:容易計算,易於理解和實現
  • 缺點:容易欠擬合
  • 適用數據類型:數值型和標稱型

口頭描述

線性迴歸試圖構造一個線性函數,去擬合儘可能多的樣本點。重點是如何確定線性函數的參數,使得該函數儘量穿過樣本點,一般使用均方誤差最小化來作爲參數擬合效果的標準。

算法推導(解方程的方法)

  • 給定訓練數據集D={(xi,yi)}i=1mD=\{(x_i,y_i)\}_{i=1}^m,樣本xix_idd個屬性描述,線性模型爲:
    fω(x)=ωTx+b  ,  f(x)y f_\omega(x)=\omega^Tx+b \; ,\;f(x) \backsimeq y
  • 使用均方誤差衡量f(x)f(x)yy之間的差別,我們的目標是使他們的差別最小化。
    Es(square  loss)=i=1m(f(xi)yi)2 E_s(square \; loss)=\sum_{i=1}^{m}(f(x_i)-y_i)^2
  • 使用矩陣進行表達
    • 參數向量矩陣:
      ω^=(ω;b)=[ω1ω2...ωdb] \hat{\omega}=(\omega ;b)= \begin{bmatrix} \omega_1 \\ \omega_2\\ ... \\ \omega_d \\ b \end{bmatrix}
      注意: ω^\hat{\omega}d+1d+111列的
    • 數據集矩陣:
      X=[x11x12x1d1x21x22...x2d1xm1xm2xmd1]=[x1T1x2T1xmT1] X=\begin{bmatrix} x_{11}&x_{12}&\dots&x_{1d}&1 \\ x_{21}&x_{22}&...&x_{2d}&1 \\ \vdots&\vdots&\ddots& \vdots&\vdots\\ x_{m1}&x_{m2}& \dots&x_{md}&1 \end{bmatrix} =\begin{bmatrix} x_1^T&1 \\ x_2^T&1 \\ \vdots&\vdots \\ x_m^T&1 \end{bmatrix}
      注意:最後一列全是1,前d個元素對應樣本的d個屬性值
    • 標記矩陣:
      y=[y1y2ym] y=\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix}
  • 則均方誤差爲:
    Es=(yXω^)T(yXω^) E_s=(y-X\hat{\omega})^T(y-X\hat{\omega})
  • Eω^=(yXω^)T(yXω^)E_{\hat{\omega}}= (y-X\hat{\omega})^T(y-X\hat{\omega}),對ω^\hat{\omega}求導得:
    Eω^ω^=2XT(Xω^y) \frac{\partial E_{\hat{\omega}}}{\partial \hat{\omega}}=2X^T(X\hat{\omega}-y)
    令上式爲零可得ω^\hat{\omega}的最優解的閉式解
    ω^=(XTX)1XTy \hat{\omega}^*=(X^TX)^{-1}X^Ty
    解出上式,也就得到了模型的公式:
    f(xi^)=xi^T(XTX)1XTy f(\hat{x_i})=\hat{x_i}^T(X^TX)^{-1}X^Ty
    其中,
    xi^=[xi1xi2xid1] \hat{x_i}= \begin{bmatrix} x_{i1}\\ x_{i2}\\ \vdots \\ x_{id} \\ 1 \end{bmatrix}

算法推導(梯度下降)

目標是使均方誤差最小化,即:
min  E(square  loss)=12mi=1m(fω^(xi)yi)2 min \;E(square \; loss)=\frac{1}{2m}\sum_{i=1}^{m}(f_{\hat{\omega}}(x_i)-y_i)^2
這裏的12m\frac{1}{2m}是爲了方便求偏導

對誤差函數做偏導,對於每個特徵(ωn\omega ^n),其梯度(偏導)爲:
Eωn=1mi=1m(fω^(xi)yi)xin \frac{\partial E}{\partial \omega^n}=\frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i
這裏是對每一個特徵進行了求導,因爲
fω^(xi)=ω0xi0+ω1xi1++ωnxin      (xi:the  ith  data) f_{\hat{\omega}}(x_i)=\omega ^0x^0_i +\omega^1x^1_i+\dots+\omega^nx^n_i\;\;\;(x_i:the \; i^{th} \; data)
則梯度下降的流程就是:

重複此過程直到收斂 {

ω0:=ω0α1mi=1m(fω^(xi)yi)xi0 \omega^0:=\omega^0-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^0_i
ω1:=ω1α1mi=1m(fω^(xi)yi)xi1 \omega^1:=\omega^1-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^1_i
\vdots
ωn:=ωnα1mi=1m(fω^(xi)yi)xin \omega^n:=\omega^n-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i
}

解釋一下,i=1m(fω^(xi)yi)\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)的意思是計算每個預測值與實際值的差別的總和。另外,對每個ωi\omega^i進行更新都是獨立的,應當把所有的ωi\omega^i全部計算出來後再對其進行賦值更新。

XTXX^TX的要求

當矩陣XTXX^TX是滿秩矩陣的時候,上述最優解成立,但是很多情況下XTXX^TX往往不是滿秩矩陣,此時可以解出ω^\hat{\omega},他們都能使均方誤差最小化,選擇哪一個作爲輸出,將由學習算法的歸納偏好決定,常見的做法是引入正則化項。

對數線性迴歸

我們希望迴歸模型去逼近ln  yln\;y不是yy時,模型變爲
ln  y=ωTx+b ln\; y=\omega^Tx+b
這就是對數線性迴歸

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