本章內容主要是介紹:單變量線性回歸算法(Linear regression with one variable)
1. 線性回歸算法(linear regression)
1.1 預測房屋價格
下圖是俄勒岡州波特蘭市的住房價格和面積大小的關系:

該問題屬於監督學習中的回歸問題,讓我們來復習一下:
- 監督學習(Supervised'Learning'):對示例數據給出“正確答案”。
- 回歸問題(Regression 'Problem'):根據之前的數據預測出一個准確的輸出值 。
1.2 訓練集

- m=訓練樣本數量
- x's=輸入變量/特征量
- y's=輸出變量/目標變量,預測結果
(x,y)表示一個訓練樣本。
x(1) 指的是 第一個訓練集里值為2104的輸入值, 這個就是第一行里的x x(2) 等於1416。這是第二個x y(1) 等於460,這是第一個訓練集樣本的y值, 這就是(1)所代表的含義。
這就是一個監督學習算法的工作方式,我們可以看到這里有我們的訓練集里房屋價格,我們把它喂給我們的學習算法,然后輸出一個函數。
按照慣例,通常表示為小寫h代表hypothesis(假設) h表示一個函數。輸入是房屋尺寸大小,就像你朋友想出售的房屋。因此,h 根據輸入的 x 值來得出 y 值。 y值對應房子的價格。所以h是一個從x到y的函數映射 。
- y關於x的線性函數 :
hθ(x)=θ0+θ1*x

這個模型被稱為線性回歸(linear regression)模型。 這實際上是關於單個變量的線性回歸,這個變量就是x 根據x來預測所有的價格函數。同時, 對於這種模型有另外一個名稱,稱作單變量線性回歸 單變量是對一個變量的一種特別的表述方式。總而言之 這就是線性回歸。
2. 代價函數(Cost Function)
任何能夠衡量模型預測出來的值h(θ)與真實值y之間的差異的函數都可以叫做代價函數C(θ),如果有多個樣本,則可以將所有代價函數的取值求均值,記做J(θ)。
J(θ0,θ1)=12m$\sum$i=1m(y^i−yi)2=12m∑i=1m(hθ(xi)−yi)2

-
m:訓練樣本的個數;
-
hθ(x):用參數θ和x預測出來的y值;
-
y:原訓練樣本中的y值,也就是標准答案
-
上角標(i):第i個樣本
3. 代價函數1(簡化版):當θ0=0時
hθ(x)=θ1x,如下圖:
重要公式

- Hypothesis: 假設。這個例子中是尺寸對於房價關系的預測。
- Parameters: 參數。
- Cost Function:代價函數。
- Goal: 優化目標。代價最小化。
3.1 斜率為1時的代價函數

(1)假設函數
x軸為面積,y軸為房價
假設函數 h(x) 對於一個固定的θ1,這是一個關於x 的函數。 所以這個假設函數就是一個關於 x 這個房子大小的函數。
(2)代價函數
x軸為假設函數的斜率,y即代價大小
代價函數 J 是一個關於參數 θ1 的函數,而 θ1 控制着這條直線的斜率 。
3.2 斜率為0.5時的代價函數

斜率為0.5時,取3個樣本(m=3):(0.5,1),(1,2),(1.5,3)。套公式得出J(0.5)=0.58
同理,J(0)=1/6(1²+2²+3²)=14/6,求出更多的點之后,我們得出類似以下函數:

學習算法的優化目標是我們想找到一個 θ1 的值,來將 J(θ1) 最小化。這是我們線性回歸的目標函數。 上面的曲線中,讓 J(θ1) 最小化的值是 θ1=1。這個確實就對應着最佳的通過了數據點的擬合直線 。這條直線就是由 θ1=1 的設定而得到的。 對於這個特定的訓練樣本,我們最后能夠完美地擬合 這就是為什么最小化 J(θ1),對應着尋找一個最佳擬合直線的目標。
4. 代價函數2:完整版
包含θ0、θ1兩個參數的代價函數呈現出來的是類似下圖的三維曲面圖,兩個軸分別表示θ0、θ1。

在ML中,一般使用輪廓圖( contour plot 或 contour figure 的意思)描述該模型。
4.1 輪廓圖簡介

右側圖形就是一個輪廓圖,兩個軸分別表示θ0和θ1。 而這些一圈一圈的橢圓形,每一個圈就表示J(θ0,θ1) 相同的所有點的集合。
如圖選取三個點,這三個點都表示相同的 J(θ0,θ1) 的值。橫縱坐標分別是θ0, θ1 這三個點的 J(θ0,θ1) 值是相同的。我們需要算的代價函數即為圓心的點,此時我們的代價最小。
4.2 第一組數據
我們選取一組數據,θ0=800,θ1=-0.15,此時我們可以對應得到一個左邊這樣一條線。

以這組 θ0,θ1 為參數的這個假設 h(x) 並不是數據的較好擬合。並且你也發現了這個代價值 距離最小值點還很遠。也就是說這個代價值還是算比較大的,因此不能很好擬合數據。
4.3 第二組數據

θ0=360,θ1=0。我們可以得到h(x)=360+0*x這樣一條直線。同樣不能很好的擬合數據。
4.4 第三組數據
最后一個例子:

這個點其實不是最小值,但已經非常靠近最小值點了。 這個點對數據的擬合就很不錯,它對應這樣兩個θ0 和 θ1 的值。同時也對應這樣一個 h(x) 這個點雖然不在最小值點,但非常接近了。 因此誤差平方和,或者說 訓練樣本和假設的距離的平方和,這個距離值的平方和 非常接近於最小值,盡管它還不是最小值。
5. 小結
通過這些圖形,本篇文章主要是幫助理解這些代價函數 J 所表達的值;它們是什么樣的它們對應的假設是什么樣的;以及什么樣的假設對應的點更接近於代價函數J的最小值。
我們真正需要的是一種有效的算法,能夠自動地找出這些使代價函數J取最小值的參數θ0和θ1來。我們也不希望編個程序 把這些點畫出來,然后人工的方法來讀出這些點的數值,這很明顯不是一個好辦法。
事實上在深入機器學習的過程中, 我們會遇到更復雜、更高維度、更多參數的情況。而這些情況是很難畫出圖的,因此更無法將其可視化,因此我們真正需要的,是編寫程序來找出這些最小化代價函數的θ0和θ1的值。在后續文章中將介紹一種算法 能夠自動地找出能使代價函數 J最小化的參數θ0和θ1的值。
本文資料部分來源於吳恩達 (Andrew Ng) 博士的斯坦福大學機器學習公開課視頻教程。
[1]網易雲課堂機器學習課程:
http://open.163.com/special/opencourse/machinelearning.html
[2]coursera課程:
https://www.coursera.org/learn/machine-learning/
