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)