邏輯迴歸:損失函式與梯度下降

夜空中最亮的不咚發表於2018-04-10
轉載 原地址:https://blog.csdn.net/jediael_lu/article/details/77852060

1.1 sigmoid函式

由於二分類結果是1或者0,這與數學的階躍函式很類似,但是階躍函式在x=0的位置會發生突變,這個突變在數學上很難處理。所以一般使用sigmoid函式來擬合:

g(z)=11+e−z(1)

具體應用到邏輯迴歸演算法中:

z=ω0+ω1x1+ω2x2+......+ωnxn=∑i=0nωixi=ωTX(2)

其中xi表示樣本屬性(對於我們而言,就是標籤IP)的值, ωi表示這個屬性對應的係數(也就是演算法需要計算的內容)。注意這裡將x0與ω0也代入了上述公式,其中前者恆為1。於是問題就變成了在訓練樣本中,已知屬性x與最終分類結果y(1或者0)時,如何求得這些係數 ωi,使得損失最小。

1.2 極大似然估計MLE與損失函式

在機器學習理論中,損失函式(loss function)是用來衡量模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函式,損失函式越小,模型越優(還需考慮過擬合等問題)。損失函式是經驗風險函式的核心部分,也是結構風險函式重要組成部分。模型的結構風險函式包括了經驗風險項和正則項,通常可以表示成如下式子

ω∗=argminω1m∑i=1mL(yi,f(xi;ω))+λ Φ(ω)(3)

其中m表示樣本的數量。對於邏輯迴歸,其loss function是log損失,這可以通過極大似然估計進行推導得到。

首先,給定一個樣本x,可以使用一個線性函式對自變數進行線性組合,即上述的(2)式子:

z=ω0+ω1x1+ω2x2+......+ωnxn=∑i=0nωixi=ωTX(4)

根據sigmoid函式,我們可以得出預測函式的表示式為:

hω(x)=g(ωTx)=11+e−ωTx(5)

上式表示y=1的預測函式為hω(x)。在這裡,假設因變數y服從伯努利分佈,取值為0和1,那麼可以得到下列兩個式子:
p(y=1|x)=hω(x)(6)

p(y=0|x)=1−hω(x)(7)

而對於上面的兩個表示式,通過觀察,我們發現,可以將其合併為以下表示式:
p(y|x)=hω(x)y(1−hω(x))1−y(8)

根據上面的式子,給定一定的樣本之後,我們可以構造出似然函式,然後可以使用極大似然估計MLE的思想來求解引數。但是,為了滿足最小化風險理論,我們可以將MLE的思想轉化為最小化風險化理論,最大化似然函式其實就等價於最小化負的似然函式。對於MLE,就是利用已知的樣本分佈,找到最有可能(即最大概率)導致這種分佈的引數值;或者說是什麼樣的引數才能使我們觀測到目前這組資料的概率最大。使用MLE推導LR的loss function的過程如下。
首先,根據上面的假設,寫出相應的極大似然函式(假定有m個樣本):
L(ω)=∏i=1mp(yi|xi;ω)=∏i=1mhω(xi)yi(1−hω(xi)1−yi(9)

上述式子中的ω及xi均為向量,並未顯示其轉置。

直接對上面的式子求導會不方便,因此,為了便於計算,我們可以對似然函式取對數,經過化簡可以得到下式的推導結果:

logL(ω)=∑i=1mlog[(hω(xi)yi(1−hω(xi))1−yi)]=∑i=1m[yiloghω(xi)+(1−yi)log(1−hω(xi))](10)

因此,損失函式可以通過最小化負的似然函式得到,即下式:

J(ω)=−1m∑i=1m[yiloghω(xi)+(1−yi)log(1−hω(xi)](11)

在周志華版的機器學習中,將sigmiod函式代入hω(xi),並使用ln代替log,上述公式表示為:

J(ω)=−1m∑i=1m[yilnhω(xi)+(1−yi)ln(1−hω(xi)]=−1m∑i=1m[yiln11+e−ωxi+(1−yi)lne−ωxi1+e−ωxi]=−1m∑i=1m[ln11+eωxi+yiln1e−ωxi]=1m∑i=1m[−yiwxi+ln(1+eωxi)](12)

在某些資料上,還有另一種損失函式的表達形式,但本質是一樣的,如下【推導見下面1.4】:

J(ω)=1m∑i=1mlog(1+e−yiωx)(13)

1.3 梯度下降

這裡就以梯度下降為例對邏輯迴歸進行求解,其迭代公式的推導過程如下:

∂J(ω)∂ωj=−1m∑im[yi(1−hω(xi))⋅(−xi,j)+(1−yi)hω(xi)⋅(xi,j)]=−1m∑im(−yi⋅xi,j+hω(xi)⋅xi,j)=−1m∑im(hω(xi)−yi)xi,j(12)

上述中xi,j表示第i個樣本的第j個屬性的取值。
於是,ω的更新方式為:

ωj+1=ωj−α∑i=1m(hω(xi)−yi)xx,j(13)

對於隨機梯度下降,每次只取一個樣本,則ω的更新方式為:

ωj+1=ωj−α(hω(x)−y)xj(13)

其中x為這個樣本的特徵值,y為這個樣本的真實值,xj為這個樣本第j個屬性的值。

這使用周志華版的損失函式更容易得出這個結論。

1.4 另一種形式的損失函式及其梯度

與上面相同,根據sigmoid函式,我們可以得出預測函式的表示式為:

hω(x)=g(ωTx)=11+e−ωTx(5)

上式表示y=1的預測函式為hω(x)。
但與上面不同,我們假設樣本的分佈為{-1,1},則
p(y=1|x)=hω(x)(14)

p(y=−1|x)=1−hω(x)(15)

對於sigmoid函式,有以下特性(簡單推導一下就可以得到):
h(−x)=1−h(x)(14)

於是(14)(15)式可以表示為:

p(y|x)=hω(yx)(16)

同樣,我們使用MLE作估計,

L(ω)=∏i=1mp(yi|xi;ω)=∏i=1mhω(yixi)=∏i=1m11+e−yiwxi(17)

對上式取對數及負值,得到損失為:

−logL(ω)=−log∏i=1mp(yi|xi;ω)=−∑i=1mlogp(yi|xi;ω)=−∑i=1mlog11+e−yiwxi=∑i=1mlog(1+e−yiwxi)(18)

即對於每一個樣本,損失函式為:
L(ω)=log(1+e−yiwxi)(19)

對上式求梯度,容易得到:

∂J(ω)∂ωj=−yixi1+eyiωxi(20)


相關文章