機器學習_學習筆記系列(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