線性迴歸

迴歸問題是根據一組特徵(feature),預測一個值,和分類問題不一樣,這個值是連續的,分類問題的預測值是離散的。spa

m:訓練集的記錄條數orm

x:訓練集中的一條記錄的輸入變量部分,或者說特徵值spark

y:訓練集中的記錄的輸出變量,或者說目標值io

假設特徵的個數是1,即有一組(x, y)的值,針對新的x的值,預測y的值。模型以下:function

問題轉化爲求θ0和θ1的值。變量

最小二乘法,得出cost function:技巧

問題轉化爲求上面②式的最小值。方法

最小值求解問題有多種解法,下面介紹梯度降低法和normal equation法。im

梯度降低法:數據

從一組θ0和θ1的值開始,每次迭代都改變θ0和θ1的值,使得②式的值愈來愈小,直到收斂。

上式中,α稱爲learning rate,這個值既不能太大也不能過小(須要在實際操做時,沒迭代n次,記下J(θ0, θ1)的值,觀察J(θ0, θ1)是否愈來愈小),若是太大,J(θ0, θ1)可能沒法收斂,若是過小,要迭代的次數太多,運行時間會很長。

上圖表示J(θ0, θ1)對θj的偏導數。

同時改變θ0和θ1的值,θ0 := θ0 - α(J(θ0, θ1)對θ0的偏導數),θ1 := θ1 - α(J(θ0, θ1)對θ1的偏導數),直到J(θ0, θ1)的值收斂(例如,兩次迭代,J(θ0, θ1)的值減少的程度小於0.001)。

normal equation:

兩種方法的比較:

梯度降低 vs normal equation
梯度降低須要選定一個α,normal equation不須要
梯度降低須要迭代不少次,normal equation不須要
梯度降低須要考慮scale問題,normal equation不須要

梯度降低在特徵數目很大的時候,works well,normal equation在矩陣計算時會很expensive,(特徵數大概10000左右時能夠考慮用梯度降低)

還有一些其餘更復雜的方法:

conjugate gradient(共軛梯度法)
BFGS(擬牛頓法)
L-BFGS

在實際使用梯度降低時,有幾個技巧

  1. 把特徵值儘可能歸化到同一區間(在使用spark mllib的訓練數據時發現訓練集的數據大可能是0到1區間的double值,多是這個緣由)

  2. 根據實際操做狀況調整learning rate的值。

相關文章
相關標籤/搜索