邏輯迴歸也被稱爲對數機率迴歸,是一種分類算法,用條件概率分佈的形式表示
P(Y|X)
,這裏隨機變量
X
取值爲
n
維實數向量。
例如
x=(x1,x2,…,xn)
,
Y
取值爲
0
或
1
。
邏輯迴歸模型
邏輯迴歸的模型定義如下:
P(Y=1|x)=exp(w·x+b)1+exp(w·x+b)
P(y=0|x)=11+exp(w·x+b)
假設有一個二分類問題,輸出爲
y={0,1}
,而線性迴歸模型產生的預測值爲
z=wx+b
是實數值,我們希望有一個理想的階躍函數來幫我們實現z值到0/1值的轉化.
我們可以很自然的想到如下函數:
ϕ(z)=⎧⎩⎨⎪⎪00.51if z<0if z=0if z>0
但是由於該函數在定義域內不連續,而我們需要一個單調可微的函數來供我們使用,於是便找到了Sigmoid函數:
ϕ(z)=11+e−z
由於Sigmoid函數的取值範圍爲
[0,1]
,我們就可以將其視爲類1的後驗概率估計
P(y=1|x)
。說白了,就是如果有了一個測試點
x
,那麼就可以用Sigmoid 函數算出來的結果來當做該點x屬於類別1的概率大小。
於是,非常自然地,我們把Sigmoid函數計算得到的值大於等於0.5的歸爲類別1,小於0.5的歸爲類別0:
yˆ={10if ϕ(z)⩾ 0otherwise
邏輯迴歸的損失函數
邏輯迴歸模型的損失函數(誤差平方和)定義如下:
J(w)=∑i12(ϕ(z(i))−y(i))2
其中:
z(i)=wTx(i)+bi
,表示第
i
個樣本點;
y(i)
表示第
i
個樣本的真實值;
ϕ(z(i))
表示第
i
個樣本的預測值。
這時,如果我們將
ϕ(z)=11+e−z
帶入的話,會發現這是一個非凸函數,這就意味着代價函數(代價即預測值和實際值之間的差距)有着許多的局部最小值,這非常不利於我們求解。
左:非凸函數;右:凸函數
因此我們需要換一個思路去解決問題,我們注意到,在邏輯迴歸的分類任務中,分類結果非0即1,所以我們有:
P(y=1|x;w)=ϕ(z)
P(y=0|x;w)=1−ϕ(z)
其中:
ϕ(z)=ϕ(wTx+b)
;
P(y=1|x;w)
表示給定
w
,那麼
x
點
y=1
的概率大小。
於是上式可以整合爲:
P(y|x;w)=ϕ(z)y(1−ϕ(z))1−y
邏輯迴歸模型參數估計
求解
P(y|x;w)=ϕ(z)y(1−ϕ(z))1−y
中的參數
w
可以用極大似然估計(最大可能性估計)的方法:
L(w)=∏i=1nP(y(i)|x(i);w)=∏i=1n(ϕ(z(i)))y(i)(1−ϕ(z(i)))1−y(i)
等式兩邊做對數變換可得
l(w)=lnL(w)=∑i=1ny(i)ln(ϕ(z(i)))+(1−y(i))ln(1−ϕ(z(i)))
我們現在就得到了代價函數
l(w)
,爲了方便使用梯度下降法求解代價函數,我們取代價函數的相反數,然後將代價函數定義爲原代價函數的相反數:
J(w)=−l(w)=−∑i=1n[y(i)ln(ϕ(z(i)))+(1−y(i))ln(1−ϕ(z(i)))]
邏輯迴歸的模型求解
由於Sigmoid函數的自身性質,其對參數求偏導後:
ϕ(z)=11+e−z
⇒ϕ′(z)=dϕ(z)dz=ϕ(z)(1−ϕ(z))
偏導數推導過程:
接下來使用梯度下降法求解迴歸模型:
w:=w+∇w
其中
∇w=−ηJ(w)=−η∂J(w) 接下來使用梯度下降法求解迴歸模型:
其中
∇w=−ηJ(w)=−η∂J(w)∂wj=−η[−
w:=w+∇w