線性模型(01)線性迴歸

摘要:首先機器學習中最常用也是最重要的內容就是線性模型了,這裏先搞清楚幾個關係,線性模型在有些資料中會被寫爲迴歸,這是因爲線性模型中的幾類常用模型的名字都叫做xx迴歸,但線性模型並不是只用在迴歸當中,在二分類和多分類問題上也常常使用。

Data:(x,y),y是連續的(比如身高)就是迴歸;y是離散的就是分類

迴歸這個詞來自高爾頓(達爾文的表弟),他在研究父輩和子輩身高的關係時發現,高父親的孩子不一定特別高,矮父親的孩子不至於太矮,就這樣發現了大自然中有一隻無形的手,讓人的身高迴歸到一個值,這也就是迴歸這個詞的由來。

目錄

線性迴歸

爲什麼是最小二乘--用極大似然估計解釋最小二乘

求解參數的過程和最小二乘意義下的參數最優解

加入擾動項

正則項與防止過擬合

L1-norm處理梯度的方式

梯度下降算法(Gradient Descent)

梯度下降算法的種類

Coefficient of Determination

局部加權線性迴歸


線性迴歸

y=ax+b  

這應該是最簡單的線性迴歸方程了,中學數學中涉及到通過最小二乘法來求這樣的一元線性迴歸方程(圖1左)。這個過程其實就是一個選擇模型(線性迴歸模型),訓練得出學習器(求參a和b)的過程。 那麼考慮兩個變量的變量的時候,同樣如此,方程的形式可以寫做

 h_{\theta }\left ( x \right )= \theta _{0} +\theta _{1}x_{1}+\theta _{2}x_{2}(圖2右)

爲了讓這個方程更容易適用到更多變量去,我們將常數\theta _{0}的係數寫作x_{0},且x_{0}\equiv 1,二元線性迴歸方程就可以寫成

h_{\theta }\left ( x \right )= \theta _{0} x_{0}+\theta _{1}x_{1}+\theta _{2}x_{2}

這樣的話就可以說線性迴歸模型的通式子既可以寫做

h_{\theta }\left ( x \right )=\sum_{i=0}^{n}\theta _{i}x_{i}=\theta^{T}x

圖1

對於線性迴歸求解參數值的方式,需要用到最小二乘法,另外就是經典的梯度下降法。

爲什麼是最小二乘--用極大似然估計解釋最小二乘

前文中提到,線性迴歸模型的通式

h_{\theta }\left ( x \right )=\sum_{i=0}^{n}\theta _{i}x_{i}=\theta^{T}x

h_{\theta }\left ( x \right )爲模型所得到的估計值,假設實際的函數值爲y,那麼可以將其寫做

y^{(i)}=\theta^{T}x^{(i)}+\epsilon ^{(i)}

其中\epsilon ^{\left ( i \right )}是預測值和函數值的誤差,這個誤差\epsilon ^{\left ( i \right )}\left ( 1\leqslant i\leqslant m \right )是獨立同分布的,根據中心極限定理,其服從均值爲0,方差爲某定值\sigma ^{2}高斯分佈。即,\sigma ^{\left ( i \right )}~N(0,\sigma ^{2})

故誤差的概率密度函數爲

p(\epsilon ^{2})=\frac{1}{\sqrt{2\pi }\sigma }e^{-{\frac{(\epsilon ^{(i)})^{2}}{2\sigma ^{2}}}}

p(y^{(i)}|x^{(i)};\theta )=\frac{1}{\sqrt{2\pi }\sigma }e^{-{\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}}}}

那麼\theta的似然函數就是

L(\theta )=\prod_{i=1}^{m} p(y^{(i)}|x^{(i)};\theta )=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }e^{-{\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}}}}

到這裏,其實要做的就是求出能使似然值最大的\theta的值,將上式取對數,得到高斯的對數似然,之後就能看到爲何使用最小二乘法可以作爲求解線性迴歸的理由了。

取對數似然爲

\iota (\theta) = logL(\theta)=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }e^{-{\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}}}}

利用對數的計算性質,則

\iota (\theta)=\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi }\sigma }e^{-{\frac{(y^{(i)}-\theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}}}}=mlog\frac{1}{\sqrt{2\pi }\sigma }-\frac{1}{\sigma ^{2}}\cdot \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}

從這個看起來很複雜的式子中可以得到損失函數,既然要讓似然值最大,那麼對數似然值也就最大,那麼式子中的決定因素就是

\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2},其他的值都爲常量,所以只要保證這個式子最小,也就能得到\theta取何值可以讓似然最大,故損失函數(目標函數)爲

J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}

至此,也就解釋了爲何用最小二乘法去訓練線性迴歸了。但是,這樣固然是一個不錯的解釋,但是有一個非常重要的前提,那就是誤差值服從正態分佈。

求解參數\theta的過程和最小二乘意義下的參數最優解

上節用最大似然估計對爲什麼是最小二乘法做出了一些解釋,既然得到了目標函數,那麼就可以利用其求出我們所需要的參數\theta了。求解過程:

  • 將M個N維樣本組成矩陣X,其中每一行對應着一個樣本,每一列對應着樣本的一個維度,還有額外的一維爲常數項。

  • 目標函數是,換另一種寫法寫做

J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}=\frac{1}{2}(X\theta-y)^{T}(X\theta-y)

  • 對上式子\theta求偏導

\bigtriangledown _{\theta }J(\theta)=\bigtriangledown _{\theta }(\frac{1}{2}(X\theta-y)^{T}(X\theta-y))=\bigtriangledown _{\theta }(\frac{1}{2}(\theta^{T}X^{T}-y^{T})(X\theta-y))

=\bigtriangledown _{\theta }(\frac{1}{2}(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}y-y^{T}X\theta+y^{T}y))

=\frac{1}{2}(2X^{T}X\theta-X^{T}y-(y^TX)^T)=X^TX\theta-X^Ty

  • X^TX\theta-X^Ty=0求駐點
  • 得到\theta的解析式

\theta = (X^TX)^{-1}X^Ty

  • 如果X^TX不可逆或爲了防止過擬合,可以增加\lambda擾動或者正則項

加入擾動項

\theta=(X^TX+\lambda I)^{-1}X^Ty

正則項與防止過擬合

假設\lambda>0 ; \rho \in [0,1]

L2-norm(Ridge迴歸):J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}+\lambda\sum_{i=1}^{m}\theta_{j}^{2}

L1-norm(Lasso迴歸): J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}+\lambda\sum_{i=1}^{m}\left |\theta_j \right |

Elastic Net: J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}+\lambda(\rho \cdot \sum_{i=1}^{m}\left |\theta_j \right |+(1-\rho )\cdot \sum_{i=1}^{m}\theta_{j}^{2})

擴展內容Ridge & LASSO & Elastic Net

L1-norm處理梯度的方式

(待補充)

梯度下降算法(Gradient Descent)

損失函數

J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^{2}

梯度下降步驟:

  • 任意初始化變量\theta
  • 沿着負梯度方向進行迭代操作,更新\theta,得到比之前更小的損失函數值J(\theta)

\theta = \theta- \alpha \cdot \frac{\partial }{\partial \theta}J(\theta)

其中\alpha是學習率、步長

關於這個負梯度方向是這樣定義的:

\frac{\partial}{\partial \theta_j}J(\theta)=\frac{\partial}{\theta_j}\frac{1}{2}(h_\theta(x)-y)^2=(h_\theta(x)-y)\cdot \frac{\partial}{\partial\theta_j}(h_\theta(x)-y)

其中h_{\theta }\left ( x \right )=\sum_{i=0}^{n}\theta _{i}x_{i},故

\frac{\partial}{\partial \theta_j}J(\theta)=(h_\theta(x)-y)\cdot \frac{\partial}{\partial\theta_j}(\sum_{i=0}^{n}\theta _{i}x_{i}-y)=(h_\theta(x)-y)\cdot x_j

梯度下降算法的種類

主要分爲三類:批量梯度下降算法(batch)、隨機梯度下降算法(stochastic)、折中mini-batch梯度下降算法。

批量梯度算法

Repeat\ until\ convergence\{\\\qquad\theta_j:=\theta_j+\alpha \sum_{i=1}^{m}(y^{(i)}-h_\theta(x^{(i)}))x_{j}^{(i)}\\\}

隨機梯度下降算法

Loop\{\\ for\ i=1\ to\ m,\{\\\theta_j:=\theta_j+\alpha (y^{(i)}-h_\theta(x^{(i)}))x_{j}^{(i)}\\\}\\\}

折中mini-batch梯度下降算法

就是將以上兩者結合,如果不是每拿到一個樣本即更改梯度,而是若干個樣本的平均梯度作爲更新方向,這就是mini-batch梯度下降算法。

Coefficient of Determination

概念解釋:決定係數(coefficient of determination),有的教材上翻譯爲判定係數,也稱爲擬合優度。表示可根據自變量的變異來解釋因變量的變異部分。如某學生在某智力量表上所得的 IQ 分與其學業成績的相關係數 r=0.66,則決定係數 R^2=0.4356,即該生學業成績約有 44%可由該智力量表所測的智力部分來說明或決定。

對於m個樣本(\vec{x_1},y_1),(\vec{x_2},y_2),......,(\vec{x_m},y_m),某模型的估計值爲(\vec{x_1},\hat{y_1}),(\vec{x_2},\hat{y_2}),...,(\vec{x_m},\hat{y_m})

  • 計算樣本的總平方和TSS(Total Sum of Squares):

 TSS=\sum_{i=1}^{m}(y_i-\bar{y})^2

  • 計算殘差平方和RSS(Residual Sum of Squares),也稱做誤差平方和SSE(Sum of Squares for Error):

RSS=\sum_{i=1}^{m}(\hat{y_i}-y_i)^2

定義R^2=1-\frac{RSS}{TSS}​​​​​​,R^2越大,擬合效果越好;R^2的最優值爲1;若模型預測爲隨機值,R^2有可能爲負值;若預測值恆爲樣本期望,R^2爲0.

  • 也可以定義ESS(Explained Sum of Squares),也稱作迴歸平方和SSR(Sum of Squares for Regression)

ESS=\sum_{i=1}^{m}(\hat{y_i}-\bar{y})^2

  • 在無偏估計時有TSS=ESS+RSS,否則TSS\geq ESS+RSS

局部加權線性迴歸

(待補充)

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