前兩週談完了 linear regression,第三週進入新的主題: 分類問題 (classification)。
Regression 和 Classification 最大的差異在於,
前者是針對無限的連續數字去建模,而後者只能允許output 有兩個數字: 0或是1,
一般來說,0代表「否」(no 或是 false),而1代表「是」 (yes 或是 true),
這個做法稱之為「二元分類」(binary classification),
常見的應用包括: 垃圾信偵測、腫瘤性質判斷等等情境。
如同前面所說,linear regression預測的是一個連續數字,有可能在0~1之間,或是小於0 、大於1等等,
一個可行的做法是設定一個threshold,或是稱為decision boundary,
比方說,設定成0.5,則小於0.5都視為false,大於0.5則視為true。
不過要注意的是如果有一個新的、數值特別大的資料被加進來建模,則模型會被往新資料的方向帶,
此時舊有的threshold 就會把一些本來會被判定成false的資料反而變成true,那就不正確了,
所以針對分類問題,要引入 logistic regression來處理。
同樣繼續以腫瘤的良性或惡性來舉例,由腫瘤的尺寸來決定,
在分類問題中會有一個 threshold 做為良性和惡性的分界點,前面有提到用一條直線做fitting不是好選擇,
因此引入另一種新的函數叫 Sigmoid 函數,又稱為 S 型函數、logistic 函數等,用 g(z) 表示,
他的獨特性質就是在 input (X) 很大時,由於e的負很大次方會近似於0,所以 output (Y) 會是1,
同理,如果input (X)是0時,則output = 1/(1+1) = 0.5,
而input 是很大的負數時,分母會很大,以致於讓g(z) 趨近於0。
透過 sigmoid function ,讓output 必然會是0~1之間,不會亂跑。
至於要如何把sigmoid function 運用在 regression上面呢?
首先回顧 linear regression 的型式是 y=f(x) = wx+b,
設定新的變數 z = f(x) 代入 sigmoid function的分母,就會形成新的 logistic regression
我的解讀是,這其實就是一個把 linear regression的output 給代入 sigmoid function做轉化的過程。
吳恩達教授建議大家把 logistic regression 輸出的結果視為「在該模型 (w和b已指定)的情況下 y=1的機率」,
也就是說,如果把腫瘤的尺寸輸入建立好的模型之後output 出來 是0.7,意思是該腫瘤是良性 (1)的機率為70%。
接下來,就要定義一個 threshold 也就是decision boundary,
用來決定到底要把logistic regression的 output 視為1還是0 。
比方說,如果 decision boundary 設成 0.5,而f(x)用 sigmoid 公式算出來也是大於0.5,那就當成1,
反之,如果算出來則是小於0.5,那就直接把結果當成0。
事實上,根據公式,我們根本也不用非得要把 f(x) 用 sigmoid 給算出來,
因為 0.5 正好就是 1/(1+1) ,就是發生在 wx+b=0時 (任何數的0次方=1),
所以就可以把 f(x) 大於或小於 0.5 這種邊界給改寫成 wx+b 大於0或是小於0,
如果大於0則最後算出來的數字一定會大於0.5,所以視為1。
再看另一個非線性的例子,如果邊界是一個圓形,此時 Z 會是一個圓方程式,
Z=0 時就能得到這個圓方程式,也就是決策邊界了,
如果方程式是 X1(平方) + X2(平方) -1,那邊界就是 X1(平方) + X2(平方) =1,
如果大於1的就是1,小於1的則視為0。
最後要提醒的是,如果 feature 是個多項式,則決策邊界就有可能是非線性、不規則的。如下所示。
留言列表