(整理自AndrewNG的課件,轉載請注明。整理者:華科小濤@http://www.cnblogs.com/hust-ghtao/)
1.問題的引出
先從一個簡單的例子說起吧,房地產公司有一些關於Portland,Oregon的房子信息,下表是房子的面積和價格的對照表:
Living area(feet^2) | Price(1000﹩s) |
2104 | 400 |
1600 | 330 |
2400 | 369 |
1416 | 232 |
3000 | 540 |
…… | …… |
將點畫在二維坐標下表示:
那么問題就來了,面積為2000的房子,價格是多少呢?表中沒有直接給出答案,考慮能否根據表中給定的數據,得出價格和面積之間的一個函數,對於重新給定的面積來對其價格進行預測,這就是我們要解決的問題。有人說這不是數據擬合嗎?沒錯這就是數據擬合!若為線性擬合,則表達式為:,擬合結果如些圖:
如果給matlab這組數據,再用一個線性擬合的指令,很快便能得到和
得值。問題是在計算機內部是如何實現這種線性的數據擬合的,沒錯這就是線性回歸的方法。
為了便於更一般描述線性回歸的問題,也為了更加嚴謹,先對本課程中出現的一些基本符號與概念作出定義:
:輸入變量(例如本例中的Living area),也稱為輸入特征;
:輸出變量(例如本例中的Price),也成為目標變量;
一對數據,稱為一個訓練樣本;我們用來學習的訓練樣本的集合
稱為訓練集。這里的上標
指的是樣本在訓練集中的序號。
稱為輸入變量空間,
稱為輸出空間變量。
把我們的問題描述的更加正式:給定訓練集,去學習一個函數:
,這樣就可以根據給定的
來預測
了。我們也把這個函數稱為假設。過程用圖表示如下:
當我們要預測的目標變量是連續時,例如本例中的房屋價格,我們把這種學習問題稱為回歸問題(regression problem);當目標變量只能取一些離散的值時,我們稱這種問題為分類問題(classification problem)。
更一般地,為了使我們的問題更加一般化,假設輸入特征可以多於一個,像在本例中除了Living area,還有#bedrooms、whether each house has a fireplace、#bathrooms,and so on。如果對於一個線性回歸問題,有個輸入輸入變量,則假設
可以寫成:
,
就是我們需要確定的參數。為了使表述更加簡潔,我們令
,所以假設可以寫成:
,等號右側
和
都是向量,
是輸入向量的個數(不含
)。那么給定一個訓練集,我們應該如何選擇或者學習
?有種想法很顯然,就是使
更加接近
,至少對於訓練樣本來說是這樣的。為了使這個條件公式化,我們需要提出一個衡量標准的函數,我們定義了一個成本函數(cost function):
。
至此,線性回歸問題就是學習,使
最小。
2 .LMS算法
既然已經定義了線性回歸問題,那么用什么算法求解呢?在數值分析中,遇到過類似的問題,先給一組初始估計值,通過不斷地改變
,使
不斷變小,直到
收斂。這里我們應用梯度下降法,它的更新規則是:
(對
同時更新)。其中
稱為學習率,通過調整此參數,可以改變迭代速度。在等式右側,需要計算
的偏導數:
所以更新規則變為:。
這個規則就是LMS(最小均方規則)。可以看出每次更新的值是和成比例的,當
的值較大時,每次改變的值就較大,反之較小。當
已經很小時,說明已經達到擬合要求,
的值就不變了。當只有一個訓練樣本時,我們得到LMS算法,將LMS算法應用到線性回歸有兩種方式:批處理梯度下降法和隨機梯度下降法。
2.1 批處理梯度下降法
算法:
{
}
可以看出,的值每更新一次都要遍歷樣本集中所有的樣本,得到新的
,看是否滿足閾值要求,若滿足,則迭代結束,根據此值就可得到
;否則繼續迭代。注意到,雖然梯度下降法易受目標函數的局部極小值的影響,但是一般的線性規划問題只有一個極小值,所以梯度下降法一般可以收斂到全局的最小值。例如,
是二次凸函數,則梯度下降法的示意圖:
圖中,一圈上表示代價函數的函數值相同類似於地理上的等高線哈,從外圈開始逐漸迭代,最終收斂全局最小值。
2.2 隨機梯度下降法
算法:
{
{
}
}
在這個算法中,我們每次更新只用到一個訓練樣本。若根據當前樣本進行迭代得到一個
,此時會得到一個
,有新樣本進來之后,在此基礎上繼續迭代,有得到一組新的
和
,以此類推。
總結一下這兩個梯度算法:批處理梯度下降法,每更新一次,需要用到樣本集中的所有樣本;隨機梯度下降法,
每更新一次,只用到訓練集中的一個訓練樣本,所以一般來說,隨機梯度下降法能更快的使目標函數達到最小值(新樣本的加入,隨機梯度下降法有可能會使目標函數
突然變大,迭代過程中在變小。所以
實在全局最小值附近徘徊,但對於實際應用來說,誤差完全能滿足要求。)。另外,對於批處理梯度下降法,如果樣本集中增加了些許訓練樣本,就要重新開始迭代。由於以上原因,當訓練樣本集較大時,一般應用隨機梯度下降法。