2015年1月11日 星期日

[機器學習](二)單變數線性回歸(Univariate Linear Regression)學習演算法

單變數(Univariate)線性回歸model:

以房價例子為例,在這邊,假設變數就只有一個,也就是房屋面積,單位為平方英尺:


左邊為房屋面積,右邊為房價,以下我們給出一些定義:



m = training example的數量
x's = 輸入變數(特徵,就是房屋面積)
y's = 輸出變數(預測結果,就是房價)
(x, y) = 一個樣本
$({ x }^{ (i) },{ y }^{ (i) })$ = 第i個training example(i代表training set中的第i筆記錄,不是i次方)

例如${ x }^{ (1) }=2104$,${ x }^{ (2) }=1416$,${ y }^{ (1) }=460$


監督學習演算法的整個流程如下:



其中hypothesis h代表「假設函數」,假設函數寫法如下:

${ { h }_{ \theta  } }(x) = { \theta  }_{ 0 }+{ \theta  }_{ 1 }x$

熟悉y=ax+b這個單變數(Univariate)線性回歸model吧?給定一個變數x,也就是房屋大小,我們就可以預測出房價y。在這邊只是表示方式不同,想法是一樣的。

成本函數(Cost function):

Cost function用來找出能夠最佳擬合(fitting)我們的data的直線。

在${ { h }_{ \theta  } }(x) = { \theta  }_{ 0 }+{ \theta  }_{ 1 }x$中,我們稱${ \theta  }_{ i }'s$為model參數,而我們要做的就是選出這兩個參數${ \theta  }_{ 0 }$和${ \theta  }_{ 1 }$。根據不同的參數,我們會得到不同的假設函數。

在線性回歸中,我們要解決的是一個最小化問題,在這邊就是找出能夠讓${ { h }_{ \theta  } }(x)$的輸出最接近樣本(x, y)本身的y值的${ \theta  }_{ 0 }$和${ \theta  }_{ 1 }$,進而讓$({ { h }_{ \theta  } }(x) - y)$這個式子極小化。

一般來說,我們會用平方誤差來表示兩者之間的差距,而我們要最小化這個平方誤差的和。以房價例子為例,就是 假設函數${ { h }_{ \theta  } }(x)$所輸出的預測價格必須要與真實價格y之間的差的平方越小。

在這裡我們會對所有樣本的平方誤差進行求和,m是樣本數,式子中除以m是為了要儘量最小化我們的平均誤差,除以2則是為了讓數學更好理解,對這個求和值的1/2求最小值,得到的兩個$\theta$的值應該還會是相同值:

$\underset { { \theta  }_{ 0 }\quad { \theta  }_{ 1 } }{ minimize } \frac { 1 }{ 2m } \sum _{ i=1 }^{ m }{ ({ { { h }_{ \theta  } }({ x }^{ (i) })-{ y }^{ (i) } })^{ 2 } }$

$\underset { { \theta  }_{ 0 }\quad { \theta  }_{ 1 } }{ minimize }$的意思是找出能夠讓表達式${ { h }_{ \theta  } }({ x }^{ (i) }) = { \theta  }_{ 0 }+{ \theta  }_{ 1 }{ x }^{ (i) }$最小化的${ \theta  }_{ 0 }$與${ \theta  }_{ 1 }$。


如果將求合式子寫成成本函數Cost function J:

$J({ \theta  }_{ 0 },{ \theta  }_{ 1 })=\frac { 1 }{ 2m } \sum _{ i=1 }^{ m }{ ({ { { h }_{ \theta  } }({ x }^{ (i) })-{ y }^{ (i) } })^{ 2 } }$

我們所要做的就是:
$\underset { { \theta  }_{ 0 }\quad { \theta  }_{ 1 } }{ minimize } J({ \theta  }_{ 0 },{ \theta  }_{ 1 })$

成本函數有時被稱為平方誤差函數(squared error function),雖然還有其他種成本函數,但是在大部分回歸問題中,使用平方誤差函數都是個合理的選擇。


成本函數直覺化(一):



在這邊,我們假設${ \theta  }_{ 0 } = 0$,也就是${ { h }_{ \theta  } }(x) = { \theta  }_{ 1 }x$
上圖來說,若固定${ \theta  }_{ 1 }=1$,這個假設函數就是x的函數,也就是只有房價x會決定我們的直線,此時直線會長如上這樣。

而成本函數$J({ \theta  }_{ 1 })$則變成(此時${ \theta  }_{ 1 }=1$):
$J({ \theta  }_{ 1 })$
=$\frac { 1 }{ 2m } \sum _{ i=1 }^{ m }{ ({ { { h }_{ \theta  } }({ x }^{ (i) })-{ y }^{ (i) } })^{ 2 } }$
=$\frac { 1 }{ 2m } \sum _{ i=1 }^{ m }{ ({ { \theta  }_{ 1 }{ x }^{ (i) }-{ y }^{ (i) } })^{ 2 } } $
=$\frac { 1 }{ 2*3 }({0}^{ 2 }+{0}^{ 2 }+{0}^{ 2 })={0}^{ 2 }$

因此假設函數的輸出其實就跟y是一模一樣的,所以結果為0,J(1)=0。

另一個例子,假設固定${ \theta  }_{ 1 }=0.5$,J(0.5)約等於0.58,開始有成本了:






假設固定${ \theta  }_{ 1 }=0$,J(0)約等於2.3,成本更大了,因為${ { h }_{ \theta  } }(x)$就等於一條水平線。

單變數線性回歸演算法的目標就是要找出一個${ \theta }$值來讓J(${ \theta  }$)最小化,也就是$\underset { { \theta  }_{ 1 } }{ minimize } \quad J({ \theta  }_{ 1 })$。

任何一個${ \theta }$值都會對應一個不同的假設函數,以致於$J({ \theta })$也會不同,或稱擬合直線也會不同 ,如左圖。

右圖中,能夠讓$J({ \theta  }_{ 1 })$最小化的值是${ \theta  }_{ 1 }=1$。對應到左圖中,設定${ \theta  }_{ 1 }=1$所得到的擬合直線確實也是最佳擬合直線,這也就是為什麼最小化$J({ \theta  }_{ 1 })$所對應的就是尋找一條最佳擬合直線。

成本函數直覺化(二):

之前,如果只有一個參數${ \theta  }_{ 1 }$時,成本函數$J({ \theta  }_{ 1 })$會像一個弓形函數。 如果有兩個參數,則會呈現一個3維曲面圖形,如下圖,兩個橫軸分別為${ \theta  }_{ 0 }$與${ \theta  }_{ 1 }$,縱軸為成本函數$J({ \theta  }_{ 0 },{ \theta  }_{ 1 })$。


由於3維曲面圖形不好解釋,以下會使用輪廓圖(contour plots)來解說:


圖中的每一條輪廓就是產生相同$J({ \theta  }_{ 0 },{ \theta  }_{ 1 })$值的所有點$({ \theta  }_{ 0 },{ \theta  }_{ 1 })$的集合,圖中三個桃紅色的點都代表相同的$J({ \theta  }_{ 0 },{ \theta  }_{ 1 })$的值,因為它們都在同一條輪廓上。

輪廓圖要怎麼看呢?你可以想像3維曲面圖這個弓形函數從螢幕由下往上浮起來,每個顏色的橢圓形都代表一個高度,這些同心橢圓的最中心點是最低點,越往外的同心橢圓代表高度越高。

上圖中,紅點代表成本函數J(800, 0.15),同時也對應於一條直線。

另外舉個例子,假設${ \theta  }_{ 0 }$等於360,${ \theta  }_{ 1 }$等於0,則如下圖所示:


顯然的,成本函數J(360, 0)這個點所對應的這條直線並不是data set的最佳擬合直線,看右圖就知道,這個成本函數的值距離最小值的點還很遠。

以下這個就不錯了,雖然不是在最小值的點,但非常接近了,平方誤差和已經非常小了。


當然,我們最終的目標是要自動找出能夠讓$J({ \theta  }_{ 0 },{ \theta  }_{ 1 })$輸出最小值的${ \theta  }_{ 0 }$與${ \theta  }_{ 1 }$。下一篇文章,我們將介紹一種自動化算法,叫做「梯度下降法」。

沒有留言:

張貼留言