02-04 線性迴歸

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

線性迴歸

線性迴歸是比較經典的線性模型,屬於監督學習中預測值爲連續值的迴歸問題。算法

線性迴歸針對的是一個或多個特徵與連續目標變量之間的關係建模,即線性迴歸分析的主要目標是在連續尺度上預測輸出,而非分類標籤,即預測值爲連續值。網絡

1、線性迴歸學習目標

  1. 線性模型
  2. 一元線性迴歸和多元線性迴歸
  3. 多項式迴歸和對數線性迴歸
  4. 線性迴歸的L1正則化和L2正則化
  5. 線性迴歸流程
  6. 線性迴歸優缺點

2、線性迴歸引入

相信咱們不少人可能都有去售樓處買房而無奈回家的行爲,就算你沒去過售樓處,相信你也應該據說過那使人嘆而驚止的房價吧?對於高房價你沒有想過這房價是怎麼算出來的呢?難道就是房地產商拍拍腦門,北京的一律1000萬,上海的一律800萬,杭州的一律600萬嗎?看到這相信你應該有動力想要學好機器學習走向人生巔峯了。數據結構

其實仔細想一想這房價大有來頭,首先房價不可能只和地區有關,北京有1000萬的房子,又會有800萬、600萬的房子,那這些房價不和地區有關還和什麼有關呢?若是你真的買過房就知道,房子的價格首先和地區是有着比較大的聯繫的,北京五環外的房子可能都高於杭州任何地區的房子,在同一個地區內,房子的價格大多和房子的佔地面積、戶型、採光度等等因素有關係。機器學習

這個時候就有某位聰明的投機者想到了,我是否是能夠找到一個方法來預測房價呢?若是這個房子的房價明顯小於這所房子該有的房價(注:房價可能在某段時間因爲某種鮮爲人知的因素有小幅波動),就把那所買過來了,等房價漲回去了再賣出去,這樣看起來也是生財之道。(注:純屬虛構)ide

但是若是去預測房價呢?上面講到了房價和房子所在地區\(x_1\)、佔地面積\(x_2\)、戶型\(x_3\)和採光度\(x_4\)有關,那麼我是否是能夠把這些因素假想成房子的特徵,而後給這些每一個特徵都加上一個相應的權重\(\omega\),既能夠獲得以下的決策函數
\[ \hat{y} = \omega_1x_1 + \omega_2x_2 + \omega_3x_3 + \omega_4x_4 + b \]
其中\(b\)能夠理解爲誤差,你也能夠想成房子的這些特徵再差也可能會有一個底價。函數

基於上述給出房價的決策函數,咱們就能夠對一個某個不知名的房子輸入它的這些特徵,而後就能夠獲得這所房子的預測價格了。性能

理想老是美好的,即一條生財之道就在眼前,可是咱們如何去獲得這個決策函數呢?咱們能夠獲得這個特徵值,可是這個\(\omega\)怎麼獲得呢?這就是咱們的線性迴歸須要解決的問題,下面讓咱們一塊兒走向這條生財之道吧!學習

3、線性迴歸詳解

3.1 線性模型

給定有\(n\)屬性的樣本\(x=(x_1,x_2,\ldots,x_n)\),其中\(x_i\)\(x\)在第\(i\)個屬性上的取值,線性模型(linear model)則是試圖學得一個經過線性組合預測的函數。該線性組合能夠表示爲
\[ \hat{y} = f(x) = \omega_1x_1 + \omega_2x_2 + \cdots + \omega_nx_n + b \]
線性組合用向量能夠表示爲
\[ \hat{y} = f(x) = \omega^Tx + b \quad \omega=\{\omega_1,\omega_2,\ldots,\omega_n\},x=\{x_1,x_2,\dots,x_n\} \]
若是\(\omega\)\(b\)被肯定以後,模型就能夠肯定。

3.2 一元線性迴歸

3.2.1 一元線性迴歸的目標函數

給定有\(m\)個樣本的數據集\(D=\{(x_1,y_1),(x_2,y_2),\ldots,(x_m,y_m)\}\),假設每一個樣本只有\(1\)個特徵爲\(x_i\)

因爲線性迴歸屬於線性模型的一種,則線性迴歸也能夠經過線性組合的方式學得關於預測值的公式
\[ \hat{y_i} = f(x_i) = \omega{x_{i}} + b \]
如今的問題時如何學得並肯定\(\omega\)\(b\)。顯然,關鍵在於衡量真實值\(y_i\)和預測值\(\hat{y_i}\)之間的差異。一般在迴歸任務中使用均方偏差做爲迴歸模型的性能度量,既能夠獲得線性迴歸的損失函數
\[ L(\omega,b) = (y_i - \hat{y_{i}})^2 \]
經過損失函數則能夠獲得線性迴歸的目標函數
\[ \begin{align} J(\omega,b) & = \sum_{i=1}^m (y_i - \hat{y_{i}})^2 \\ & = \sum_{i=1}^m (y_i - w^Tx_i - b) \end{align} \]

3.2.2 均方偏差最小化——最小二乘法

均方偏差的幾何意義對應了歐氏距離(Euclidean distance),基於均方偏差最小化進行模型求解的方法稱爲最小二乘法(least square method)。在線性迴歸中,最小二乘法試圖找到一條直線,使全部樣本的歐式距離之和最小,即試圖讓均方偏差最小化。

在迴歸問題中對均方偏差最小化的過程稱爲線性迴歸的最小二乘參數估計(parameter estimation),能夠對均方偏差分別對\(\omega\)\(b\)求導得
\[ \begin{align} & {\frac{\partial{L(\omega,b)}}{\partial\omega}} = 2(\omega\sum_{i=1}^m {x_i}^2 - \sum_{i=1}^m (y_i-b)x_i) \\ & {\frac{\partial{L(\omega,b)}}{\partial{b}}} = 2 (mb - \sum_{i=1}^m (y_i - \omega{x_i}) \end{align} \]
利用數學中求極值的思想便可求得\(\omega\)\(b\)的最優解
\[ \omega = {\frac {\sum_{i=1}^m y_i(x_i-\overline{x})} {\sum_{i=1}^m {x_i}^2 - {\frac{1}{m}(\sum_{i=1}^m x_i)^2}} } \]
\[ b = {\frac{1}{m}} \sum_{i=1}^m (y_i - \omega{x_i}) \]
其中\(\overline{x} = {\frac{1}{m}}\sum_{i=1}^m x_i\),即\(x\)的均值

3.3 多元線性迴歸

一元線性迴歸更多的是爲了入門,一般狀況下碰到的問題都是用多元線性迴歸(multivariate linear regression)解決的,即樣本一般都有\(n, \quad n>1\)個特徵。

給定數據集\(D=\{(x_1,y_1),(x_2,y_2),\ldots,(x_m,y_m)\}\),假設每一個樣本有\(n\)個特徵則\(x_i = x_{i1},x_{i2},\ldots,x_{in}\)。由此能夠獲得\(n\)個特徵樣本的預測值和目標函數
\[ \hat{y_i} = f(x_i) = \omega_0x_{i0} + \omega_1x_{i1} + \omega_2x_{i2} + \cdots + \omega_nx_{in} + b = \omega^Tx_i \quad w_0=b,x_{i0}=1 \]
\[ \begin{align} J(\omega) & = \sum_{i=1}^n (y_i - \hat{y_{i}})^2 \\ & = \sum_{i=1}^n (y_i - w^Tx_i) \end{align} \]

3.3.1 均方偏差最小化——最小二乘法

若是對該目標函數直接使用最小二乘法進行估計,計算會很麻煩,所以把特徵和標記都寫成向量的形式並命名爲\(X\)\(Y\)
\[ X = \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1n} & 1 \\ x_{21} & x_{22} & \cdots & x_{2n} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} & 1\\ \end{pmatrix} \]
\[ Y = \begin{pmatrix} y_1 & y_2 & \cdots & y_m \end{pmatrix} \]
經過上述向量的轉換能夠把目標函數轉換成
\[ J(\omega) = {\frac{1}{2}}(X\omega-Y)^T(X\omega-Y) \]
其中\({\frac{1}{2}}\)是爲了方便計算。

同一元線性迴歸,對\(\omega\)求導找到最優的\(\omega\),對\(\omega\)求導得
\[ {\frac {\partial{L(\omega)}} {\partial{\omega}}} = 2X^T(X\omega-Y) \]
獲得目標函數對\(\omega\)求導公式以後,理應求\(2X^T(X\omega-Y)=0\)\(\omega\)的值,可是須要考慮\(X^TX\)是否爲滿秩矩陣。

\(X^TX\)爲滿秩矩陣(full-rank matrix)或正定矩陣(positive definite matrix)時,\(2X^T(X\omega-Y)=0\)可得\(\omega\)
\[ \omega = (X^TX)^{-1}X^TY \]
然而現實生活中\(X^TX\)每每不爲滿秩矩陣,例如生物信息學的基因芯片數據中常有成千萬個屬性,但每每只有幾百個樣例。所以會有多個\(\omega\)都能使得\(2X^T(X\omega-Y)=0\),即這些\(\omega\)都能使得均方偏差最小化,一般狀況下會引入正則化(regularization)項解決該問題。
\(\omega\)加入正則化項則變成
\[ \omega = (X^TX+\lambda{I})^{-1}X^TY \]
因爲加上正則化項\(\lambda{I}\)後,對任意的實數\(\lambda\)\(X^TX+\lambda{I}\)必定爲滿秩矩陣。

3.3.2 均方偏差最小化——牛頓法(TODO)

使用二階的海森矩陣的逆矩陣或僞逆矩陣求解,相比比梯度降低法收斂更快,可是當特徵參數大時,計算量龐大,時間慢。

3.3.3 均方偏差最小化——擬牛頓法(TODO)

牛頓法獲得的\(f''(x)\)是一個半正定矩陣,擬牛頓法則利用一個正定矩陣代替這個半正定矩陣。

3.4 多項式迴歸

前面說到線性模型爲
\[ \hat{y} = f(x) = \omega_1x_1 + \omega_2x_2 + \cdots + \omega_nx_n + b \]
可是若是在這個關係式中不只用到特徵\(x_i\)的一次方,而是增長一個關於\(x_i\)\(n, \quad n\geq2\)次方,那麼模型就變成了多項式迴歸(polynomial regression)。

假設一個正方體的房子的價格與房子的邊長、房子的佔地面積和房子的體積有關係,然而如今只有房子的邊長\(x_1\)一個特徵,若是隻拿特徵去預測房子的價格,則有很大可能會欠擬合,所以須要增長房子的佔地面積和體積這兩個特徵,即
\[ \hat{y} = \omega_1x_1 + \omega_2{x_1}^2 + \omega_3{x_1}^3 + b \]
\(x_1=x_1,x_2={x_1}^2,x_3={x_1}^3\),則多項式的線性模型變成
\[ \hat{y} = \omega_1x_1 + \omega_2x_2 + \omega_3x_3 + b \]
經過上述轉換多項式的線性模型變成了一個多(三)元線性迴歸的問題,可使用線性迴歸的方法來完成算法。而且對於每一個邊長這個特徵\((x_1)\)獲得一個三元樣本特徵\((x_1,{x_1}^2,{x_1}^3)\)。須要注意的是對於多維度特徵時,使用多項式迴歸會使得特徵之間的關聯度增長,例如這三個特徵\((x_1,{x_1}^2,{x_1}^3)\)是有很高的相關性的。

拿上一個例子假設,若是房子的邊長爲\(10\),則房子的佔地面積爲\(100\),房子的體積爲\(1000\),這三個特徵有了數量級的差距,因此在使用多項式迴歸的時候須要注意對特徵進行特徵統一尺度處理。

工業上可能並不像房子的面積、房子的體積同樣有明確的目標加上\(2次方\)或者\(3次方\),而多是加上\(2次方\)或者\(5次方\)模型就能變得更好,可是並不知道\(2次方\)\(5次方\)表示什麼意思,進而會致使模型的解釋能力變差。

3.5 對數線性迴歸

假設如今獲得了一個線性迴歸模型\(\hat{y}=\omega^Tx+b\),可是該線性模型沒法知足輸出\(\hat{y}\)與輸入\(x\)的線性關係,可是\(\ln\hat{y}\)\(x\)知足線性關係,則能夠將輸出標記的對數做爲線性模型逼近的目標,即模型函數以下
\[ \ln\hat{y} = \omega^Tx+b \]
這就是對數線性迴歸(log-linear regression),它其實是在視圖讓\(e^{\omega^T+b}\)逼近\(\hat{y}\),可是仍然可使用線性迴歸的算法去處理該問題。

假設函數\(g(·)\)是單調可微的函數,則通常化的廣義線性模型(generalized linear model)能夠表示爲
\[ \hat{y} = g^{-1}(\omega^Tx+b) \quad \text{或者} \quad g(\hat{y}) = \omega^Tx+b \]
其中\(g(·)\)稱爲聯繫函數(link function),而且對數線性迴歸是廣義線性模型在\(g(·)=ln(·)\)時的特例。

3.6 局部加權線性迴歸

線性迴歸的一個大問題就是容易欠擬合,上次講到的多項式迴歸屬於解決欠擬合的方法之一,可是它也增長了數據的維度,若是數據自己有不少維度,則不適合使用多項式迴歸。

局部加權線性迴歸(locally weighted linear regression)也能夠解決數據欠擬合的問題,它主要是在估計中引入一些誤差,從而下降預測的均方偏差,它的目標函數爲
\[ \begin{align} J(\omega) & = \sum_{i=1}^m w_i (y_i - \hat{y_i})^2 \\ & = (X\omega - Y)^TW(X\omega-Y) \end{align} \]
其中\(w_i\)\(W\)都是對角矩陣,用來給每一個數據點賦予權重。

目標函數對\(\omega\)求導得
\[ {\frac{\partial{J(\omega)}}{\partial{\omega}}} = X^TWX\omega-X^TWY \]
局部加權線性迴歸給預測點附近的每一個點賦予必定的權重,而後與線性迴歸相似,在這個被賦予權重的樣本的子集上基於最小均方偏差來進行普通的迴歸,即\(X^TWX\omega-X^TWY=0\)時能夠獲得最優的\(\omega\)
\[ \omega = (X^TWX)^{-1}X^TWY \]
其中局部加權線性迴歸與支持向量機相似,使用核函數給離預測點越近的點賦予更高的權重;離預測點越遠的點賦予更低的權重。核的類型通常能夠自由選擇,通常狀況下使用高斯核,高斯覈對應的權重以下
\[ W(i,i) = exp({\frac{|x^{(i)}-x|}{-2k^2}}) \]
其中\(k\)至關於學習率,它決定了對附近的點賦予多大的權重。

經過高斯核便可構造一個只含對角元素的矩陣\(W\),而且點\(x\)\(x_i\)越近,則\(|x^{(i)}-x|\)越接近1,\(W(i,i)\)將會越趨近於\(1\);若是點\(x\)\(x_i\)越遠,則\(|x^{(i)}-x|\)越接近0,\(W(i,i)\)將會越趨近於\(0\),即離預測點越接近的點權重越高,離預測點越遠的點權重越低,這也是局部加權線性迴歸只關注附近點的緣由。

局部加權線性迴歸雖然解決了欠擬合的問題,可是因爲每一個預測點都要進行一次線性迴歸的運算,所以樣本數越多則該方法的計算量將越大。相比較普通的線性迴歸,普通的線性迴歸屬於參數模型,而局部加權線性迴歸屬於非參數模型,每次增長新數據的時候都須要基於樣本從新計算\(\omega\)

3.7 正則化

在過擬合問題的時候說到過,爲了解決過擬合問題時,能夠在創建模型的時候加上正則化項。對於線性模型,通常有L1正則化、L2正則化和彈性網絡等。

3.7.1 L1正則化

線性迴歸的L1正則化一般稱爲Lasso迴歸,它和普通的線性迴歸的區別是它在目標函數上增長了一個L1正則化項,L1正則化項有一個正則化參數\(\lambda\)調節目標函數的均方偏差項和正則化項的權重,Lasso迴歸的目標函數表達式爲
\[ J(\omega) = {\frac{1}{2}} (X\omega-Y)^T (X\omega-Y) + \lambda\sum_{i=1}^m||\omega||_1 \]
其中\({\frac{1}{2}}\)只是爲了方便計算,\(m\)是樣本數量,\(||\omega||_1\)爲L1範數。

因爲目標函數中的L1範數用的是絕對值之和,致使目標函數中有不可導的點,即沒法使用最小二乘法、梯度降低法、牛頓法求解使得均方偏差最小化的\(\omega\),所以可使用全新的方法求解最優\(\omega\),即座標軸降低法(coordinate descent)和最小角迴歸法(least angle regression)

若是你對Lasso迴歸的求解過程熟悉了,會發現Lasso迴歸可使得一些特徵的\(\omega\)變小,甚至還能使得一些絕對值較小的\(\omega\)直接變成\(0\),進而使得數據的特徵變得稀疏,加強模型的泛化能力。

3.7.2 L2正則化

線性迴歸的L2正則化一般稱爲Ridge迴歸,也稱爲嶺迴歸。它和普通的線性迴歸的區別是它在目標函數上增長了一個L2正則化項,而Ridge迴歸與Lasso迴歸的區別在於Lasso迴歸的正則化項是L1範數,而Ridge迴歸的正則化項是L2範數,Ridge迴歸的目標函數表達式爲
\[ J(\omega) = {\frac{1}{2}} (X\omega-Y)^T (X\omega-Y) + {\frac{1}{2}}\lambda\sum_{i=1}^m||\omega||_2 \]
其中\({\frac{1}{2}}\)只是爲了方便計算,\(m\)是樣本數量,\(||\omega||_2\)爲L2範數。

Ridge迴歸通常使用最小二乘法的矩陣推導形式,和普通的線性迴歸相似,首先對\(\omega\)求導得
\[ {\frac{\partial{J(\omega)}}{\partial{\omega}}} = X^T(X\omega-Y)+\lambda\omega \]
\(X^T(X\omega-Y)+\lambda\omega=0\)便可獲得\(\omega\)
\[ \omega = (X^TX+\lambda{E})^{-1}X^TY \]
其中\(E\)爲單位矩陣。

3.7.3 彈性網絡

彈性網絡(elastic net)是對Ridge迴歸和Lasso迴歸的折中處理,經過混合比\(\gamma\)進行控制,即它的目標函數爲
\[ J(\omega) = {\frac{1}{2}} (X\omega-Y)^T (X\omega-Y) + \gamma\lambda\sum_{i=1}^m||\omega||_1 +{\frac{1-\gamma}{2}}\lambda\sum_{i=1}^m||\omega||_2 \]
其中\(\gamma\)\(\lambda\)都是超參數,當\(\gamma=1\)的時候彈性網絡爲Ridge迴歸;當\(\gamma=0\)的時候彈性網絡爲Lasso迴歸,至於混合比\(\gamma\)值具體狀況具體分析。

4、線性迴歸流程

4.1 輸入

\(m\)個實例\(n\)維特徵的數據集
\[ T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} \]
其中\(x_i\)是實例的特徵向量即\(({x_i}^{(1)},{x_i}^{(2)},\cdots,{x_i}^{(n)})\)

4.2 輸出

\(\omega\)和線性迴歸模型\(f(x)=\omega^Tx\)

4.3 流程

  1. 選取初值\(\omega=0\)
  2. 訓練集中選取數據\((x_i,y_i)\),對\(\omega\)使用梯度降低更新
    \[ \omega = \omega - \alpha(y_i-h(\omega^Tx)){x_i}^{(j)} \]
  3. 重複步驟2,直至\(\omega\)收斂中止更新
  4. 獲得最小化的目標函數\(J(\omega)\),同時能夠獲得最優的\(\omega^*\),線性迴歸模型爲\(f(x)={w^*}^Tx\)

5、線性迴歸優缺點

5.1 優勢

  1. 創建了多特徵與標記間的線性因果關係便於分析
  2. 能夠獲得每一個特徵值的權重,有很好的解釋型

5.2 缺點

  1. 普通的線性迴歸沒法處理敏感值問題
  2. 沒法處理分類問題

6、小結

線性迴歸能夠說是咱們學的第一個工業上還在使用的算法,對於連續值的測量線性迴歸的表現仍是挺不錯的。但一般狀況下仍是須要多多嘗試線性迴歸的變種,即對數線性迴歸、正則化線性迴歸,使用它們可以更精準的預測數據,解決過擬合問題,也能夠必定的程度讓線性迴歸擬合非線性數據。

下一篇將會給你們介紹另一種分類方法,該方法在某些方面繼承了線性迴歸的思想,可是實質上二者徹底不可相提並論,由於線性迴歸屬於監督學習的迴歸問題,而下一篇所要介紹的是分類問題,即Logistic(邏輯)迴歸。

相關文章
相關標籤/搜索