R
R 的 glm 功能在大數據/機器學習環境中沒用嗎?[複製]
glm
對於以下“玩具”示例(具有約 50k 數據的二進制分類,約 10 個特徵),R 將“破壞”(不收斂於默認設置),但glmnet
在幾秒鐘內返回結果,我感到很驚訝。我使用
glm
不正確(例如,我應該設置最大迭代等),還是 Rglm
不適合大數據設置?添加正則化會使問題易於解決嗎?d=ggplot2::diamonds d$price_c=d$price>2500 d=d[,!names(d) %in% c("price")] lg_glm_fit=glm(price_c~.,data=d,family = binomial()) library(glmnet) x=model.matrix(price_c~.,d) y=d$price_c lg_glmnet_fit=glmnet(x = x,y=y,family="binomial", alpha=0) Warning messages: 1: glm.fit: algorithm did not converge 2: glm.fit: fitted probabilities numerically 0 or 1 occurred
編輯:感謝 Matthew Drury 和 Jake Westfall 的回答。我了解已經解決的完美分離問題。 如何處理邏輯回歸中的完美分離?
在我的原始代碼中,我確實有第三行刪除了派生標籤的列。
我之所以提到“大數據”,是因為在許多“大數據”/“機器學習”設置中,人們可能不會仔細測試假設或知道數據是否可以完美分離。但
glm
似乎很容易被“不友好”消息破壞,並且沒有簡單的方法來添加正則化來修復它。
非正則化模型正遭受完全 分離的困擾,因為您正試圖從衍生變量
price_c
的連續變量中預測二分變量。price
正則化模型通過施加懲罰來避免完全分離的問題,該懲罰使
price
預測變量的係數不會下降到或者. 因此,它設法收斂並運行良好。在這個玩具示例中,您應該從設計矩陣中刪除連續
price
預測變量。***編輯:*正如@Erik 指出的那樣,連續
price
預測器已經從設計矩陣中刪除,我不知何故錯過了。因此,完全分離來自其他一些預測變量或預測變量的組合。還值得補充的是,當然,這些問題都與 R
glm()
函數中邏輯回歸的特定實現無關。它只是關於正則化與非正則化邏輯回歸。