1. 程式人生 > >機器學習【第二篇】單變量線性回歸

機器學習【第二篇】單變量線性回歸

重復 mil 最大 在線 局部最優 記得 算法 描點 3d模型

吳恩達機器學習筆記整理——單變量線性回歸

技術分享圖片

通過模型分析,擬合什麽類型的曲線。

一、基本概念

1.訓練集

由訓練樣例(training example)組成的集合就是訓練集(training set), 如下圖所示,其中(x,y)是一個訓練樣本,訓練集中每一行表示一個訓練樣本;(x^i,y^i)表示第i個訓練樣本。

技術分享圖片

2.假設函數h

使用某種學習算法對訓練集的數據進行訓練, 我們可以得到假設函數(Hypothesis Function), 如下圖所示. 在房價的例子中,假設函數就是一個房價關於房子面積的函數。有了這個假設函數之後, 給定一個房子的面積我們就可以預測它的價格了.

技術分享圖片

這裏假設函數用以下格式表示:              hθ(x)=θ0+θ1x

這個模型就叫做單變量的線性回歸(Linear Regression with One Variable).

二、代價函數

1.概念

對於不同的假設函數, 假設函數中有兩個未知的量當選擇不同的,所得到的模型的效果肯定是不一樣的. 如下圖所示, 列舉了三種不同的下的假設函數

技術分享圖片

代價函數,是使所得直線與數據最大程度擬合,使h(x)在輸入x後所得的y值,最接近樣本對應的y值,此時的參數θ1和θ0即所求。

越是接近, 代表這個假設函數越是準確, 這裏我們選擇均方誤差來作為衡量標準, 即我們想要每個樣例的估計值與真實值之間差的平方的均值最小。用公式表達為:

技術分享圖片

(1/2是為了便於後續計算)記:

技術分享圖片

這樣就得到了我們的代價函數(cost function), 也就是我們的優化目標, 我們想要代價函數最小

:

技術分享圖片

技術分享圖片

2.代價函數與假設函數

現在為了更方便地探究hθ(x)與J(θ0,θ1)的關系, 先令θ0等於0, 得到了簡化後的假設函數,有假設函數的定義可知此時的假設函數是經過原點的直線. 相應地也也得到簡化的代價函數。如圖所示:

技術分享圖片

簡化之後,我們令θ1等於1, 就得到hθ(x)=x如下圖左所示。圖中三個紅叉表示訓練樣例,通過代價函數的定義我們計算得出J(1)=0,對應下圖右中的(1,0)坐標。

技術分享圖片

重復上面的步驟,再令θ1=0.5,得到hθ(x)如下圖左所示。通過計算得出J(0.5)=0.58,對應下圖右中的(0.5,0.58)坐標。

技術分享圖片

對於不同的θ1,對應著不同的假設函數hθ(x),於是就有了不同的J(θ1)的值。將這些點連接起來就可以得到J(θ1)關於θ1的函數圖像,如下圖所示:

技術分享圖片

我們的目標就是找到一個θ使得J(θ)最小, 通過上面的描點作圖的方式, 我們可以從圖中看出, 當θ1=1的時候, J(θ)取得最小值.

我們令θ0等於0, 並且通過設置不同的θ1來描點作圖得到J(θ1)的曲線。這一節我們不再令θ0=0, 而是同時設置θ0和θ1的值, 然後再繪出J(θ0,θ1)的圖形. 因為此時有兩個變量,很容易想到J(θ1)應該是一個曲面, 如下圖所示:

技術分享圖片

為了便於研究,我們采用等高線圖來研究3D模型,在地理中常用等高線用來描述地形

下圖右,越靠近中心表示J(θ0,θ1)的值越小(對應3D圖中越靠近最低點的位置)。下圖左表示當=800, θ1=0.15的時候對應的hθ(x),通過θ0, θ1的值可以找到下圖右中Jθ0,θ1)的值。對於不同的擬合直線,對應不同的J(θ0,θ1)

對於斜率為負的情形:

技術分享圖片

當斜率為0,情形如下:

技術分享圖片

最優擬合情形:

技術分享圖片

我們在這個過程中不斷由外向內趨近,直至找到一個最接近最佳hθ(x),這個過程就是梯度下降的過程。

三、梯度下降算法

1.梯度下降

梯度下降算法是一種優化算法, 它可以幫助我們找到一個函數的局部極小值點. 它不僅僅可以用在線性回歸模型中, 在機器學習許多其他的模型中也可以使用它. 對於我們現在研究的單變量線性回歸來說, 我們想要使用梯度下降來找到最優的θ0,θ1.它的思想是, 首先隨機選擇兩個θ0,θ1(例如, θ0=0,θ1=0), 不斷地改變它們的值使得J(θ)變小, 最終找到J(θ)的最小值點.

技術分享圖片

可以把梯度下降的過程想象成下山坡, 如果想要盡可能快的下坡, 應該每次都往坡度最大的方向下山.

技術分享圖片

梯度下降算法得到的結果會受到初始狀態的影響, 即當從不同的點開始時, 可能到達不同的局部極小值, 如下圖:

技術分享圖片

下面具體看一下算法的過程, 如下圖所示, 其中:=表示賦值,α叫做學習率用來控制下降的幅度,導數部分叫做梯度。這裏一定要註意的是,算法每次是同時(simultaneously)改變θ0和θ1的值,如圖下圖所示。

技術分享圖片

3.梯度和學習率

我們先來看看梯度下降算法的梯度是如何幫助我們找到最優解的. 為了研究問題的方便我們還是同樣地令θ0等於0,假設一開始選取的θ1在最低點的右側,此時的梯度(斜率)是一個正數。根據上面的算法更新θ1的時候,它的值會減小, 即靠近最低點。

技術分享圖片

類似地假設一開始選取的θ1在最低點的左側,此時的梯度是一個負數,根據上面的算法更新θ1的時候,它的值會增大,也會靠近最低點.

技術分享圖片

如果一開始選取的θ1恰好在最適位置,那麽更新θ1時,它的值不會發生變化。

技術分享圖片

學習率α會影響梯度下降的幅度。如果α太小, θ的值每次會變化的很小,那麽梯度下降就會非常慢;相反地,如果α過大,θ的值每次會變化會很大,有可能直接越過最低點,可能導致永遠沒法到達最低點。

技術分享圖片

由於隨著越來越接近最低點, 相應的梯度(絕對值)也會逐漸減小,所以每次下降程度就會越來越小, 我們並不需要減小α的值來減小下降程度。

技術分享圖片

3.計算梯度

根據定義, 梯度也就是代價函數對每個θ的偏導:

技術分享圖片

我們將hθ(x(i))=θ0+θ1x(i)帶入到J(θ0,θ1)中,並且分別對θ0和θ1求導得:

技術分享圖片

由此得到了完整的梯度下降算法

技術分享圖片

還記得這個圖嗎, 前面說了梯度下降算法得到的結果會受初始狀態的影響, 即初始狀態不同, 結果可能是不同的局部最低點.

技術分享圖片

事實上,用於線性回歸的代價函數總是一個凸函數(Convex Function)。這樣的函數沒有局部最優解,只有一個全局最優解。所以我們在使用梯度下降的時候,總會得到一個全局最優解。

技術分享圖片

叠代多次後,我們得到了最優解。現在我們可以用最優解對應的假設函數來對房價進行預測了。例如一個1,250平方英尺的房子大概能賣到250k$,如下圖所示:

技術分享圖片

技術分享圖片

機器學習【第二篇】單變量線性回歸