邏輯回歸基本概念
什麼是邏輯回歸?
邏輯回歸就是這樣的一個過程:面對一個回歸或者分類問題,建立代價函數,然後通過優化方法疊代求解出最優的模型參數,然後測試驗證我們這個求解的模型的好壞。
Logistic 回歸雖然名字裡帶“回歸”,但是它實際上是一種分類方法,主要用于兩分類問題(即輸出隻有兩種,分别代表兩個類别)
回歸模型中,y是一個定性變量,比如y=0或1,logistic方法主要應用于研究某些事件發生的機率
概念解釋
Logistic Regression
推導過程
Logistic Regression
它的表達式是:
f ( x ) = 1 1 + e − θ f(x) = \frac{1}{1 + e^{-\theta}} f(x)=1+e−θ1
θ = W X + B \theta = WX + B θ=WX+B
可以發現,經過
sigmoid
函數轉換後, 輸出值是在
[0, 1]
之間,可以認為輸出是機率,下面就來詳細的推導:
推導
為了計算友善, 我們隻讨論二分類.
首先, 邏輯回歸進行了一個假設,
兩個類别都服從均值不同,方差相同(友善推導)的高斯分布
p ( y ∣ x = 0 ) = μ ( μ 0 , σ ) p(y|x=0) = \mu(\mu_0, \sigma) p(y∣x=0)=μ(μ0,σ)
p ( y ∣ x = 1 ) = μ ( μ 1 , σ ) p(y|x=1) = \mu(\mu_1, \sigma) p(y∣x=1)=μ(μ1,σ)
高斯分布是比較容易處理的分布,根據中心極限定理也知道,最終會收斂于高斯分布。
從資訊論的角度上看,當均值和方差已知時(盡管你并不知道确切的均值和方差,但是根據機率論,當樣本量足夠大時,樣本均值和方差以機率1趨向于均值和方差),高斯分布是熵最大的分布,為什麼要熵最大?因為最大熵的分布可以平攤你的風險(同一個值會有兩個點可以取到, 不确定性很大),這就好比不要把雞蛋放到同一個籃子裡,想想二分查找中,為什麼每次都是選取中間點作為查找點?就是為了平攤風險(假設方差相等隻是為了計算友善)。
風險
R i s k ( y = 0 ∣ x ) = λ 00 P ( y = 0 ∣ x ) + λ 01 P ( y = 1 ∣ x ) Risk(y=0|x) = \lambda_{00}P(y=0|x) + \lambda_{01}P(y = 1|x) Risk(y=0∣x)=λ00P(y=0∣x)+λ01P(y=1∣x)
R i s k ( y = 1 ∣ x ) = λ 10 P ( y = 0 ∣ x ) + λ 11 P ( y = 1 ∣ x ) Risk(y=1|x) = \lambda_{10}P(y=0|x) + \lambda_{11}P(y = 1|x) Risk(y=1∣x)=λ10P(y=0∣x)+λ11P(y=1∣x)
其中, R i s k ( y = 0 ∣ x ) Risk(y=0|x) Risk(y=0∣x)是把樣本預測為0時的風險, R i s k ( y = 1 ∣ x ) Risk(y=1|x) Risk(y=1∣x)是把樣本預測為1時的風險,
λ i j λ_{ij} λij是樣本實際标簽為
j
時,卻把它預測為
i
是所帶來的風險。
我們認為預測正确并不會帶來風險,是以 λ 00 λ_{00} λ00和 λ 11 λ_{11} λ11都為0,此外,我們認為當标簽為0而預測為1 和 當标簽為1而預測為0,這兩者所帶來的風險是相等的,是以 λ 10 λ_{10} λ10和 λ 01 λ_{01} λ01相等,友善起見,我們記為λ。但在一些領域裡,比如醫學、風控等,這些λ在大多數情況下是不相等的,有時候我們會選擇“甯可錯殺一一千也不能放過一個”;
那麼我們簡化後的表達式:
R i s k ( y = 0 ∣ x ) = λ P ( y = 1 ∣ x ) Risk(y=0|x) = \lambda P(y = 1|x) Risk(y=0∣x)=λP(y=1∣x)
R i s k ( y = 1 ∣ x ) = λ P ( y = 0 ∣ x ) Risk(y=1|x) = \lambda P(y=0|x) Risk(y=1∣x)=λP(y=0∣x)
根據最小化風險的原則,我們通常會選擇風險較小的。
比如:
R i s k ( y = 0 ∣ x ) < R i s k ( y = 1 ∣ x ) Risk(y=0|x) < Risk(y=1|x) Risk(y=0∣x)<Risk(y=1∣x)
這就說明了預測為第
類的風險小于預測為第
1
類的風險。
可以得到:
R i s k ( y = 0 ∣ x ) R i s k ( y = 1 ∣ x ) < 1 \frac{Risk(y=0|x)}{Risk(y=1|x)} < 1 Risk(y=1∣x)Risk(y=0∣x)<1
P ( y = 1 ∣ x ) P ( y = 0 ∣ x ) < 1 \frac{P(y = 1|x)}{P(y=0|x)} < 1 P(y=0∣x)P(y=1∣x)<1
就是說明預測第
1
類的機率小于第
類的機率。
我們對不等式兩邊分别取對數
l o g P ( y = 1 ∣ x ) P ( y = 0 ∣ x ) < 0 log\frac{{P(y = 1|x)}}{{P(y=0|x)}} < 0 logP(y=0∣x)P(y=1∣x)<0
根據貝葉斯公式:
l o g P ( x ∣ y = 1 ) p ( y = 1 ) P ( x ∣ y = 0 ) p ( y = 0 ) < 0 log\frac{P(x|y = 1)p(y=1)}{P(x|y=0)p(y=0)} < 0 logP(x∣y=0)p(y=0)P(x∣y=1)p(y=1)<0
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) + l o g p ( y = 1 ) p ( y = 0 ) < 0 log\frac{P(x|y = 1)}{P(x|y=0)} + log\frac{p(y=1)}{p(y=0)} < 0 logP(x∣y=0)P(x∣y=1)+logp(y=0)p(y=1)<0
我們開始假設過,兩個類别分别服從均值不等,方差相等的高斯分布,根據高斯分布的公式有:
高斯分布
g ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 g(x) = \frac{1}{2\pi\sigma}e^{-\frac{(x - \mu)^2}{2\sigma^2}} g(x)=2πσ1e−2σ2(x−μ)2
忽略常數項(方差也是相等的)
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) + l o g e ( ( x − μ 0 ) 2 2 σ 2 − ( x − μ 1 ) 2 2 σ 2 ) log\frac{P(x|y = 1)}{P(x|y=0)} + loge^{(\frac{(x - \mu_0)^2}{2\sigma^2} - \frac{(x - \mu_1)^2}{2\sigma^2})} logP(x∣y=0)P(x∣y=1)+loge(2σ2(x−μ0)2−2σ2(x−μ1)2)
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) + ( ( x − μ 0 ) 2 2 σ 2 − ( x − μ 1 ) 2 2 σ 2 ) < 0 log\frac{P(x|y = 1)}{P(x|y=0)} + (\frac{(x - \mu_0)^2}{2\sigma^2} - \frac{(x - \mu_1)^2}{2\sigma^2}) < 0 logP(x∣y=0)P(x∣y=1)+(2σ2(x−μ0)2−2σ2(x−μ1)2)<0
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) < ( x − μ 1 ) 2 2 σ 2 − ( x − μ 0 ) 2 2 σ 2 log\frac{P(x|y = 1)}{P(x|y=0)} < \frac{(x - \mu_1)^2}{2\sigma^2} - \frac{(x - \mu_0)^2}{2\sigma^2} logP(x∣y=0)P(x∣y=1)<2σ2(x−μ1)2−2σ2(x−μ0)2
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) < μ 0 σ 2 x − μ 1 σ 2 x + C log\frac{P(x|y = 1)}{P(x|y=0)} < \frac{\mu_0}{\sigma^2}x - \frac{\mu_1}{\sigma^2}x + C logP(x∣y=0)P(x∣y=1)<σ2μ0x−σ2μ1x+C
C
是常熟,可以使用矩陣的表示。
l o g P ( x ∣ y = 1 ) P ( x ∣ y = 0 ) < θ X log\frac{P(x|y = 1)}{P(x|y=0)} < \theta{X} logP(x∣y=0)P(x∣y=1)<θX
詳細推導
對值取幂,以及等式取等号計算。
P ( y = 1 ∣ x ) P ( y = 0 ∣ x ) = e θ x \frac{P(y=1|x)}{P(y=0|x)} = e^{\theta x} P(y=0∣x)P(y=1∣x)=eθx
= P ( y = 1 ∣ x ) 1 − P ( y = 1 ∣ x ) = e θ x = \frac{P(y=1|x)}{1 - P(y=1|x)} = e^{\theta x} =1−P(y=1∣x)P(y=1∣x)=eθx
= 1 − P ( y = 1 ∣ x ) P ( y = 1 ∣ x ) = e − θ x = \frac{1 - P(y=1|x)}{P(y=1|x)} = e^{-\theta x} =P(y=1∣x)1−P(y=1∣x)=e−θx
= 1 P ( y = 1 ∣ x ) − 1 = e − θ x = \frac{1}{P(y=1|x)} - 1 = e^{-\theta x} =P(y=1∣x)1−1=e−θx
= 1 P ( y = 1 ∣ x ) = e − θ x + 1 = \frac{1}{P(y=1|x)} = e^{-\theta x} + 1 =P(y=1∣x)1=e−θx+1
= P ( y = 1 ∣ x ) = 1 e − θ x + 1 = P(y=1|x) = \frac{1}{e^{-\theta x} + 1} =P(y=1∣x)=e−θx+11
以下是實作的一些截圖
優化我們采用梯度下降算法
交叉熵損失函數
最終效果
電腦端檢視完整代碼
——————————————————————————————————
Mo (網址:momodel.cn )是一個支援 Python 的人工智能模組化平台,能幫助你快速開發訓練并部署 AI 應用。期待你的加入。