機器學習分爲監督學習和無監督學習, 監督學習又分爲 迴歸問題 和 分類問題, 本文主要介紹監督學習-迴歸問題 中的 單變量線性迴歸,包括假設函數、代價函數、梯度下降等概念。
單變量線性迴歸
(Linear Regression with One Variable)
1. 假設函數
(Hypothesis)
以上述預測房價的迴歸模型爲例,由於只有一個輸入變量/特徵,我們可以定義假設函數Hypothesis爲:顯然, 是一條斜率爲 ,且在 軸上截距爲 的直線,我們要做的就是用這條直線來擬合數據。
2. 代價函數
(Cost Function)
爲了使 Hypothesis 具有最好的預測效果,即 的值最小,就要爲模型選擇合適的參數(parameters) ,它們決定了直線相對於訓練集的準確程度 ,模型所預測的值與訓練集中實際值之間的差距(下圖藍線所指)就是 建模誤差(modeling error)
我們可以定義代價函數來表示建模誤差:代價函數也被稱作 平方誤差代價函數(Squared Error Cost Function),是解決迴歸問題最常用的手段。
- 當 時,代價函數即爲關於 的二次函數:
時,假設函數 就是一條過原點的直線,通過改變斜率可以畫出其代價函數即爲一個二次函數:
- 當 和 都在變化時,我們繪製一個表示代價函數的三維圖,三個座標分別爲 、 和 :
則可以看出在三維空間中存在一個使得 最小的點。
3. 梯度下降
(Gradient Descent)
爲了找出使代價函數 取最小值的參數 和 ,我們可以使用梯度下降法。 梯度下降背後的思想如下圖所示:
想象一下你正站立在山的這一點上,在梯度下降算法中,我們要做的就是旋轉360度,看看我們的周圍,並問自己要在哪個方向上,能用小碎步儘快下山。
- 當你站在山坡上的這一點,看一下週圍,你會發現最佳的下山方向,然後你按照自己的判斷邁出一步;
- 你再看看周圍,然後再一次想想,我應該從什麼方向邁着小碎步下山?然後你按照自己的判斷又邁出一步;
- 重複上面的步驟,並依此類推,直到你接近局部最低點的位置。
- 開始時隨機選擇一個參數的組合,計算代價函數的值;
- 然後在初始參數組合的周圍尋找下一個能讓代價函數值下降最多的參數組合;
- 持續這麼做直到找到一個 局部最小值(local minimum),因爲我們並沒有嘗試完所有的參數組合,所以不能確定我們得到的局部最小值是 全局最小值(global minimum),選擇不同的初始參數組合,可能會找到不同的局部最小值。
4.梯度下降的直觀理解
首先看梯度下降算法的公式:
公式解釋如下:
- :學習率(learning rate),決定了我們沿着能讓代價函數下降程度最大的方向向下邁出的步子有多大
- :代價函數 對 和 的偏導數
爲了直觀理解,還是以 爲例,此時代價函數爲關於 的二次函數, 就可以理解爲二次函數在某個點上切線的斜率,那麼:
斜率 × 學習率 = 每進行一次梯度下降所降的高度
如下圖所示,當逐漸向左移動,切點斜率也在變小,因此 越接近代價函數的最低點,每次梯度下降的高度也越小,直到到達最低點斜率爲零,此時不再更新賦值,即收斂到局部最低點。
注意:線性迴歸模型中的代價函數,總是一個凸函數(convex function),這個函數沒有局部最優解,只有一個全局最優解,例如下圖中的碗狀:
5. 線性迴歸中的梯度下降算法
(Gradient Descent for Linear Regression)
總結一下梯度下降算法和線性迴歸模型:
對線性迴歸問題運用梯度下降法,關鍵在於求出代價函數的導數,即:
則算法改寫成:
由於在梯度下降的每一步中,都要計算微分求導項,這個項需要對所有個訓練樣本求和。因此,我們也稱這種梯度下降爲 批量梯度下降法(Batch Gradient Descent) 。
本章介紹了只含有一個參數的單變量線性迴歸,關於多變量線性迴歸見下一章(3)多變量線性迴歸與特徵縮放