線性迴歸原理小結

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

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}\)post

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

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

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

    獲得了模型,咱們須要求出須要的損失函數,通常線性迴歸咱們用均方偏差做爲損失函數。損失函數的代數法表示以下:spa

    \(J(\theta_0, \theta_1..., \theta_n) = \sum\limits_{i=0}^{m}(h_\theta(x_0, x_1, ...x_n) - 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爲單位矩陣。

 

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

(歡迎轉載,轉載請註明出處。歡迎溝通交流: 微信:nickchen121)

相關文章
相關標籤/搜索