邏輯迴歸本質是分類問題,而且是二分類問題,不屬於迴歸,爲何把邏輯迴歸放到迴歸系統博客中呢?我們可以這樣理解,邏輯迴歸就是用迴歸的辦法來做分類。它是在線性迴歸的基礎上,通過Sigmoid函數進行了非線性轉換,從而具有更強的擬合能力。
Sigmoid函數
Sigmoid函數具體的計算公式如下:
g(z)=1+e−z1
當x爲0時,Sigmoid函數值爲0.5。隨着x的增大,對應的Sigmoid值將逼近於1;而隨着x的減小,Sigmoid值將逼近於0。兩種座標尺度下的Sigmoid函數圖。上圖的橫座標爲-5到5,這時的曲線變化較爲平滑;下圖橫座標的尺度足夠大,可以看到,在x = 0點處Sigmoid函數看起來很像階躍函數,如果橫座標刻度足夠大(上圖中的下圖),Sigmoid函數看起來很像一個階躍函數。
Logistic迴歸分類器
爲了實現Logistic迴歸分類器,我們可以在每個特徵上都乘以一個迴歸係數,然後把所有的結果值相加,將這個總和代入Sigmoid函數中,進而得到一個範圍在0~1之間的數值。任何大於0.5的數據被分入1類,小於0.5即被歸入0類。所以,Logistic迴歸也可以被看成是一種概率估計。
p=hθ(x)=g(θTx)=1+e−θTx1
所以說,Logistic迴歸分類器可以看成線性迴歸與sigmoid的混合函數,是一個二分類的模型(這裏是取的0和1,有的算法是+1和-1)
y={01
y^={0,P(y^=1)>p1,P(y^=0)>p
在用於分類時,實際上是找一個閾值,大於閾值的屬於1類別,小於的屬於0類別。(閾值是可根據具體情況進行相應變動的)
公式推導
|
y=1 |
y=0 |
p(y|x) |
θ |
1−θ |
我們假設
P(y=1│x;θ)=hθ(x)P(y=0│x;θ)=1−hθ(x)
把兩個式子結合
P(y│x;θ)=(hθ(x))y(1−hθ(x))1−y
這是因爲,我們期望的是,對於單個樣本
- 當y=1時,我們期望 hθ(x) 最大
- 當y=0時,我們期望 1−hθ(x) 最大
所以綜合起來:我們期望 P(y│x;θ)=(hθ(x))y(1−hθ(x))1−y 最大
我們可以對所有樣本取似然函數
L(θ)=p(y∣X;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))(1−y(i))
累乘不好求,我們可以求其對數似然函數
l(θ)=logL(θ)=i=1∑m(y(i)loghθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
最值的問題,我們可以求導。
∂θj∂l(θ)=i=1∑m(hθ(x(i))y(i)−1−hθ(x(i))1−y(i))⋅∂θj∂hθ(x(i))=i=1∑m(g(θTx(i))y(i)−1−g(θTx(i))1−y(i))⋅∂θj∂g(θTx(i))=i=1∑m(g(θTx(i))y(i)−1−g(θTx(i))1−y(i))⋅g(θTx(i))(1−g(θTx(i)))⋅∂θj∂(θTx(i))=i=1∑m(y(i)(1−g(θTx(i)))−(1−y(i))g(θTx(i)))⋅Xj(i)=i=1∑m(y(i)−g(θTx(i)))⋅Xj(i)
不難發現:和梯度下降的公式極其類似
i=1∑m(hθ(x(i))−y(i))xj(i)
這裏需要補充一下,在上面求導的過程中,第二行到第三行省略了Sigmoid求導的過程,具體如下:
g′(z)=(1+e−z1)′=(1+e−z)2e−z=1+e−z1⋅1+e−ze−z=1+e−z1⋅(1−1+e−z1)=g(z)⋅(1−g(z))
接着上面對數似然的求導結果。我們期望的是極大似然,可以進行一下轉換,類似於梯度下降來求 θ
θj=θj+αi=1∑m(y(i)−hθ(x(i)))⋅xj(i)
上式爲BGD
θj=θj+α(y(i)−hθ(x(i)))xj(i)
上式爲SGD
我們要讓對數似然函數最大,也就是他的相反數 −l(θ) 最小。而 −l(θ) 最小化,則可以看成損失函數,求其最小化:
loss=−l(θ)
先看一下極大似然估計
L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏mpiy(i)(1−pi)1−y(i)
l(θ)=lnL(θ)=i=1∑mln(piy(i)(1−pi)1−y(i))
注意,這裏 pi=hθ(x(i))=1+e−θTx(i)1
所以,我們可以得到損失函數:
loss=−l(θ)=−i=1∑m(y(i)ln(pi)+(1−y(i))ln(1−pi))=i=1∑m(−y(i)ln(hθ(x(i)))−(1−y(i))ln(1−hθ(x(i))))
這個結果就是交叉熵損失函數。
總結
就一句話:通過以上過程,會發現邏輯迴歸的求解,跟線性迴歸的求解基本相同。