公開課地址:https://class.coursera.org/ml-003/class/index
授課老師:Andrew Ng
1、classification(分類)
考慮一個預測病人腫瘤的系統,該系統能判斷病人的腫瘤是良性還是惡性。我們可以用一個值y∈{0,1}來表示預測結果,當y為0時表明是良性的,y為1時表明是惡性的。我們收集了8個體現腫瘤的大小和性質的樣本資料,在平面上描出點如下:
假設我們用資料進行線性迴歸得到的直線,那麼可以確定一個閾值-0.5,我們可以把malignant等於5的點投影下來,認為腫瘤大小在藍線左側的y=0(良性),右側的y=1(惡性),也可以寫成:
但是如果增加了一個樣本資料,結果可能會變成這樣:
從可以看出,此時因為新加入的樣本點,線性迴歸得到的直線向右位移,如果我們仍然把0.5作為閾值,把投影到左側的點認為是良性,右側認為是惡性,那就出錯了。原因是這裡不是所有點都滿足h(x)≥0.5 時y=1,h(x)<0.5時y=0,綠框標出的兩個點就是反例。看來,線性迴歸在這個例子中已經不適用了,我們需要引入更複雜一點的函數,羅吉斯迴歸模型就是一種最常見的函數模型,其健壯性較好,適用於多種資料分布。
2、hypothesis representation(假設表示)
再考慮上面病人腫瘤判斷問題,如果用機率來表示是不是不容易出錯呢?我們可以用h(x)來表示病人腫瘤為惡性的機率,機率大於0.5那就可能是惡性,否則可能為良性,這就沒有上面增加一個樣本資料導致分類錯誤的問題了。為此,我們需要把h(x)限定在[0,1]區間內,這可以用一個sigmoid函數來約束:
如右側所示,上面為sigmoid函數的運算式,下面為sigmoid函數的座標表示,可以發現函數值在正負無窮範圍內都處於(0,1)區間,而且正好以0.5區分z值取正負的情況,此時也不再存在因為樣本點的加入導致h(x)改變產生誤判的情況。這裡補充一點,在給定x和theta後,y取0和取1的機率和應該為1:
3、decision boundary(決策邊緣)
按照之前的假設,h(x)≥0.5時y=1,否則y=0,不過這裡h(x)是引入sigmoid函數的h(x),即:
此時只要判斷theta’*x的值與0的關係即可。
舉個例子,假設h(x)=g(θ0+θ1x1+θ2x2),參數θ=[-3,1,1]T,那麼判斷y值只需要判斷theta’*x的值,如下:
如果-3+x1+x2≥0,則y=1,否則y=0. 在以x1,x2為座標系的平面上,y=0和y=1就以x1+x2=3這條線作為分界線,這也就是決策邊緣的意思。當然,決策邊緣也可以是非線性,就像下面這樣:
可以看出決策邊緣的形狀與h(x)的形式有很大關係。
4、cost function(代價函數)
又輪到了代價函數,現在是針對新的h(x),求解出theta,式子形式還是一致的:
由於引入了sigmoid函數並且y的取值只有0,1兩種,所以代價函數的形式也要進行改變:
分析發現,當y=1,h(x)=1時,代價為0,而如果h(x)=0,那代價將會是無窮大,像:
y=0的情況類似。
5、simplified cost function and gradient descent(簡化代價函數和梯度下降)
上面我們把代價函數分成兩類,其實可以合成一個函數:
這樣修改以後,我們還是可以用梯度下降來求解theta。
這過程和線性迴歸居然一模一樣。
6、advanced optimization(進階最佳化)
對應求解代價函數最小值,同線性迴歸一樣,我們不止梯度下降一種方法,還有下面左側括弧中的一些方法,右側是這些方法的優缺點:
用哪種方法,就具體問題具體分析了。
7、multi-class classification:one-vs-all(多分類問題:一對多)
有時候問題並不像判斷一個病人腫瘤是惡性還是良性這中二分類問題那麼簡單,比如判斷天氣需要區分是晴天、陰天、下雨、下雪等等。對於二分類問題,我們可以用一條線分割,那對於多分類問題呢?
有一種簡單的方法,那就是每次只分離出一個類別,有幾個類別就構造幾個決策邊緣,也就是幾個h(x):
在上面這個例子中,針對三種類別加以區分,我們需要引入三個羅吉斯迴歸分類函數h(x),當對一個樣本點進行類別判斷時,我們只需要分別計算三個h(x)的值,選擇其中求出值最大的那個類別,把樣本點歸為那一類即可。原因是這裡h(x)表示的是x屬於某個類別的機率,既然某個類機率最大,那更可能屬於這個類別了。
-----------------------------弱弱的分割線-------------------------------
在這一講中,我覺得最重要的應該是sigmoid函數。首先通過腫瘤性質診斷這個例子讓我們發現可以用機率來表示這種二元分類的問題,sigmoid函數也因此被引入。當然,sigmoid函數不僅僅只是羅吉斯迴歸用的,還有其他很重要的用途。機器學習群裡面推薦看下老師木介紹sigmoid函數的一篇文章,連結如下:http://www.guzili.com/?p=45195