線性回歸原理小結


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

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

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

    \((x_1^{(0)}, x_2^{(0)}, ...x_n^{(0)}, y_0), (x_1^{(1)}, x_2^{(1)}, ...x_n^{(1)},y_1), ... (x_1^{(m)}, x_2^{(m)}, ...x_n^{(m)}, y_m)\)

    我們的問題是,對於一個新的\((x_1^{(x)}, x_2^{(x)}, ...x_n^{(x)} \), 他所對應的\(y_x\)是多少呢? 如果這個問題里面的y是連續的,則是一個回歸問題,否則是一個分類問題。

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

    \(h_\theta(x_1, x_2, ...x_n) = \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n}\), 其中\(\theta_i \) (i = 0,1,2... n)為模型參數,\(x_i \) (i = 0,1,2... n)為每個樣本的n個特征值。這個表示可以簡化,我們增加一個特征\(x_0 = 1 \) ,這樣\(h_\theta(x_0, x_1, ...x_n) = \sum\limits_{i=0}^{n}\theta_{i}x_{i}\)。

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

    \(h_\mathbf{\theta}(\mathbf{X}) = \mathbf{X\theta}\)

    其中, 假設函數\(h_\mathbf{\theta}(\mathbf{X})\)為mx1的向量,\(\mathbf{\theta}\)為nx1的向量,里面有n個代數法的模型參數。\(\mathbf{X}\)為mxn維的矩陣。m代表樣本的個數,n代表樣本的特征數。

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

    \(J(\theta_0, \theta_1..., \theta_n) = \sum\limits_{i=1}^{m}(h_\theta(x_0^{(i)}, x_1^{(i)}, ...x_n^{(i)}) - y_i)^2\)

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

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y})\)

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

2. 線性回歸的算法

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

    如果采用梯度下降法,則\(\mathbf{\theta}\)的迭代公式是這樣的:

    \(\mathbf\theta= \mathbf\theta - \alpha\mathbf{X}^T(\mathbf{X\theta} - \mathbf{Y})\)

    通過若干次迭代后,我們可以得到最終的\(\mathbf{\theta}\)的結果

    如果采用最小二乘法,則\(\mathbf{\theta}\)的結果公式如下:

    \( \mathbf{\theta} = (\mathbf{X^{T}X})^{-1}\mathbf{X^{T}Y} \)

 

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

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

    回到我們開始的線性模型,\(h_\theta(x_1, x_2, ...x_n) = \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n}\), 如果這里不僅僅是x的一次方,比如增加二次方,那么模型就變成了多項式回歸。這里寫一個只有兩個特征的p次方多項式回歸的模型:

    \(h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_1^{2} + \theta_{4}x_2^{2} + \theta_{5}x_{1}x_2\)

    我們令\(x_0 = 1, x_1 = x_1, x_2 = x_2, x_3 =x_1^{2}, x_4 = x_2^{2}, x_5 =  x_{1}x_2\) ,這樣我們就得到了下式:

    \(h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_3 + \theta_{4}x_4 + \theta_{5}x_5\)

    可以發現,我們又重新回到了線性回歸,這是一個五元線性回歸,可以用線性回歸的方法來完成算法。對於每個二元樣本特征\((x_1,x_2)\),我們得到一個五元樣本特征\((1, x_1, x_2, x_{1}^2, x_{2}^2, x_{1}x_2)\),通過這個改進的五元樣本特征,我們重新把不是線性回歸的函數變回線性回歸。

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

    在上一節的線性回歸的推廣中,我們對樣本特征端做了推廣,這里我們對於特征y做推廣。比如我們的輸出\(\mathbf{Y}\)不滿足和\(\mathbf{X}\)的線性關系,但是\(ln\mathbf{Y}\) 和\(\mathbf{X}\)滿足線性關系,模型函數如下:

    \(ln\mathbf{Y} = \mathbf{X\theta}\)

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

    \(\mathbf{g}(\mathbf{Y}) = \mathbf{X\theta}\) 或者 \(\mathbf{Y} = \mathbf{g^{-1}}(\mathbf{X\theta})\) 

    這個函數\(\mathbf{g}(.)\)我們通常稱為聯系函數。

5. 線性回歸的正則化

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

 

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

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \alpha||\theta||_1\)

    其中n為樣本個數,\(\alpha\)為常數系數,需要進行調優。\(||\theta||_1\)為L1范數。

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

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

 

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

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \frac{1}{2}\alpha||\theta||_2^2\)

    其中\(\alpha\)為常數系數,需要進行調優。\(||\theta||_2\)為L2范數。

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

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

    令\(J(\mathbf\theta)\)的導數為0,得到下式:

    \(\mathbf{X^T(X\theta - Y) + \alpha\theta} = 0\)

    整理即可得到最后的\(\theta\)的結果:

    \(\mathbf{\theta = (X^TX + \alpha E)^{-1}X^TY}\)

     其中E為單位矩陣。

 

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

(歡迎轉載,轉載請注明出處。歡迎溝通交流: liujianping-ok@163.com) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM