---
# System prepended metadata

title: Logistic Regression
tags: [李宏毅]

---

Logistic Regression
===

###### tags: `李宏毅`

## 課程資訊
* [Youtube](https://www.youtube.com/watch?v=hSXFuypLukA&ab_channel=Hung-yiLee)
* [PDF](https://drive.google.com/file/d/1wz4OmSyhOLdaLgYKQe33MePsPWn9EOwt/view?usp=sharing)

## 實作步驟
1. Function Set
2. Goodness of a Function
3. Find the best function

![](https://i.imgur.com/L63L5N8.png)


### 1. Function Set
定義模型的樣子，以下圖為例，把每個輸入乘以一個 w(weight)，然後加上 b(bias) 得到的結果 z 再經過 Sigmoid Function $σ(z)=\dfrac{1}{1+e^{-z}}$ 就會是 Class1 的機率。
![](https://i.imgur.com/hKwHLmd.png)


在這個步驟 1，Logistic Regression 和 Linear Regression 的差別在於 Logistic Regression 的輸出會在 0~1 之間，Linear Regression 則是輸出多少都可以。

### 2. Goodness of a Function
目標就是找到 w、b 最大化 Training Data 的對應類別的機率。
![](https://i.imgur.com/TDJ0JUh.png)


改寫 Loss Function 變成最小化 $-lnL(w,b)$，這樣就可以把 $f_{w,b}(x^1)$、$f_{w,b}(x^2)$ 相加。另外把實際的類別，預測正確的為 1，反之為 0。
![](https://i.imgur.com/HIR2GNW.png)


最後把它們 Summation，然後把實際的機率(0, 1) 和預測的機率取 Cross Entropy，即 $H(p,q)=-\sum_{x}^{}p(x)ln(q(x))$，算出來的結果是 Loss。意義上就是希望兩邊的結果越相近越好。
![](https://i.imgur.com/P7atGST.png)

在這個步驟 2，Logistic Regression 和 Linear Regression 的差別在於 Logistic Regression 是用 Cross Entropy 的和，而 Lienar Regression 是用 Square Error。

在 Logistic Regression 不用 Square 的原因是如果 $f_{w,b}$ 等於 0 或 1，微分會變成 0。這會造成如果 Training Data 離正確值很遠，修正的幅度卻很小。
![](https://i.imgur.com/KF1a27r.png)


### 3. Find the best function
把 L 對每個 $w_i$ 做偏微分，然後乘以 Learning Rate 做調整，偏微分結果如下圖。
![](https://i.imgur.com/UrhPsHe.png)


在這個步驟 3，Logistic Regression 和 Linear Regression 偏微分後的結果是一樣的，都是 $w_i = wi-η\sum_{n}^{}-(y^n-f_{w,b}(x^n))x_i^n$。


## Discriminative vs Generative
兩者差在找 w、b 的方式，Discriminative 是直接根據 Training data 去找 w、b；而前面使用的 Generative 則是有假設一些情況，例如假設它是 Gaussian、Naive Bayes 等等。兩者找到的結果是不同的，Discriminative 的結果是比較好的。
![](https://i.imgur.com/KgkS92O.png)


如果 Training Data 很少，使用 Generative Model 會有一些自己的假設，所以反而可以表現得比 Discriminative Model 好。


## Multi-class Classification
每個 Class 都會有自己的 w_i、b_i，每個 z_i 就等於 $w_i*x+b_i$，然後放入 Softmax 算出機率。那為什麼是用 exponential?
$y_i=\dfrac{e^{z_i}}{\sum_{}^{}e^{z_i}}$

最後一樣是用 Cross Entropy 當 Loss Function。
![](https://i.imgur.com/xPk67la.png)

## Limit of Logistic Regression
無法把交錯的類別分開，也是說只能用直線區分。可以使用 Feature Transformation，把資料點轉移到另一個 Space。不過不一定能找到好的 Transformation，所以問題就會變成怎麼找到好的 Transformation Function。
![](https://i.imgur.com/vPwwCwL.png)

可能的解決方法是 Cascading Logistic Regression Model。把 Logistic Regression 拿來做 Feature Transformation，然後再用另一個 Logistic Regression 做分類。
![](https://i.imgur.com/Qn0jkl5.png)


所以其實 Logistic Regression 的結果不只可以是預測值，也可以是另一個 Logistic Regression，當很多 Logistic Regression 疊起來時就是 Neural Network。
![](https://i.imgur.com/BeKJzTy.png)
