R

R 的 glm 功能在大數據/機器學習環境中沒用嗎?[複製]

  • October 11, 2016

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預測器已經從設計矩陣中刪除,我不知何故錯過了。因此,完全分離來自其他一些預測變量或預測變量的組合。

還值得補充的是,當然,這些問題都與 Rglm()函數中邏輯回歸的特定實現無關。它只是關於正則化與非正則化邏輯回歸。

引用自:https://stats.stackexchange.com/questions/239523

comments powered by Disqus