機器學習_學習筆記系列(08):羅吉斯回歸(Logistic Regression)

--

在先前的章節中,我們介紹運用感知器做二元分類,而感知器所使用的核心方程式為sign function,也就是當數值大於0會等於1,若小於0則等於-1。

Sigmoid function

今天我們來介紹一個新的方程式叫做Sigmoid function。Sigmoid function是深度學習中,非常常會用到的方程式,其通常會用σ來表示,而其方程式為

把他畫出來就長這樣:

我們可以看到當數值越來越大,越接近1,若越來越小,則越接近0,另外數值等於0,時輸出等於0.5。

所以根據Sigmoid function的特性,我們可以把它拿來用在分類的問題上,想像一下,假使我們在進行二元分類,我們可以設計一個演算法,讓其中一個輸入為正、標記1,另一個輸入為負、標記0,再套用Sigmoid function,就可以達到分類的效果。而這個用在分類上就是所謂的Logistic Regression

羅吉斯回歸Logistic Regression

在介紹Logistic regression之前,我們得先講一個重要的概念,很多人會想問說,regression明明就是回歸,像linear regression一樣,最後得出一條最佳方程式,使每個預測點和真實點相差達到最小。那我們現在明明在做分類,為什麼不叫做,logistic classification呢?

透過下面logistic regression的方程式大家就會瞭解了

今天我們一樣討論,平面的二元分類問題,所以我們的假設方程式可以寫成:

在linear classification也就是用我們的感知器做分類,一樣對於平面二元分類問題上,我們的假設方程式為h(x)=sign(w0+w1*x1+w0*x2),然後我們是從所有的點裡面隨機挑一個點檢查他有沒有分類錯誤,如果沒有就繼續挑下一個,有的話則以那一個錯誤的點來修正方程式。

而在logistic regression中,我們的目標是想讓這個h(x)越接近f(x)越好,也就是希望h(x)越接近y越好,這個就是regression的概念,希望我們預測值和實際值的差距越來越小,所以才會叫做logistic regression。

接下來我們有了logistic regression的假設方程式,下一步我們需要設計一個方程式能夠讓我們的方程式一直更新,也就是給定我們的cost function,然後一樣利用最小化cost function和梯度下降,來設計我們的更新方程式。那對於logistic regression的cost function為:

其中y只為0或1。而為什麼要這樣設計呢?我們一樣針對平面二元分類問題把他暴力展開。

我們先找出sigmoid function的微分:

接著列出cost function分別對w0、w1、w2的微分:

看到最後我真的是跪了這些科學家啊!一個超級無敵複雜的cost function,最後竟然可以變成簡單的h(x)-y,也就是預測值減實際值。

不過關於設計cost function這件事情,可以延伸到機器學習的另一個知識基礎convex optimization。等機器學習系列寫完可能也會想來寫一個convex optimization或是probability graphical model之類的系列。不過可能是一年後了。

所以最後有了上述的方程式,我們就可以用梯度下降更新方程式。

來實現二元分類的問題。

我們可以由圖中看到,藍色的點標記為1,紅色的點標記為0,而黑色線就是我們logistic regression迭代後最中找到的最佳解。

Python Sample Code

Github:

Reference:

[1] Andrew Ng, Machine Learning, Coursera

***本系列完全沒有開任何營利***

作者:劉智皓

linkedin: CHIH-HAO LIU

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet