1. 程式人生 > >邏輯迴歸梯度下降法詳解

邏輯迴歸梯度下降法詳解

引言

邏輯迴歸常用於預測疾病發生的概率,例如因變數是是否惡性腫瘤,自變數是腫瘤的大小、位置、硬度、患者性別、年齡、職業等等(很多文章裡舉了這個例子,但現代醫學發達,可以通過病理檢查,即獲取標本放到顯微鏡下觀察是否惡變來判斷);廣告界中也常用於預測點選率或者轉化率(cvr/ctr),例如因變數是是否點選,自變數是物料的長、寬、廣告的位置、型別、使用者的性別、愛好等等。
本章主要介紹邏輯迴歸演算法推導、梯度下降法求最優值的推導及spark的原始碼實現。

常規方法

一般迴歸問題的步驟是:
1. 尋找預測函式(h函式,hypothesis)
2. 構造損失函式(J函式)
3. 使損失函式最小,獲得迴歸係數θ

而第三步中常見的演算法有:
1. 梯度下降
2. 牛頓迭代演算法
3. 擬牛頓迭代演算法(BFGS演算法和L-BFGS演算法)
其中隨機梯度下降和L-BFGS在spark mllib中已經實現,梯度下降是最簡單和容易理解的。

推導

二元邏輯迴歸

  1. 構造預測函式

    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
    θ
    (x)
    表示結果取1的概率,那麼對於分類1和0的概率分別為:
    P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1hθ(x)
    概率一般式為:
    P(y|x;θ)=(hθ(x))y((1hθ(x)))1y
  2. 最大似然估計的思想
    當從模型總體隨機抽取m組樣本觀測值後,我們的目標是尋求最合理的引數估計θ使得從模型中抽取該m組樣本觀測值的概率最大。最大似然估計就是解決此類問題的方法。求最大似然函式的步驟是:

    1. 寫出似然函式
    2. 對似然函式取對數
    3. 對對數似然函式的引數求偏導並令其為0,得到方程組
    4. 求方程組的引數

    為什麼第三步要取對數呢,因為取對數後,乘法就變成加法了,且單調性一致,不會改變極值的位置,後邊就更好的求偏導。

  3. 構造損失函式
    線性迴歸中的損失函式是:
    J(θ)=12mi=1m(yihθ(xi))2
    線性迴歸損失函式有很明顯的實際意義,就是平方損失。而邏輯迴歸卻不是,它的預測函式hθ(x)明顯是非線性的,如果類比的使用線性迴歸的損失函式於邏輯迴歸,那J(θ)很有可能就是非凸函式,即存在很多區域性最優解,但不一定是全域性最優解。我們希望構造一個凸函式,也就是一個碗型函式做為邏輯迴歸的損失函式。
    按照求最大似然函式的方法,邏輯迴歸似然函式:
    L(θ)=i=1mP(yi|xi;θ)=i=1m(hθ(xi))yi((1hθ(xi)))1yi
    其中m表示樣本數量,取對數:
    l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(