邏輯回歸模型
雖然邏輯回歸姓 回歸,不過其實它的真實身份是二分類器。介紹完了姓,我們來介紹一下它的名字,邏輯斯蒂。這個名字來源於邏輯斯蒂分布:
邏輯斯蒂分布
設X是連續隨機變量,X服從邏輯斯蒂分布是指X具有下列的分布函數和密度函數:

上式中,μ 表示位置參數,γ>0 為形狀參數。
有沒有發現F(x)是啥?有圖你就知道真相了:
有沒有發現右邊很熟悉?沒錯,就是sigmoid 曲線,這個曲線是以點( μ, 0.5) 為中心對稱。從圖中可以看出,曲線在中心附近增長速度較快,而形狀參數 γ 值越小,曲線在中心附近增長越快,請自行腦補一下。
sigmoid曲線有幾個特性:
1.x趨向正無窮時F(x)趨近於1
2.x趨向負無窮時F(x)趨近於0
3.x在0處為0.5
它的這些特性,決定它非常適合用於當作基於概率的二項分類函數。類似的還有正態分布的分布函數,和它非常類似,如果選用正態分布,則是貝葉斯邏輯回歸(Bayesian logistic regression)。
邏輯斯諦回歸的采用的是最大似然估計的思想。對於給定的訓練數據集T = {(x1, y1),(x2, y2),......(xn, yn)},我們找到它的似然函數(即它發生的概率),如果能使似然函數取得最大值,那么就是讓這個樣本發生的概率最大(這個概率是個聯合概率)。
我們看一下邏輯回歸的似然函數。
L(w)取得極大值,則需要yi為1時,P(Y = 1 | x)盡量的大,yi為0時,P(Y = 1 | x)盡量的小。
我們的概率函數P(Y = 1 | x)為
P (Y = 1 | x) 為sigmod函數(等價形式),為了使yi為1時,P(Y = 1 | x)盡量的大,yi為0時,P(Y = 1 | x)盡量的小。我們需要調整w⋅x,使得yi 為1時,w⋅x盡量取比較大的值,位於原點右側較遠的地方,yi為0時,w⋅x盡量位於原點左側較遠的地方,即它發生的概率盡量小。換句話說,我們調整w⋅x使得yi為1盡量發生,為0盡量不要發生。這個時候似然函數取得最大值
借用andrew ng老師的圖
我們要找到w⋅x = 0 這條曲線,使得樣本x盡量被分成兩部分,一類發生的概率盡量大,另一類概率盡量小。樣本點與w⋅x = 0 的距離,即誤差,服從邏輯斯諦分布。
二項邏輯回歸模型
一個事件的幾率(odds):指該事件發生與不發生的概率比值,若事件發生概率為p,那么事件發生的幾率就是
那么該事件的對數幾率(log odds或者logit)就是:
那么,對邏輯回歸而言,Y=1的對數幾率就是:
也就是說,輸出Y=1的對數幾率是由輸入x的線性函數表示的模型,這就是 邏輯回歸模型。當 w⋅x的值越接近正無窮,P(Y=1|x) 概率值也就越接近1.
模型的數學形式確定后,剩下就是如何去求解模型中的參數。在統計學中,常常使用極大似然估計法來求解,即找到一組參數,使得在這組參數下,我們的數據的似然度(概率)最大。
設:
似然函數:
對數似然函數:
現在要求 w 使得L(w) 最大,有的人可能會有疑問:
在機器學習領域,我們更經常遇到的是損失函數的概念,其衡量的是模型預測錯誤的程度。常用的損失函數有0-1損失,log損失,hinge損失等。通常是最小化損失函數,這里為啥求極大似然估計?
實際上,對數似然損失在單個數據點上的定義為:
如果取整個數據集上的平均對數似然損失,我們恰好可以得到:
即在邏輯回歸模型中,我們最大化似然函數和最小化對數似然損失函數實際上是等價的。
接下來就是對L(w)求極大值(也可認為是求J(w)的最小值),得到w的估計值。邏輯回歸學習中通常采用的方法是梯度下降法 和 牛頓法。
[先跑個題],講到求極值的方法,突然想到有幾個可視化的gif圖,能夠很直觀地體現各種算法的優劣,好東西當然要分享了。
Imgur 網友通過可視化方法,對比了SGD, momentum, Nesterov, AdaGrad, AdaDelta,
RMSProp等優化算法在Long Valley, Beale’s Function及Saddle Point情況下的性質。
Long Valley:
Beale’s Function:
Saddle Point:
以后會專門寫一篇來講求極值的方法,這是題外話了,我們還是繼續回歸邏輯吧,哈哈。
下面介紹使用梯度下降法來求解邏輯回歸問題。
使用梯度下降法(Gradient Descent)求解邏輯回歸
算法(梯度下降法求解邏輯回歸)
輸入:目標函數:J(w)(對數似然損失函數),梯度函數: g(w)=∇J(w), 計算精度ϵ
輸出:J(w) 的極小值點 w∗
過程:
(1) 取初始值 w0∈Rn, 令k=0
(2) 計算J(wk)
(3) 計算梯度 gk=g(wk)=∇J(w)
若||gk||<ϵ ,停止迭代,令
否則,令pk=−g(wk),求λk,使得
(4) 令wk+1=wk+λkpk,計算 J(wk+1)
當||J(wk+1)−J(wk)||<ϵ 或 ||wk+1−wk||<ϵ,停止迭代,令
(5) 否則,令k=k+1,轉(3).
邏輯回歸的正則化
當模型的參數過多時,很容易遇到過擬合的問題。而正則化是結構風險最小化的一種實現方式,通過在經驗風險上加一個正則化項,來懲罰過大的參數來防止過擬合。
正則化是符合奧卡姆剃刀(Occam’s razor)原理的:在所有可能選擇的模型中,能夠很好地解釋已知數據並且十分簡單的才是最好的模型。
我們來看一下underfitting,fitting跟overfitting的情況:
顯然,最右這張圖overfitting了,原因可能是能影響結果的參數太多了。典型的做法在優化目標中加入正則項,通過懲罰過大的參數來防止過擬合:
p=1或者2,表示L1 范數和 L2范數,這兩者還是有不同效果的。
L1范數:是指向量中各個元素絕對值之和,也有個美稱叫“稀疏規則算子”(Lasso regularization)。那么,參數稀疏 有什么好處呢?
L2范數:它有兩個美稱,在回歸里面,有人把有它的回歸叫“嶺回歸”(Ridge Regression),有人也叫它“權值衰減”(weight decay)。
接下來我們思考一下為什么L1范式會產生稀疏性。
假設代價函數 L 與某個參數 x 的關系如圖所示:
則最優的 x 在綠點處,x 非零。
現在施加 L2 regularization,新的代價函數()如圖中藍線所示:
施加L2范式的實質是在原來函數曲線上上移一個拋物線的位移,雖然拋物線在0處取得最小值,但是拋物線在0處過於平緩。最優的 x 在黃點處,x 的絕對值減小了,但依然非零。
而如果施加 L1 regularization,則新的代價函數()如圖中粉線所示:
兩種 regularization 能不能把最優的 x 變成 0,取決於原先的費用函數在 0 點處的導數。
如果本來導數不為 0,那么施加 L2 regularization 后導數依然不為 0,最優的 x 也不會變成 0。
而施加 L1 regularization 時,只要 regularization 項的系數 C 大於原先費用函數在 0 點處的導數的絕對值,x = 0 就會變成一個極小值點。
上面只分析了一個參數 x。事實上 L1 regularization 會使得許多參數的最優值變成 0,這樣模型就稀疏了。