線性迴歸、梯度降低(Linear Regression、Gradient Descent)

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

 

實例

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

   

    假若有一個房子要賣,咱們但願經過上表中的數據估算這個房子的價格。這個問題就是典型的迴歸問題,這邊文章主要講迴歸中的線性迴歸問題。學習

 

線性迴歸(Linear Regression)

    首先要明白什麼是迴歸。迴歸的目的是經過幾個已知數據來預測另外一個數值型數據的目標值。假設特徵和結果知足線性關係,即知足一個計算公式h(x),這個公式的自變量就是已知的數據x,函數值h(x)就是要預測的目標值。這一計算公式稱爲迴歸方程,獲得這個方程的過程就稱爲迴歸。優化

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

   

    上述公式中的θ爲參數,也稱爲權重,能夠理解爲x1和x2對h(x)的影響度。對這個公式稍做變化就是spa

   

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

    假如咱們依據這個公式來預測h(x),公式中的x是咱們已知的,然而θ的取值殊不知道,只要咱們把θ的取值求解出來,咱們就能夠依據這個公式來作預測了。orm

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

 

損失函數(Loss Function

    咱們要作的是依據咱們的訓練集,選取最優的θ,在咱們的訓練集中讓h(x)儘量接近真實的值。h(x)和真實的值之間的差距,咱們定義了一個函數來描述這個差距,這個函數稱爲損失函數,表達式以下:ip

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

    咱們要選擇最優的θ,使得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

    執行過程以下圖:

   

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

   

 

總結

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

相關文章
相關標籤/搜索