邏輯回歸(Logistic Regression)是一種非常流行的演算法,它簡單且有較強的可解釋性,今天就讓我們一起來學習邏輯回歸的原理。

首先需要搞懂邏輯回歸與線性回歸(Linear Regression)的區別,雖然二者都帶有「回歸」二字,但是用來解決不同的問題。線性回歸解決「回歸」問題,用一條直線來擬合所有的點,例如探究某超市的銷售額與小區常住人口數的關係;而邏輯回歸則解決「分類」問題,例如可預測一封郵件是否為垃圾郵件,預測客戶是否會發生債務違約等。

邏輯回歸演算法分三步進行,首先,我們需要確定一個預測函數,即預測出一個值來判斷歸屬哪一類,可定義預測值大於某個閾值判斷為一類,反之為另一類;第二步,為了計算參數,我們需要定義一個損失函數,損失函數用來衡量真實值和預測值之間的差異,這個差值越小說明預測效果越好;第三步,用梯度下降法計算參數,使損失函數不斷減小,得出參數後,帶入預測函數就可以來進行預測了。下面,我們將對每一步做詳細解釋。

一、尋找預測函數h(x)1. 預測函數的形式

線性回歸的預測函數是一條直線,那麼邏輯回歸的預測函數能否也用一條直線呢?我們假設要預測一個客戶是否會發生債務違約,客戶的很多特徵與因變數相關,以收入為例,通常來講客戶的收入水平越高,其發生債務違約的可能性越低。假如預測函數是線性的,找一條直線擬合所有點如圖中的紅線所示,通過設定一個閾值(假設0.5),可以較好地將兩類客戶分開,若客戶的收入水平大於m,預測函數預測出的結果大於0.5,則判定客戶不會違約;若客戶的收入水平小於m,預測值小於0.5,則判定會違約,這樣的分類效果令人滿意。

線性的預測函數的缺點是對「異常值」敏感,例如樣本中加入了新的客戶,其收入水平非常高,且沒有發生違約,擬合出新的直線如圖中的黃線所示,如果還想將二者完美區分的話,選取的閾值就不能是0.5了,若還是0.5,會將一部分優質客戶錯誤預測為會發生違約。基於線性預測函數對異常值敏感的特性,我們需要針對分類問題探索一種新的預測函數。

sigmoid函數g(z)似乎滿足我們的需求,當x趨近於+∞時,y無限趨近於1,而當x趨近於-∞時,y無限趨近於0,有異常值出現時,sigmoid函數能夠做出正確的判斷。由於sigmoid函數可以將x的值映射到0到1之間,它可以表示預測的概率,假如預測值是0.75,那麼客戶屬於第1類(違約)的概率為75%,不違約的概率為25%。

2. 決策邊界

為了確定預測函數,我們需要引入一個新的概念——決策邊界(Decision Boundary),以二元變數為例,決策邊界是將兩類客戶最大程度地區分開,若可以用一條直線將兩類區分,即存在線性的決策邊界,反之為非線性決策邊界,例如圖中的圓。

圖中的直線可以用x1+x2=3來表示,x1+x2>3表示的是右上部分,即正樣本,x1+x2<3表示圖中的左下部分,即負樣本,利用x1、x2兩個變數的值即可判斷正負樣本,將結果映射到[0, 1]之間即可預測概率,這個映射的過程可以用上述sigmoid函數的形式。

線性邊界的邊界形式為:

將其映射到[0, 1],即可得出預測函數的形式為:

二、構造損失函數J(θ)

現在我們需要求解參數θ,邏輯回歸中運用的是梯度下降法,首先定義一個損失函數J(θ),不斷更新θ使得損失函數不斷減小,當損失函數下降的值小於閾值時,就停止更新,即可得出參數。

損失函數表示的是真實值和預測值之間的差異,可以表示為:

其中m表示樣本的數量。

構造理想的損失函數,當y=1時,預測函數越接近1,損失函數值越小,反之越大;當y=0時,預測函數越接近1,損失函數值越大,反之越小。那麼Cost函數可以表示為:

將Cost函數簡化:

帶入J(θ)中,即可得到損失函數:

三、梯度下降法求解參數θ

有了損失函數J(θ),我們就可以求解參數θ了,要令損失函數最小化,我們定義更新函數為(α為步長):

求偏導的部分簡化步驟如下:

那麼更新過程可表示為:

將每一次更新迭代得出的θ帶入J(θ),即可得出損失函數的值,求出損失函數值,與上一次迭代的損失函數值相減,結果小於閾值就停止迭代,這樣損失函數不斷下降,就求解出了θ。

θ的求解過程是迭代的過程,從初始值開始迭代,使得損失函數下降,預測的準確度提升,直到預測沒有提升就停止迭代,得出參數結果。

參數的實際含義是什麼呢?用債務違約的例子來說,θ表示當客戶的收入每減少1元,其債務違約的概率提升θ%。

經過上述三步,整個邏輯回歸的演算法過程就結束了,我們首先定義了預測函數h(x),構造了損失函數J(θ),利用梯度下降法更新θ,使得損失函數的值不斷下降,當停止優化時,即可求解出θ,將參數θ帶入預測函數中,我們就可以開始進行預測了~

作者:Jasmine,歡迎關注我們的公眾號「無機器不學習」~


推薦閱讀:
相关文章