斯坦福機器學習實現與分析之二(線性回歸)

2021-06-29 16:16:06 字數 3407 閱讀 9389

回歸問題提出

首先需要明確回歸問題的根本目的在於**。對於某個問題,一般我們不可能測量出每一種情況(工作量太大),故多是測量一組資料,基於此資料去**其他未測量資料。

比如課程給出的房屋面積、房間數與**的對應關係,如下表:

若要測量出所有情況,不知得測到猴年馬月了。有了上面這一組測量資料,我們要估計出一套房子(如2800平方英呎5個房間)的**,此時回歸演算法就可以榮耀登場了。

回歸演算法推導

有了上面這個問題,如何來估計房子的**呢?首先需要建立模型,一種最簡單的模型就是線性模型了,寫成函式就是:

hθ(x

1,x2

)=θ0

+θ1x

1+θ2

x2其中x

1 是房子面積,x2

是房間數,

h 是對應的房子面積,θj

就是我們需要求的係數。

對於每個具體問題,需要根據測量資料的情況來確定是否為線性。這裡假設為線性模型會限制適用範圍,如果房屋面積與**不是線性關係,則此模型估計的房子**可能會偏差很大。因此實際上這裡也可以假設為其他關係(如指數、對數等),那麼估計結果可能就極度不準確了,當然那也就不是線性回歸,這裡就不必討論。具體為什麼選擇線性模型,將在後面廣義回歸模型中來解答。

上面公式寫成向量形式,則為hθ

(x)=

∑ni=

0θix

i=θt

x 其中θ

=(θ0

,θ1,

...,

θn)t

x=(1,

x1,.

..,x

n)t

那麼上面的測量資料可以表示為(x

(1),

y(1)

),(x

(2),

y(2)

),..

.,(x

(m),

y(m)

) ,其中的y為測量的房屋面積。這樣如何根據這m個測量資料來求解引數

θ 就是我們需要解決的問題了。

我們可以通過保證此組測量的**誤差最小來約束求解。代價函式為j(

θ)=1

2∑mi

=1(h

θ(x(

i))−

y(i)

)2該代價函式表達的是測量資料的均方誤差和。通過最小化該代價函式,即可估計出引數

θ 。前面那個1/2並沒有實質意義,主要為了後面求導方便加的;實際上為1/m更具有絕對意義。

回歸演算法求解

如何求解上述問題?主要有梯度下降法,牛頓迭代法,最小二乘法。這裡主要講梯度下降法,因為該方法在後面使用較多,如神經網路、增強學習等求解都是使用梯度下降。

函式在沿著其梯度方向增加最快的,那麼要找到該函式的最小值,可以沿著梯度的反方向來迭代尋找。也就是說,給定乙個初始位置後,尋找當前位置函式減小最快的方向,加上一定步長即可到達下一位置,然後再尋找下一位置最快的方向來到達再下乙個位置……,直至其收斂。上述過程用公式表達出來即如下所示:θj

=θj−

α∂∂θ

jj(θ

)

根據上述表示式,可以求得代價函式的偏導數為:∂∂

θjj(

θ)=∑

mi=1

(hθ(

x(i)

)−y(

i))∂

∂θjh

θ(x(

i))=

∑mi=

1(hθ

(x(i

))−y

(i))

x(i)

j

這樣,迭代規則為θj

=θj−

α∑mi

=1(h

θ(x(

i))−

y(i)

)x(i

)j(j

=1,2

,...

,n)

這個公式即是所謂的批量梯度下降。仔細觀察該公式,每次迭代都需要把m個樣本全部計算一遍,如果m很大時,其迭代將非常慢,因此一種每次迭代只計算1個樣本的隨機梯度下降(或增量梯度下降)可以極大減少運算量,其迭代如下:θj

=θj−

α(hθ

(x(i

))−y

(i))

x(i)

j(i=

1,2,

...,

nj=1

,2,.

..,n

)

若所有樣本迭代完成後還未收斂,則繼續從第1個樣本開始迭代。

演算法實現與結果

首先使用下面**生成一組資料,為了後續顯示方便,資料為一條直線上疊加一定雜訊:

資料顯示出來如下圖:

線性回歸函式使用梯度下降求解: 

測試函式:

實際上上述**中真正涉及演算法求解的不多,其他都是儲存中間結果和繪圖等用於除錯分析的。回歸結果如圖,藍色點為上面儲存的資料,紅色直線是回歸擬合的直線:

其中每次迭代後,代價函式j的變化則如下圖(考慮其範圍過大,繪製的是其對數圖):

可以看出,當迭代超過1000次時,代價函式已經基本不變了。梯度下降迭代過程如下左圖,xy座標分別為θ0

和θ1 ,z軸為對應

θ 的代價函式值,圖中心的紅色小塊是真實的最優值,綠色方塊是每次迭代的位置,可以看到迭代過程是不斷靠近最優解。由於圖中綠色方塊重疊過多導致繪圖出來中間部分顯示為黑色了,右圖為區域性放大的結果。

演算法分析

1. 梯度下降法中,

batchsize為一次迭代使用的樣本數量,當其為m時,即為批量梯度下降,為1時即是隨機梯度下降。實驗效果顯示,batchsize越大,迭代越耗時,但其收斂越穩定;反之,則迭代越快,而易產生振盪現象;具體可修改測試**中的batchsize來看實驗結果。

2. 關於步長的選擇。在梯度下降法中,步長的影響是非常大的,步長過小會導致收斂非常慢,過大則容易導致不收斂。上述程式中的步長是經過若干次執行修改的,換一組其他資料可能不收斂,這是該程式存在的問題,待回歸演算法完結後將專門來一篇分析該問題,並給出解決方法。

標籤: 

機器學習, 

演算法分析

斯坦福機器學習筆記五

有時候發現訓練出來的模型誤差很大,會有很多解決辦法。例如 增加更多的訓練樣本,減少特徵數目,增加特徵數目,增加多項式特徵,減小或增大正則化引數 的值 但是這些嘗試往往會浪費很多時間,所有這裡提出了一種機器學習診斷法。1 資料的分配 將資料分為三部分,訓練集 60 交叉驗證集 20 和測試集 20 利...

斯坦福機器學習筆記十

這裡以電影推薦的栗子來說明什麼是推薦系統。nu 代表使用者的數量 nm 代表電影的數量 r i,j 如果使用者給電影評過分,則r i,j 1 y ij 代表使用者i給電影j的評分 mj 代表使用者j評過分的電影總數 j 代表使用者j的引數向量 x i 代表電影i的特徵向量 如圖所示,推薦系統能夠幫我...

斯坦福機器學習筆記十二

由於大規模資料集求最優解,計算量非常大,對於這樣的問題,如果能夠將資料集分配給多台計算機,讓每台計算機處理資料集的乙個子集,然後將計算結果彙總再求和,這樣的方法叫做對映簡化。如果任何學習演算法能夠表達為,對訓練集的函式求和,那麼就能將這個任務分配給多台 計算機 或者同一臺計算機的不同cpu核心 以達...