1. 程式人生 > >機器學習:單變數線性迴歸及梯度下降

機器學習:單變數線性迴歸及梯度下降

*****************************************

注:本系列部落格是博主學習Stanford大學 Andrew Ng 教授的《機器學習》課程筆記。博主深感學過課程後,不進行總結很容易遺忘,根據課程加上自己對不明白問題的補充遂有此係列部落格。本系列部落格包括線性迴歸、邏輯迴歸、神經網路、機器學習的應用和系統設計、支援向量機、聚類、將維、異常檢測、推薦系統及大規模機器學習等內容。

*****************************************

單變數線性迴歸

模型表示

線性迴歸(Linear Regression)是利用稱為線性迴歸方程的最小平方函式對一個或多個自變數和因變數之間關係進行建模的一種迴歸分析。這種函式是一個或多個稱為迴歸係數的模型引數的線性組合。只有一個自變數的情況稱為簡單迴歸,大於一個自變數情況的叫做多元迴歸。

詳細描述

之前的房屋交易問題為例,假使我們迴歸問題的訓練集(Training Set)如下表所示:


我們將要用來描述這個迴歸問題的標記如下:

 m  代表訓練集中例項的數量

 x  代表特徵/輸入變數

 y  代表目標變數/輸出變數

 (x,y)  代表訓練集中的例項

  (x(i),y(i))代表第  i  個觀察例項

 h  代表學習演算法的解決方案或函式也稱為假設(hypothesis)


因而,要解決房價預測問題,我們實際上是要將訓練集“輸入”給我們的學習演算法,進而學習得到一個假設h,然後將我們要預測的房屋的尺寸作為輸入變數輸入給 h,預測出該房屋的交易價格作為輸出變數輸出為結果。

一種可能的表達方式為:,因為只含有一個特徵(輸入變數),因此這樣問題叫作單變數線性迴歸問題。

代價函式

本節將要定義什麼是代價函式,這將有助於我們把最有可能的直線與給定的資料相擬合。


我們現在要做的便是為我們的模型選擇合適的引數(parametersθ0 和θ1,在房價問題這個例子中便是直線的斜率和在y軸上的截距。我們選擇的引數決定了我們得到的直線相對於我們的訓練集的準確程度,模型所預測的值與訓練集中實際值之間的差距(下圖中藍線所指)就是建模誤差(modeling error)。


我們的目標便是選擇出可以使得建模誤差的平方和能夠最小的模型引數。即使得代價函式 

  最小。

我們繪製一個等高線圖,三個座標分別為 θ0 和θ1 和  J(θ0,θ1),則可以看出在三維空間中存在一個使得  J(θ0,θ1)最小的點。


代價函式的直觀理解

1 僅有一個模型引數時

如下圖所示,我們想要用一條直線來擬合我們的資料,用引數θ0 和θ1得到假設h,而通過選擇不同的θ0 和θ1,可以得到不同的擬合直線;在本小節中,為了更好地講述代價函式,我們使用一個簡化的假設函式,將θ0看做等於0,從而,優化函式將只有一個引數θ1。(將假設函式看做經過原點的直線(θ0 =0)可以更好地解釋代價函式。)


將θ1取值不同時所對應的不同J值所對應的資料點繪製出來,如下側右圖所示,可以看到,當J的取值不同時,對應於不同的假設函式;反之,不同的假設函式也對應於不同的代價函式取值,而學習演算法的目標是最小化代價函式

從下圖中可以看到,當θ1=1時,J取得最小值0,而該J對應的假設函式正好比較好地擬合出了資料集中的樣本點,這就比較直觀地解釋了為什麼通過最小化代價函式可以得到一個最佳的擬合直線。


2 有兩個模型引數時

與上一小節相同,來看一下假設函式、模型引數、代價函式、優化目標函式,所不同的是,這裡不再假設θ0=0,而J是θ0和θ1的函式。當h只有一個引數時,代價函式J的圖形將是如上圖右側所示的碗裝函式。但現在J有兩個引數:θ0和θ1,J的函式圖形仍然呈現出碗裝形狀,但變為了二維圖形,如下圖所示。


對於不同的假設函式,代價函式取值不同。接下來,為了描述方面,不再使用這個三維圖形,而是使用contour figure。如下右圖所示,就是contour figure,同一橢圓上的點,代表J取值相同。如下側右圖所示,θ0=800這點對應於左圖中的直線,可以看到,這條直線並不能很好地擬合數據集,並且注意到,θ0=800這點距離J的最小值點還很遠,也就是說這個代價函式還很大。


通過不斷地降低J的取值,可以找到較好的擬合直線:


梯度下降

梯度下降是一個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式J(θ0,θ1) 的最小值。下面,看一下梯度下降法的定義,如下圖所示。


(1):= 表示賦值;

(2)α 是一個數字,被稱為學習速率,它控制了我們下山時會邁出多大的步子,因此如果α值很大,那麼相應的梯度下降過程中我們會試圖用大步子下山,如果α值很小,那麼我們會邁著很小的小碎步下山(關於如何設定α的值等內容,在之後的課程中會再講解);

(3)這裡的梯度下降法為批量梯度下降法,我們每一次都同時讓所有的引數減去學習速率乘以代價函式的導數。


梯度下降背後的思想是:開始時我們隨機選擇一個引數的組合(θ0,θ1,...,θn),計算代價函式,然後我們尋找下一個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到到一個區域性最小值(localminimum),因為我們並沒有嘗試完所有的引數組合,所以不能確定我們得到的區域性最小值是否便是全域性最小值(global minimum),選擇不同的初始引數組合,可能會找到不同的區域性最小值。

梯度下降的直觀理解


對θ賦值,使得 J(θ)按梯度下降最快方向進行,一直迭代下去,最終得到區域性最小值。其中 α是學習率(learning rate),它決定了我們沿著能讓代價函式下降程度最大的方

向向下邁出的步子有多大。


但對於線性迴歸問題,代價函式是一個碗裝的函式(凸函式),該函式只有一個全域性最優解,所以,利用梯度下降法,總是會收斂到全域性最優解。

梯度下降和線性迴歸

如下圖所示,左側是梯度下降法,右側是線性迴歸。接下來要做的就是用左側的梯度下降法來最小化平方誤差代價函式。


批量梯度下降法:即在進行梯度下降法的過程中,每一次迭代都用到了所有的訓練樣本,就是說,每次更新都需要考慮這一""樣本。

******************

時間:2015/8/8

******************