logistics 回歸建立預後模型過程中自變量太多,如何篩選? | 知乎問答精選

 

A-A+

logistics 回歸建立預後模型過程中自變量太多,如何篩選?

2019年06月26日 知乎問答精選 暫無評論 閱讀 10 ℃ 次

【羅伯特兒的回答(46票)】:

題主這個問題要想好好回答,基本可以寫本書了,所以我先寫個簡略回答佔個坑, 提供一點思路,以後有空補充。

10/22/2015

-------------------------------------------------------------------------------------------------

1. 題主目前的問題問得有點寬泛,最好能提供以下信息,比如:你的數據是通過什麼抽樣方法得到的?你對這些數據之間的關係有多少經驗性的瞭解?你的數據量有多大?你的自變量『太多』,那大概有多少?比你的數據量大嗎?有數據缺失嗎?做這個logistic regression的目的是什麼?是要對association(不知道咋翻譯)做統計推斷,還是為了預測分類?要想解決題主的實際問題,需要有這些信息,否則只能做一些概念和方法的簡介。

2. 反對目前的兩個答案。

(1)regression模型裡變量的顯著性跟模型是如何設置的以及變量間的相關性有複雜的關係,做變量選擇的時候最好不要看顯著性。通過估計協方差矩陣來判斷判斷如何取捨變量在變量較多的時候基本不可行,況且由於confounding(不知道咋翻譯)的問題,並不是只留下獨立的變量,剔除相關性較強的變量就對了。

(2)關於LASSO,這個方法是1996年發表的,雖然其影響巨大,具有開創性,不過方法本身已經過去快20年了,比它更先進的方法發表了無數,名氣比較大的比如: SCAD (Fan and Li, 2001), adaptive Lasso (Zou, 2006) 和 MCP (Zhang, 2010)。 況且LASSO模型本身其實是有問題的,已經在Zhao and Yu(2006) and Zou (2006)中被證明,LASSO模型做變量選擇的一致性(consistency)在這個被叫做stronglyrepresentable condition的條件不成立的時候是不一定存在的,也就是說選出來的變量並不一定收斂到所謂的真相。所以,不要一提做變量選擇就用LASSO。

3. 關於做變量選擇(variable selection),有很多方法。就在logistic regression裡做變量選擇而言,大概就是貝葉斯模型(Bayesian variable selection model)和 Shrinkage Regression兩個流派以及一些自成一派的方法。上面提到的LASSO, adaptive Lasso, SCAD, 和 MCP都是Shrinkage Regression這個流派的,如果題主想選用這個流派的方法,就從後三個裡面選一個吧,R裡面都有現成的package可用, 比如:"cvplogistic" 是用SCAD和MCP penalty做logistic regression的。而去年JASA上又有人發表了一個rLASSO,號稱把前面這四個以及很多別的方法全都完爆了,題主有興趣也可以看一下。論文叫:Qifan Song & Faming Liang (2014): High Dimensional Variable Selectionwith Reciprocal L1-Regularization, Journal of the American Statistical Association

(先寫這麼多,以後更新)

【張大萬的回答(4票)】:

兩個問題:

1.是所有變量都顯著嗎?

2.是所有變量都獨立沒有相關性嗎?

回答完這兩個問題就可以解決了。

【陳沁楠的回答(0票)】:

如果是focus在logistic的話 我也坐等@Detian Deng的答案

如果目的是preditive modeling的話,可以先弄個binary tree 或者random forest 探索一下

【Anlulu的回答(0票)】:

有段時間我也覺得七十多個變量都塞進去挺好的。

但是,我們關注的變量就那麼一兩個,其他的都是控制變量,如果你真的覺得它們都有理論基礎可以放入模型,那麼沒關係,在最後的輸出結果中寫上 其他變量:已控制 就好了。

問題就在於這些變量我們真的都需要嗎?翻閱經典文獻的回歸模型,精簡而有說服力的回歸不在少數。

所以,建議把該合併的合併,該刪減的刪減,尤其是分類變量,分類太多反而顯得冗余。

【徐瑞龍的回答(0票)】:

嘗試用「主成分」壓縮一下變量個數。

【老胡的回答(0票)】:

當然必須果斷lasso-logistic,篩選變量lasso最火

R上有lars包可以做

找書看的話,推薦《The Elements of Statistical Learning》,俗稱統計學習精要,第四章講的就是這個

附度娘網盤鏈接:

The Elements of Statistical Learning .pdf_免費高速下載

【周琦的回答(0票)】:

簡單的思路:L1 正則化,然後刪掉小於某些閾值的特徵。

【CrazyBear的回答(5票)】:

看了一下其他答案,基本都是很學院派的從純數據/模型驅動的角度來篩變量,但實務中無論是建立基於邏輯回歸的PD model,還是多因子選股,篩選變量因子都是統計手段結合基於業務知識的主觀判斷綜合進行的,並不是簡單的套一個模型,把數據往裡面一塞,敲幾行代碼輸出幾個指標就完事了。篩變量的體系可以很複雜,有些vendor專門會提供一些專門針對這些問題的軟件。

比起用什麼模型,事先的數據預處理/清洗/sanity check更耗精力也更為重要,在這個基礎上,只要建模思路大方向是對的,不同的模型其實性能也差不太多,如果真有某個模型一騎絕塵表現顯著好於其他模型,那麼它八成是過度擬合了。

回到篩變量的話題,俺覺的更像是門藝術,我們需要在直覺/業務知識/統計模型檢驗結果中做妥協,還需要和官僚主義做鬥爭,比如在LOB或者Model Validation的關照下把某些已經被斃掉的變量重新塞回模型。這一切都使得統計建模這一看似科學的活動粘上了濃濃的民科氣息(有些手段真的很民科)。總之大部分時候俺們的目標只是做出一個可以使方方面面接受的東西交差以應付監管需求,至於實際功效如何,who cares,只要大家都說好就行了,用模型預測未來本身就是一種代替上帝做決定的民科行為,這就是風控狗的日常工作。

突然發現寫了這麼多其實對樓主的問題毫無幫助。。。

標籤:-統計 -統計軟件 -R(編程語言)


相關資源:





給我留言