線性回歸、梯度下降(Linear Regression、Gradient Descent)


轉載請注明出自BYRans博客:http://www.cnblogs.com/BYRans/

 

實例

    首先舉個例子,假設我們有一個二手房交易記錄的數據集,已知房屋面積、卧室數量和房屋的交易價格,如下表:

   

    假如有一個房子要賣,我們希望通過上表中的數據估算這個房子的價格。這個問題就是典型的回歸問題,這邊文章主要講回歸中的線性回歸問題。

 

線性回歸(Linear Regression)

    首先要明白什么是回歸。回歸的目的是通過幾個已知數據來預測另一個數值型數據的目標值。假設特征和結果滿足線性關系,即滿足一個計算公式h(x),這個公式的自變量就是已知的數據x,函數值h(x)就是要預測的目標值。這一計算公式稱為回歸方程,得到這個方程的過程就稱為回歸。

    線性回歸就是假設這個方式是一個線性方程,即假設這個方程是一個多元一次方程。以咱們上面提到的例子為例:假設房子的房屋面積和卧室數量為自變量x,用x1表示房屋面積,x2表示卧室數量;房屋的交易價格為因變量y,我們用h(x)來表示y。假設房屋面積、卧室數量與房屋的交易價格是線性關系。他們滿足公式

   

    上述公式中的θ為參數,也稱為權重,可以理解為x1和x2對h(x)的影響度。對這個公式稍作變化就是

   

    公式中θ和x是向量,n是樣本數。

    假如我們依據這個公式來預測h(x),公式中的x是我們已知的,然而θ的取值卻不知道,只要我們把θ的取值求解出來,我們就可以依據這個公式來做預測了。

    那么如何依據訓練數據求解θ的最優取值呢?這就牽扯到另外一個概念:損失函數(Loss Function)。

 

損失函數(Loss Function

    我們要做的是依據我們的訓練集,選取最優的θ,在我們的訓練集中讓h(x)盡可能接近真實的值。h(x)和真實的值之間的差距,我們定義了一個函數來描述這個差距,這個函數稱為損失函數,表達式如下:

    這里的這個損失函數就是著名的最小二乘損失函數,這里還涉及一個概念叫最小二乘法,這里不再展開了。

    我們要選擇最優的θ,使得h(x)最近進真實值。這個問題就轉化為求解最優的θ,使損失函數J(θ)取最小值。那么如何解決這個轉化后的問題呢?這又牽扯到一個概念:梯度下降(Radient Descent)

最小均方算法(Least mean square,LMS算法)

(對的朋友,你沒有看錯,不是梯度下降,是LMS算法。耐心點,梯度下降一會兒就出來了)

我們先來看當訓練樣本只有一個的時候的情況,然后再將訓練樣本擴大到多個的情況。訓練樣本只有一個的情況,我們借鑒LMS算法的思想。擴大到多個我們稍后說。

    我們要求解使得J(θ)最小的θ值,LMS算法大概的思路是:我們首先隨便給θ一個初始化的值,然后改變θ值讓J(θ)的取值變小,不斷重復改變θ使J(θ)變小的過程直至J(θ)約等於最小值。

    首先我們給θ一個初試值,然后向着讓J(θ)變化最大的方向更新θ的取值,如此迭代。公式如下:

   

    公式中α稱為步長(learning rate),它控制θ每次向J(θ)變小的方向迭代時的變化幅度。J(θ)對θ的偏導表示J(θ)變化最大的方向。由於求的是極小值,因此梯度方向是偏導數的反方向。求解一下這個偏導,過程如下:

   

    那么θ的迭代公式就變為:

   

    這是當訓練集只有一個樣本時的數學表達。我們又兩種方式將只有一個樣本的數學表達轉化為樣本為多個的情況:梯度下降(gradient descent)正則方程(The normal equations)。這里我們重點講梯度下降。

 

梯度下降

  • 批梯度下降(batch gradient descent)

    如下公式是處理一個樣本的表達式:

   

    轉化為處理多個樣本就是如下表達:

   

    這種新的表達式每一步都是計算的全部訓練集的數據,所以稱之為批梯度下降(batch gradient descent)

    注意,梯度下降可能得到局部最,但在優化問題里我們已經證明線性回歸只有一個最優點,因為損失函數J(θ)是一個二次的凸函數,不會產生局部最優的情況。(假設學習步長α不是特別大)

    批梯度下降的算法執行過程如下圖:

   

 

    大家仔細看批梯度下降的數學表達式,每次迭代的時候都要對所有數據集樣本計算求和,計算量就會很大,尤其是訓練數據集特別大的情況。那有沒有計算量較小,而且效果也不錯的方法呢?有!這就是:隨機梯度下降(Stochastic Gradient Descent, SGD)

 

  • 隨機梯度下降(Stochastic Gradient Descent, SGD)

    隨機梯度下降在計算下降最快的方向時時隨機選一個數據進行計算,而不是掃描全部訓練數據集,這樣就加了迭代速度。隨機梯度下降並不是沿着J(θ)下降最快的方向收斂,而是震盪的方式趨向極小點。余凱教授在龍星計划課程中用“曲線救國”來比喻隨機梯度下降。

    隨機梯度下降表達式如下:

    clip_image001

    執行過程如下圖:

   

    批梯度下降和隨機梯度下降在三維圖上對比如下:

   

 

總結

    線性回歸是回歸問題中的一種,線性回歸假設目標值與特征之間線性相關,即滿足一個多元一次方程。使用最小二乘法構建損失函數,用梯度下降來求解損失函數最小時的θ值。


免責聲明!

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



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