邏輯迴歸梯度下降法詳解
阿新 • • 發佈:2019-01-17
引言
邏輯迴歸常用於預測疾病發生的概率,例如因變數是是否惡性腫瘤,自變數是腫瘤的大小、位置、硬度、患者性別、年齡、職業等等(很多文章裡舉了這個例子,但現代醫學發達,可以通過病理檢查,即獲取標本放到顯微鏡下觀察是否惡變來判斷);廣告界中也常用於預測點選率或者轉化率(cvr/ctr),例如因變數是是否點選,自變數是物料的長、寬、廣告的位置、型別、使用者的性別、愛好等等。
本章主要介紹邏輯迴歸演算法推導、梯度下降法求最優值的推導及spark的原始碼實現。
常規方法
一般迴歸問題的步驟是:
1. 尋找預測函式(h函式,hypothesis)
2. 構造損失函式(J函式)
3. 使損失函式最小,獲得迴歸係數θ
而第三步中常見的演算法有:
1. 梯度下降
2. 牛頓迭代演算法
3. 擬牛頓迭代演算法(BFGS演算法和L-BFGS演算法)
其中隨機梯度下降和L-BFGS在spark mllib中已經實現,梯度下降是最簡單和容易理解的。
推導
二元邏輯迴歸
構造預測函式
hθ(x)=g(θTx)=11+e−θTx
其中:
θTx=∑i=1nθixi=θ0+θ1x1+θ2x2+...+θnxnθ=⎡⎣⎢⎢⎢θ0θ1...θn⎤⎦⎥⎥⎥,x=⎡⎣⎢⎢⎢x0x1...xn⎤⎦⎥⎥⎥
為何LR模型偏偏選擇sigmoid 函式呢?邏輯迴歸不是迴歸問題,而是二分類問題,因變數不是0就是1,那麼我們很自然的認為概率函式服從伯努利分佈,而伯努利分佈的指數形式就是個sigmoid 函式。
函式h 表示結果取1的概率,那麼對於分類1和0的概率分別為:
P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1−hθ(x)
概率一般式為:
P(y|x;θ)=(hθ(x))y((1−hθ(x)))1−y 最大似然估計的思想
當從模型總體隨機抽取m組樣本觀測值後,我們的目標是尋求最合理的引數估計θ′ 使得從模型中抽取該m組樣本觀測值的概率最大。最大似然估計就是解決此類問題的方法。求最大似然函式的步驟是:- 寫出似然函式
- 對似然函式取對數
- 對對數似然函式的引數求偏導並令其為0,得到方程組
- 求方程組的引數
為什麼第三步要取對數呢,因為取對數後,乘法就變成加法了,且單調性一致,不會改變極值的位置,後邊就更好的求偏導。
- 構造損失函式
線性迴歸中的損失函式是:
J(θ)=12m∑i=1m(yi−hθ(xi))2
線性迴歸損失函式有很明顯的實際意義,就是平方損失。而邏輯迴歸卻不是,它的預測函式hθ(x) 明顯是非線性的,如果類比的使用線性迴歸的損失函式於邏輯迴歸,那J(θ) 很有可能就是非凸函式,即存在很多區域性最優解,但不一定是全域性最優解。我們希望構造一個凸函式,也就是一個碗型函式做為邏輯迴歸的損失函式。
按照求最大似然函式的方法,邏輯迴歸似然函式:
L(θ)=∏i=1mP(yi|xi;θ)=∏i=1m(hθ(xi))yi((1−hθ(xi)))1−yi
其中m表示樣本數量,取對數:
l(θ)=logL(θ)=∑i=1m(yiloghθ(xi)+(