1. 程式人生 > >邏輯迴歸(logistic regression)的本質——極大似然估計

邏輯迴歸(logistic regression)的本質——極大似然估計

前言

邏輯迴歸是分類當中極為常用的手段,因此,掌握其內在原理是非常必要的。我會爭取在本文中儘可能簡明地展現邏輯迴歸(logistic regression)的整個推導過程。

什麼是邏輯迴歸

邏輯迴歸在某些書中也被稱為對數機率迴歸,明明被叫做迴歸,卻用在了分類問題上,我個人認為這是因為邏輯迴歸用了和迴歸類似的方法來解決了分類問題。
假設有一個二分類問題,輸出為y{0,1},而線性迴歸模型產生的預測值為z=wTx+b是實數值,我們希望有一個理想的階躍函式來幫我們實現z值到0/1值的轉化。

ϕ(z)={0if z < 00.5if z = 01if z > 0

然而該函式不連續,我們希望有一個單調可微的函式來供我們使用,於是便找到了Sigmoidfunction來替代。
ϕ(z)=11+ez

兩者的影象如下圖所示(圖片出自文獻2)
sigmoid

圖1:sigmoid & step function

有了Sigmoidfuction之後,由於其取值在[0,1],我們就可以將其視為類1的後驗概率估計p(y=1|x)。說白了,就是如果有了一個測試點x,那麼就可以用Sigmoidfuction算出來的結果來當做該點x屬於類別1的概率大小。
於是,非常自然地,我們把Sigmoidfuction計算得到的值大於等於0.5的歸為類別1,小於0.5的歸為類別0
y^={1ifϕ(z)0.50otherwise

同時邏輯迴歸與自適應線性網路非常相似,兩者的區別在於邏輯迴歸的啟用函式是Sigmoidfunction而自適應線性網路的啟用函式是y=x,兩者的網路結構如下圖所示(圖片出自文獻1)。
adaline

圖2:自適應線性網路

logisticRegression

圖3:邏輯迴歸網路

邏輯迴歸的代價函式

好了,所要用的幾個函式我們都有了,接下來要做的就是根據給定的訓練集,把引數w給求出來了。要找引數w,首先就是得把代價函式(cost function)給定義出來,也就是目標函式。
我們第一個想到的自然是模仿線性迴歸的做法,利用誤差平方和來當代價函式。

J(w)=i12(ϕ(z(i))y(i))2

其中,z(i)=wTx(i)+bi表示第i個樣本點,y(i)表示第