逻辑回归算法原理
http://ihoge.cn/2018/LR.html
邏輯回歸模型
邏輯回歸也被稱為對(duì)數(shù)幾率回歸,算法名雖然叫做邏輯回歸,但是該算法是分類算法,個(gè)人認(rèn)為這是因?yàn)檫壿嫽貧w用了和回歸類似的方法來解決了分類問題。
邏輯回歸模型是一種分類模型,用條件概率分布的形式表示 P(Y|X)P(Y|X),這里隨機(jī)變量 X 取值為 n 維實(shí)數(shù)向量,例如x=(x(1),x(2),...,x(n))x=(x(1),x(2),...,x(n)),Y 取值為 0 或 1。即:
P(Y=0|0)=11+exp(w?x+b)P(Y=0|0)=11+exp?(w?x+b)
或:
?(x)=11+e?wTx?b?(x)=11+e?wTx?b
假設(shè)有一個(gè)二分類問題,輸出為y∈{0,1}y∈{0,1},二線性回歸模型z=wTx+bz=wTx+b是個(gè)實(shí)數(shù)值,我們希望有一個(gè)理想的階躍函數(shù)來幫我什么實(shí)現(xiàn)z值到0/1值的轉(zhuǎn)化,于是找到了Sigmoid函數(shù)來代替:
有了 Sigmoid 函數(shù)之后,由于其值取值范圍在[0,1]。就可以將其視為類 1 的后驗(yàn)概率估計(jì) p(y=1|X)p(y=1|X)。說白了,就是如果有了一個(gè)測(cè)試點(diǎn) x,那么就可以用Sigmoid函數(shù)算出來的結(jié)果當(dāng)作該點(diǎn) x 屬于類別 1 的概率大小。
于是,非常自然地,我們把 Sigmoid 函數(shù)計(jì)算得到的值大于等于0.5的歸為類別1,小于0.5的歸為類別0:
邏輯函數(shù)的損失函數(shù)
接下來要做的就是根據(jù)給定的訓(xùn)練集,把參數(shù) w 給求出來了。要找參數(shù) w,首先就得把代價(jià)函數(shù)(Cost Function)給定義出來,也就是目標(biāo)函數(shù)。
我們第一個(gè)想到的自然是模仿線性回歸的做法,利用誤差平方和來當(dāng)代價(jià)函數(shù):
這時(shí)將預(yù)測(cè)函數(shù) g(z(i))=11+e?x(i)g(z(i))=11+e?x(i)代入損失函數(shù)的話,會(huì)發(fā)現(xiàn)這是一個(gè)非凸函數(shù),這意味著代價(jià)函數(shù)有著許多的局部最小值,這不利于我們求解:
那么我們不妨來換一個(gè)思路解決這個(gè)問題。前面,我們提到了 ?(z) 可以視為類1的后驗(yàn)估計(jì),所以我們有:
其中 p(y=1|x;w)p(y=1|x;w) 表示給定 w,那么 x 點(diǎn) y=1 的概率大小。于是上面兩式可以寫成一般形式:
注:以上的過程說明,最大似然估計(jì)與誤差平方和等價(jià)!這就是為什么邏輯回歸的損失函數(shù)可以用最大似然函數(shù)進(jìn)行估計(jì)的原因。
接下來我們就要用極大似然估計(jì)來根據(jù)給定的訓(xùn)練集估計(jì)出參數(shù) w:
為了簡(jiǎn)化運(yùn)算,我們對(duì)上面這個(gè)等式的兩邊都取一個(gè)對(duì)數(shù):
我們現(xiàn)在要求的是使得 l(w) 最大的 w。沒錯(cuò),我們的代價(jià)函數(shù)出現(xiàn)了,我們?cè)?l(w) 前面加個(gè)負(fù)號(hào)不就變成就最小了嗎?不就變成我們代價(jià)函數(shù)了嗎?
為了更好地理解這個(gè)代價(jià)函數(shù),我們不妨拿一個(gè)例子的來看看:
也就是說:
下面是函數(shù)圖:
從圖中不難看出,如果樣本的值是1的話,估計(jì)值 ?(z) 越接近1付出的代價(jià)就越小,反之越大;同理,如果樣本的值是0的話,估計(jì)值 ?(z) 越接近0付出的代價(jià)就越小,反之越大。
邏輯回歸的模型求解
在開始梯度下降之前,要這里插一句,Sigmoid function 有一個(gè)很好的性質(zhì)就是 :
這個(gè)后續(xù)會(huì)用到。
還有,我們要明確一點(diǎn),梯度的負(fù)方向就是代價(jià)函數(shù)下降最快的方向:這里來解釋下。借助泰勒公式展開,有:
其中,f′(x) 和 δ 為向量,那么這兩者的內(nèi)積就等于:
當(dāng) θ=π 時(shí),也就是 δ 在 f′(x) 的負(fù)方向上時(shí),取得最小值,也就是下降的最快的方向了。
于是有:
即:
其中,wjwj 表示第 j 個(gè)特征的權(quán)重;η 為學(xué)習(xí)率,用來控制步長。 重點(diǎn)來了:
所以,在使用梯度下降法更新權(quán)重時(shí),只要根據(jù)下式即可:
此式與線性回歸時(shí)更新權(quán)重用的式子極為相似,也許這也是邏輯回歸要在后面加上回歸兩個(gè)字的原因吧。當(dāng)然,在樣本量極大的時(shí)候,每次更新權(quán)重會(huì)非常耗費(fèi)時(shí)間,這時(shí)可以采用隨機(jī)梯度下降法,這時(shí)每次迭代時(shí)需要將樣本重新打亂,然后用下式不斷更新權(quán)重:
也就是去掉了求和,而是針對(duì)每個(gè)樣本點(diǎn)都進(jìn)行更新。
總結(jié)
- 上一篇: Spark ML - 聚类算法
- 下一篇: 梯度下降法、随机梯度下降法、批量梯度下降