close

前兩週談完了 linear regression,第三週進入新的主題: 分類問題 (classification)。

image

Regression 和 Classification 最大的差異在於,

前者是針對無限的連續數字去建模,而後者只能允許output 有兩個數字: 0或是1, 

一般來說,0代表「否」(no 或是 false),而1代表「是」 (yes 或是 true),

這個做法稱之為「二元分類」(binary classification),

常見的應用包括: 垃圾信偵測、腫瘤性質判斷等等情境。

image

如同前面所說,linear regression預測的是一個連續數字,有可能在0~1之間,或是小於0 、大於1等等,

一個可行的做法是設定一個threshold,或是稱為decision boundary,

比方說,設定成0.5,則小於0.5都視為false,大於0.5則視為true。

不過要注意的是如果有一個新的、數值特別大的資料被加進來建模,則模型會被往新資料的方向帶,

此時舊有的threshold 就會把一些本來會被判定成false的資料反而變成true,那就不正確了,

所以針對分類問題,要引入 logistic regression來處理。

image

同樣繼續以腫瘤的良性或惡性來舉例,由腫瘤的尺寸來決定,

在分類問題中會有一個 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上面呢? 

image

首先回顧 linear regression 的型式是 y=f(x) = wx+b,

設定新的變數 z = f(x) 代入 sigmoid function的分母,就會形成新的 logistic regression

我的解讀是,這其實就是一個把 linear regression的output 給代入 sigmoid function做轉化的過程。

image

吳恩達教授建議大家把 logistic regression 輸出的結果視為「在該模型 (w和b已指定)的情況下 y=1的機率」,

也就是說,如果把腫瘤的尺寸輸入建立好的模型之後output 出來 是0.7,意思是該腫瘤是良性 (1)的機率為70%。

image

接下來,就要定義一個 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。

 

image

再看另一個非線性的例子,如果邊界是一個圓形,此時 Z 會是一個圓方程式,

Z=0 時就能得到這個圓方程式,也就是決策邊界了,

如果方程式是 X1(平方) + X2(平方) -1,那邊界就是 X1(平方) + X2(平方) =1,

如果大於1的就是1,小於1的則視為0。

最後要提醒的是,如果 feature 是個多項式,則決策邊界就有可能是非線性、不規則的。如下所示。

image

 

 

 

arrow
arrow
    創作者介紹
    創作者 William.Echoes 的頭像
    William.Echoes

    Echoes of a Distant Tide

    William.Echoes 發表在 痞客邦 留言(0) 人氣()