機器學習 線性迴歸

線性迴歸原理小結

    線性迴歸可以說是機器學習中最基本的問題類型了,這裏就對線性迴歸的原理和算法做一個小結。

1. 線性迴歸的模型函數和損失函數

    線性迴歸遇到的問題一般是這樣的。我們有m個樣本,每個樣本對應於n維特徵和一個結果輸出,如下:

    (x(0)1,x(0)2,...x(0)n,y0),(x(1)1,x(1)2,...x(1)n,y1),...(x(m)1,x(m)2,...x(m)n,ym)(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym)

    我們的問題是,對於一個新的(x(x)1,x(x)2,...x(x)n(x1(x),x2(x),...xn(x), 他所對應的yxyx是多少呢? 如果這個問題裏面的y是連續的,則是一個迴歸問題,否則是一個分類問題。

    對於n維特徵的樣本數據,如果我們決定使用線性迴歸,那麼對應的模型是這樣的:

    hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxnhθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 其中θiθi (i = 0,1,2... n)爲模型參數,xixi (i = 0,1,2... n)爲每個樣本的n個特徵值。這個表示可以簡化,我們增加一個特徵x0=1x0=1 ,這樣hθ(x0,x1,...xn)=∑i=0nθixihθ(x0,x1,...xn)=∑i=0nθixi。

    進一步用矩陣形式表達更加簡潔如下:

    hθ(X)=Xθhθ(X)=Xθ

    其中, 假設函數hθ(X)hθ(X)爲mx1的向量,θθ爲nx1的向量,裏面有n個代數法的模型參數。XX爲mxn維的矩陣。m代表樣本的個數,n代表樣本的特徵數。

    得到了模型,我們需要求出需要的損失函數,一般線性迴歸我們用均方誤差作爲損失函數。損失函數的代數法表示如下:

    J(θ0,θ1...,θn)=∑i=0m(hθ(x0,x1,...xn)−yi)2J(θ0,θ1...,θn)=∑i=0m(hθ(x0,x1,...xn)−yi)2

    進一步用矩陣形式表達損失函數:

    J(θ)=12(Xθ−Y)T(Xθ−Y)J(θ)=12(Xθ−Y)T(Xθ−Y)

    由於矩陣法表達比較的簡潔,後面我們將統一採用矩陣方式表達模型函數和損失函數。

2. 線性迴歸的算法

    對於線性迴歸的損失函數J(θ)=12(Xθ−Y)T(Xθ−Y)J(θ)=12(Xθ−Y)T(Xθ−Y),我們常用的有兩種方法來求損失函數最小化時候的θθ參數:一種是梯度下降法,一種是最小二乘法。由於已經在其它篇中單獨介紹了梯度下降法和最小二乘法,可以點鏈接到對應的文章鏈接去閱讀。

    如果採用梯度下降法,則θθ的迭代公式是這樣的:

    θ=θ−αXT(Xθ−Y)θ=θ−αXT(Xθ−Y)

    通過若干次迭代後,我們可以得到最終的θθ的結果

    如果採用最小二乘法,則θθ的結果公式如下:

    θ=(XTX)−1XTYθ=(XTX)−1XTY

 

    當然線性迴歸,還有其他的常用算法,比如牛頓法和擬牛頓法,這裏不詳細描述。

3. 線性迴歸的推廣:多項式迴歸

    回到我們開始的線性模型,hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxnhθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 如果這裏不僅僅是x的一次方,比如增加二次方,那麼模型就變成了多項式迴歸。這裏寫一個只有兩個特徵的p次方多項式迴歸的模型:

    hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x21+θ4x22+θ5x1x2hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x12+θ4x22+θ5x1x2

    我們令x0=1,x1=x1,x2=x2,x3=x21,x4=x22,x5=x1x2x0=1,x1=x1,x2=x2,x3=x12,x4=x22,x5=x1x2 ,這樣我們就得到了下式:

    hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x3+θ4x4+θ5x5hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x3+θ4x4+θ5x5

    可以發現,我們又重新回到了線性迴歸,這是一個五元線性迴歸,可以用線性迴歸的方法來完成算法。對於每個二元樣本特徵(x1,x2)(x1,x2),我們得到一個五元樣本特徵(1,x1,x2,x21,x22,x1x2)(1,x1,x2,x12,x22,x1x2),通過這個改進的五元樣本特徵,我們重新把不是線性迴歸的函數變回線性迴歸。

4. 線性迴歸的推廣:廣義線性迴歸

    在上一節的線性迴歸的推廣中,我們對樣本特徵端做了推廣,這裏我們對於特徵y做推廣。比如我們的輸出YY不滿足和XX的線性關係,但是lnYlnY 和XX滿足線性關係,模型函數如下:

    lnY=XθlnY=Xθ

    這樣對與每個樣本的輸入y,我們用 lny去對應, 從而仍然可以用線性迴歸的算法去處理這個問題。我們把 Iny一般化,假設這個函數是單調可微函數g(.)g(.),則一般化的廣義線性迴歸形式是:

    g(Y)=Xθg(Y)=Xθ 或者 Y=g−1(Xθ)Y=g−1(Xθ) 

    這個函數g(.)g(.)我們通常稱爲聯繫函數。

5. 線性迴歸的正則化

    爲了防止模型的過擬合,我們在建立線性模型的時候經常需要加入正則化項。一般有L1正則化和L2正則化。

 

    線性迴歸的L1正則化通常稱爲Lasso迴歸,它和一般線性迴歸的區別是在損失函數上增加了一個L1正則化的項,L1正則化的項有一個常數係數αα來調節損失函數的均方差項和正則化項的權重,具體Lasso迴歸的損失函數表達式如下:  

    J(θ)=12(Xθ−Y)T(Xθ−Y)+α||θ||1J(θ)=12(Xθ−Y)T(Xθ−Y)+α||θ||1

    其中n爲樣本個數,αα爲常數係數,需要進行調優。||θ||1||θ||1爲L1範數。

     Lasso迴歸可以使得一些特徵的係數變小,甚至還是一些絕對值較小的係數直接變爲0。增強模型的泛化能力。

     Lasso迴歸的求解辦法一般有座標軸下降法(coordinate descent)和最小角迴歸法( Least Angle Regression),由於它們比較複雜,在我的這篇文章單獨講述: 線程迴歸的正則化-Lasso迴歸小結

 

    線性迴歸的L2正則化通常稱爲Ridge迴歸,它和一般線性迴歸的區別是在損失函數上增加了一個L2正則化的項,和Lasso迴歸的區別是Ridge迴歸的正則化項是L2範數,而Lasso迴歸的正則化項是L1範數。具體Ridge迴歸的損失函數表達式如下:

    J(θ)=12(Xθ−Y)T(Xθ−Y)+12α||θ||22J(θ)=12(Xθ−Y)T(Xθ−Y)+12α||θ||22

    其中αα爲常數係數,需要進行調優。||θ||2||θ||2爲L2範數。

    Ridge迴歸在不拋棄任何一個特徵的情況下,縮小了迴歸係數,使得模型相對而言比較的穩定,但和Lasso迴歸比,這會使得模型的特徵留的特別多,模型解釋性差。

      Ridge迴歸的求解比較簡單,一般用最小二乘法。這裏給出用最小二乘法的矩陣推導形式,和普通線性迴歸類似。

    令J(θ)J(θ)的導數爲0,得到下式:

    XT(Xθ−Y)+αθ=0XT(Xθ−Y)+αθ=0

    整理即可得到最後的θθ的結果:

    θ=(XTX+αE)−1XTYθ=(XTX+αE)−1XTY

     其中E爲單位矩陣。

 

    除了上面這兩種常見的線性迴歸正則化,還有一些其他的線性迴歸正則化算法,區別主要就在於正則化項的不同,和損失函數的優化方式不同,這裏就不累述了。

 

轉載:https://www.cnblogs.com/pinard/p/6004041.html

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