【機器學習】Logistic Regression 學習筆記

 

邏輯迴歸模型

雖然邏輯迴歸姓 迴歸,不過其實它的真實身份是二分類器。介紹完了姓,咱們來介紹一下它的名字,邏輯斯蒂。這個名字來源於邏輯斯蒂分佈:git

邏輯斯蒂分佈

設X是連續隨機變量,X服從邏輯斯蒂分佈是指X具備下列的分佈函數密度函數: 算法

上式中,μ 表示位置參數γ>0 爲形狀參數。機器學習

 

有沒有發現F(x)是啥?有圖你就知道真相了:函數

此處輸入圖片的描述

有沒有發現右邊很熟悉?沒錯,就是sigmoid 曲線,這個曲線是以點( μ, 0.5) 爲中心對稱。從圖中能夠看出,曲線在中心附近增加速度較快,而形狀參數 γ 值越小,曲線在中心附近增加越快,請自行腦補一下。學習

 

 sigmoid曲線有幾個特性:優化

1.x趨向正無窮時F(x)趨近於1atom

2.x趨向負無窮時F(x)趨近於0spa

3.x在0處爲0.5blog

它的這些特性,決定它很是適合用於看成基於機率的二項分類函數。相似的還有正態分佈的分佈函數,和它很是相似,若是選用正態分佈,則是貝葉斯邏輯迴歸(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,那麼事件發生的概率就是

odds=p1p

那麼該事件的對數概率(log odds或者logit)就是: 

logit(p)=logp1p

那麼,對邏輯迴歸而言,Y=1對數概率就是: 

logP(Y=1|x)1P(Y=1|x)=wx

 

也就是說,輸出Y=1的對數概率是由輸入x線性函數表示的模型,這就是 邏輯迴歸模型。當 wx的值越接近正無窮,P(Y=1|x) 機率值也就越接近1.

模型的數學形式肯定後,剩下就是如何去求解模型中的參數。在統計學中,經常使用極大似然估計法來求解,即找到一組參數,使得在這組參數下,咱們的數據的似然度(機率)最大。

設:

P(Y=1|x)=π(x),P(Y=0|x)=1π(x)

 

似然函數:

L(w)=[π(xi)]yi[1π(xi)]1yi

 

對數似然函數:

lnL(w)=[yilnπ(xi)+(1yi)ln(1π(xi))]
=[yilnπ(xi)1π(xi)+ln(1π(xi))]
=[yi(wxi)ln(1+ewxi)]

 

如今要求 w 使得L(w) 最大,有的人可能會有疑問:

在機器學習領域,咱們更常常遇到的是損失函數的概念,其衡量的是模型預測錯誤的程度。經常使用的損失函數有0-1損失,log損失,hinge損失等。一般是最小化損失函數,這裏爲啥求極大似然估計?

實際上,對數似然損失在單個數據點上的定義爲: 

ylnp(y|x)(1y)ln[1p(y|x)]=[yilnπ(xi)+(1yi)ln(1π(xi))]

 

若是取整個數據集上的平均對數似然損失,咱們剛好能夠獲得: 

J(w)=1NlnL(w)

 

即在邏輯迴歸模型中,咱們最大化似然函數最小化對數似然損失函數其實是等價的。

接下來就是對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) 取初始值 w0Rn, 令k=0 
(2) 計算J(wk) 

J(wk)=1NlnL(wk)lnL(wk)
=[yi(wkxi)ln(1+ewkxi)]

 

(3) 計算梯度 gk=g(wk)=J(w) 

g(wk)=[xiyixiewkxi1+ewkxi]

 

 

=[xiyiπ(xi)]

 

||gk||<ϵ ,中止迭代,令

w=wk

 

不然,令pk=g(wk),求λk,使得

J(wk+λkpk)=min(J(wk+λpk))

 

(4) 令wk+1=wk+λkpk,計算 J(wk+1) 
||J(wk+1)J(wk)||<ϵ 或 ||wk+1wk||<ϵ,中止迭代,令

w=wk+1

 

(5) 不然,令k=k+1,轉(3).

邏輯迴歸的正則化

當模型的參數過多時,很容易遇到過擬合的問題。而正則化是結構風險最小化的一種實現方式,經過在經驗風險上加一個正則化項,來懲罰過大的參數來防止過擬合。

正則化是符合奧卡姆剃刀(Occam’s razor)原理的:在全部可能選擇的模型中,可以很好地解釋已知數據而且十分簡單的纔是最好的模型。

咱們來看一下underfitting,fitting跟overfitting的狀況:

此處輸入圖片的描述

顯然,最右這張圖overfitting了,緣由多是能影響結果的參數太多了。典型的作法在優化目標中加入正則項,經過懲罰過大的參數來防止過擬合: 

J(w)=>J(w)+λ||w||p

 

p=1或者2,表示L1 範數和 L2範數,這二者仍是有不一樣效果的。

L1範數:是指向量中各個元素絕對值之和,也有個美稱叫「稀疏規則算子」(Lasso regularization)。那麼,參數稀疏 有什麼好處呢?

 

L2範數:它有兩個美稱,在迴歸裏面,有人把有它的迴歸叫「嶺迴歸」(Ridge Regression),有人也叫它「權值衰減」(weight decay)。

接下來咱們思考一下爲何L1範式會產生稀疏性。

假設代價函數 L 與某個參數 x 的關係如圖所示:

則最優的 x 在綠點處,x 非零。

如今施加 L2 regularization,新的代價函數(L + Cx^2)如圖中藍線所示:

施加L2範式的實質是在原來函數曲線上上移一個拋物線的位移,雖然拋物線在0處取得最小值,可是拋物線在0處過於平緩。最優的 x 在黃點處,x 的絕對值減少了,但依然非零。

而若是施加 L1 regularization,則新的代價函數(L + C|x|)如圖中粉線所示:

施加L1範式的實質是在原來函數曲線上上移一個V形折線的位移,折線在0處取得最小值,只要係數C足夠大,就可以使得代價函數在0處取得最小值。最優的 x 就變成了 0。這裏利用的就是絕對值函數(L1)的尖峯。 兩種 regularization 能不能把最優的 x 變成 0,取決於原先的費用函數在 0 點處的導數。 若是原本導數不爲 0,那麼施加 L2 regularization 後導數依然不爲 0,最優的 x 也不會變成 0。 而施加 L1 regularization 時,只要 regularization 項的係數 C 大於原先費用函數在 0 點處的導數的絕對值,x = 0 就會變成一個極小值點。 上面只分析了一個參數 x。事實上 L1 regularization 會使得許多參數的最優值變成 0,這樣模型就稀疏了。
相關文章
相關標籤/搜索