邏輯回歸是統計學習方法中的經典分類方法,也是在深度學習興起之前,工業界最為常用的分類算法之一。
什么是邏輯回歸
邏輯回歸在某些書中也被稱為對數幾率回歸(比如西瓜書),是一種廣義的線性模型:利用一個單調可微的函數將分類任務的真實標記 $ y $ 與線性回歸模型的預測值聯系起來。
考慮一個二分類問題,輸入為 $ y \in {0,1 } $ ,而線性回歸模型產生的預測值為,而線性回歸模型產生的預測值為,而線性回歸模型產生的預測值為,而線性回歸模型產生的預測值為 ,而線性回歸模型產生的預測值為,而線性回歸模型產生的預測值為,而線性回歸模型產生的預測值為 ,而線性回歸模型產生的預測值為\(z=w^Tx+b\)是實數值,因此,需要找到一個可以將實值轉化為0/1值得階躍函數。最理想的是“單位階躍函數”。
但是,該函數不連續,我們希望有一個單調可微的函數來代替,因此找到了Sigmoid function。
從圖中可以看出,Sigmoid函數將z值轉化為接近於0或1的y值,並且輸出值在z=0附近變化很陡。由於其取值在[0,1]中,可以將其視為正類的后驗概率估計\(p(y=1|x)\)。
代價函數
如果將\(\phi(z)\)可以視為類1的后驗概率,所以我們有:
其中,\(p(y=1|x;w)\)表示給定\(w\),在\(x\)的情況下,\(y=1\)的概率大小。
上面的兩個式子可以寫為一般形式
接下來,就可以使用極大似然估計來根據給定的訓練集估計出參數\(w\)。
為了簡化運算,對上式兩邊取對數:
接下來,我們的目標就是求使\(l(w)\)最大化的\(w\)。更一般的,在\(l(w)\)之前添加符號,就變成了求最小值,也就是代價函數。
求解參數
首先介紹一下Sigmoid function的導數:
接下來,需要明確一點,梯度的負方向就是代價函數下降最快的方向。基於此,便可以優化參數了。
對於邏輯回歸而言:
所以,權重更新公式如下:
注意事項
1.樣本含量
在模型訓練時,樣本量應該取多少一直是一個令人困惑的問題。根據某些專家的經驗,如果樣本量少於100,Logistic回歸的最大似然估計可能會有一定的風險,如果大於500,則顯得比較充足。當然,樣本大小還依賴於變量個數、數據結構等條件。(一般認為,每一個自變量至少要10例結局保證估計的可靠性。注意:這里是結局例數,而不是整個樣本例數。如果你有7個自變量,那至少需要70例研究結局,否則哪怕你有1000例,而結局的例數只有10例,依然顯得不足。)
2.關於自變量形式
理論上,Logistic回歸中的自變量可以是任何形式,定量資料和定性資料均可。但在數據分析時通常更傾向於自變量以分類的形式進入模型,因為這樣更方便解釋。
3.關於標准誤過大的問題
對於此類問題,可能有以下原因:
- 該變量某一類的例數特別少,如性別,男性有100人,女性有2人,可能會出現這種情形。
- 空單元格(zero cell count),如性別與疾病的關系,所有男性都發生了疾病或都沒有發生疾病,這時候可能會出現OR值無窮大或為0的情形。
- 完全分離(complete separation),對於某自變量,如果該自變量取值大於某一值時結局發生,當小於該值時結局都不發生,就會出現完全分離現象。如年齡20、30、40、50四個年齡段,如果40歲以上的人全部發生疾病,40歲以下的人全部不發病,就產生了完全分離現象,也會出現一個大得不可理喻的標准誤差。
- 多重共線性問題,多重共線性會產生大的標准誤差。
幾個錯誤的做法
1.多分類變量不看其與logitP的關系直接進入模型
有時候你會發現某些多分類自變量應該有意義但怎么也得不到有統計學意義的結果,那你最好看一下這些自變量與logitP是神馬關系,是直線關系嗎?如果不是,請設置虛擬變量(SPSS叫做啞變量)后再進入模型。
2.參數估計無統計學意義
有時候會發現所有自變量參數估計均無統計學意義,如果你認為不大可能所有自變量都無統計學意義,那可以看下是不是標准誤太大導致的Wald卡方檢驗失效,如果是,不妨換用似然比檢驗重新分析。
3.只看參數檢驗結果
Logistic回歸中有很多指標可用於擬合優度的評價,如Pearson卡方、Deviance、AIC、似然比統計量等。
參考資料
- https://www.jianshu.com/p/15646e157fbd
- https://blog.csdn.net/zjuPeco/article/details/77165974
- 周志華. 機器學習[M]. 清華大學出版社, 2016.