邏輯回歸(Logistic Regression)

Photo by Food Photographer | Jennifer Pallian on Unsplash
Photo by Food Photographer | Jennifer Pallian on Unsplash
Logistic regression 是一個資料分析技術,被用來做分類(classification)。它大概是分類演算法中最簡單的模型。因此,很適合當初學者的第一個分類演算法。

Logistic regression 是一個資料分析技術,被用來做分類(classification)。它大概是分類演算法中最簡單的模型。因此,很適合當初學者的第一個分類演算法。

Sigmoid Function

在介紹 logistic regression 之前,我們先來了解 sigmoid function(又稱 logistic function)。Sigmoid function 的 formula 如下。它的輸出介於 0 和 1 之前。

g(z)=\frac{1}{1+e^{-z}}, 0<g(z)<1

如下圖所示,Sigmoid function 的兩端會非常接近 0 和 1。

Sigmoid function, outputs between 0 and 1.
Sigmoid function, outputs between 0 and 1.

Logistic Regression Model

Logistic regression 的 model 是,先將 x 帶入到 linear regression 的 model,得到 y。再將 y 帶入到 sigmoid function,得到一個介於 0 和 1 的值。Logistic regression model 的 formula 如下。

\text{Linear regression model: } z=\vec{w} \cdot \vec{x}+b  \\\\ \text{Sigmoid function: } g(z)=\frac{1}{1+e^{-z}} \\\\ \text{Logistic regression model: } f_{\vec{w},b}(\vec{x})=g(\vec{w} \cdot \vec{x}+b)=\frac{1}{1+e^{-(\vec{w} \cdot \vec{x}+b)}}

所以,logistic regression model 的輸出值總是介於 0 和 1 之間。假設 x 是腫瘤的大小,當 y 是 0 表示非惡性腫瘤,當 y 是 1 表示惡性腫瘤。如果,將 x 帶入 logistic regression model 並得到 0.7,這表示有 70% 的機率 y 是 1。

x \text{ is tumor size} \\\\ y \text{ is 0 (not malignant)} \\\\ y \text{ is 1 (malignant)} \\\\ f_{\vec{w},b}(\vec{x})=0.7 \\\\ \text{70\% chance y is 1}

因為 y 是 0 的機率加上 y 是 1 機率總和為 1,所以當有 70% 的機率 y 是 1,那代表有 30% 的機率 y 是 0。

P(y=0)+P(y=1)=1

Decision Boundary

剛剛提到 logistic regression 的輸出值是介於 0 到 1 之間,其代表著 y 是 1 的機率。因此,我們需要設定一個 threshold。當 fw,b 大於等於 threshold 時,ŷ 為 1,反之當 fw,b 小於 threshold 時,ŷ 為 0。

When the threshold is 0.5.
When the threshold is 0.5.

仔細看下去,當 z 大於等於 0 時,fw,b 也就是 g(z) 就會大於等於 threshold 0.5。所以,z 為 0 的左邊是 ŷ 為 0,右邊是 ŷ 為 1。此界線稱為 desicion boundary。

Decision boundary: z=0.
Decision boundary: z=0.

下面的例子中,我們可以透過 z = 0 來計算出 boundary decision。

Example of decision boundary.
Example of decision boundary.

Cost Function 和 Loss Function

Cost function 是用來衡量 fw,b 的準確率。有了 cost function,我們就可以衡量調整後的 w 和 b 是否比原來的好。

Logistic regression 的 cost function 如下:

J(\vec{w},b)=\frac{1}{m}\sum^{m}_{i=1}L(f_{\vec{w},b}(\vec{x}^{(i)},y^{(i)})

其中 L 是 loss function 如下:

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})= \begin{cases} -log(f_{\vec{w},b}(\vec{x}^{(i)})) & \text{if } y^{(i)}=1 \\ -log(1-f_{\vec{w},b}(\vec{x}^{(i)})) & \text{if } y^{(i)}=0 \end{cases}

我們可以將 loss function 裡的兩個式子合併成一個,如下。

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})=-y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)})) - (1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)}))

以下將 loss function 展開後的 cost function。

J(\vec{w},b)=-\frac{1}{m}\sum^{m}_{i=1} \left[ y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)})) + (1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)})) \right]

Gradient Descent

以下為 logistic regression 的 gradient descent 演算法。

\text{repeat \{ } \\\\ \phantom{xxxx} w_j=w_j-\alpha \frac{\partial}{\partial w_j} J(\vec{w},b) \\\\ \phantom{xxxx} b=b-\alpha \frac{\partial}{\partial w_j} J(\vec{w},b) \\\\ \}

其中 cost function 的導數計算方法如下:

\frac{\partial}{\partial w_j}J(\vec{w},b)=\frac{1}{m} \sum^{m}_{i=1} (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x_j^{(i)}

\frac{\partial}{\partial b}J(\vec{w},b)=\frac{1}{m} \sum^{m}_{i=1} (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})

Logistic regression 的 cost function 的導數計算方式看起來一樣,但其實他們的 fw,b 不一樣。

\text{Linear regression: } f_{\vec{w},b}(\vec{x})=\vec{w} \cdot \vec{x} +b \\ \text{Logistic regression: } f_{\vec{w},b}(\vec{x})=\frac{1}{1+e^{-(\vec{w} \cdot \vec{x} +b)}}

結語

Logistic regression 模型和 linear regression 很像。所以,在學習 logistic regression 之前,不仿先將 linear regression 學好。

參考

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

You May Also Like