[問題] glm跑logistic

作者: pk790127 (<>)   2017-04-26 00:58:01
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:當我使用glm套件中邏輯式迴歸(y為二元變數"binomial")時
modle <-glm(model1, family = "binomial" ,data = train )
跑出警告訊息
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
上網搜尋了一下解法... 得出 https://goo.gl/aNHEtU
1.用 bayesglm 在arm這個套件
modle <-bayesglm(model1, family = "binomial" ,data = train )
2.用 glmnet套件
modle1 <-glmnet(x=as.matrix(train[,-c(1,26)]) ,y=train[,1] ,family =
"binomial" )
兩個作法都可以跑,也可以預測,但是想知道原先glm的錯誤原因是什麼
train跟test資料應該都沒問題 y是二元的數值型態 x有連續也有二元都是數值型態
另外在glmnet預測中 s這個值不填的話欄位很奇怪,看解釋是指懲罰參數,但我原先的
logistic沒有lamba參數阿..
glm_result <-predict(modle1, s=0.01, as.matrix(test[, -c(1,26)]),
type="response")
這些問題可能是我方法論不熟悉,但請有使用過這些套件的前輩們提點一下
謝謝~
作者: pk790127 (<>)   2017-04-26 00:59:00
說明一下 前面的model1是有轉成as.model的方式glmnet是要吃矩陣 所以那邊的model1是另外的
作者: andrew43 (討厭有好心推文後刪文者)   2017-04-26 01:49:00
經常是完美預測造成。例如x=A則一定Y=T。另見 http://tinyurl.com/mou43rh可多利用 http://tinyurl.com/mnerchs 搜本看板舊文
作者: pk790127 (<>)   2017-04-26 02:22:00
謝謝前輩,有看過舊文,但是我照文中連結上面的方法做的解是代表什麼意思…都是logistic regression
作者: andrew43 (討厭有好心推文後刪文者)   2017-04-26 11:38:00
bayesglm 是貝氏推論。glmnet是lasso演算法。這些東西比較複雜,還沒搞懂前套用要小心。
作者: clansoda (小笨)   2017-04-26 16:37:00
所以用glmnet就能跑正規化了嗎?
作者: pk790127 (<>)   2017-04-26 17:32:00
是的 調整lambda=0之後可行 但是還是想知道glm的錯誤或是有其他logistic regression的套件 可以讓我嘗試
作者: fox1375 (阿吠)   2017-04-27 04:07:00
第一個警告要增加iteration次數 第二個則要檢查資料資料怎麼收集的? 有多少cases? 變項有哪些?要跑電腦都會讓你跑 但是有警告就代表資料有點問題
作者: pk790127 (<>)   2017-04-27 07:12:00
樣本大約260個 變數有24個其中有類別(二元)有連續
作者: fox1375 (阿吠)   2017-04-27 14:29:00
變數有點多......如三樓所說有overfitting的問題這種情況下分析結果未必能用 因為很可能機率預測值大於1建議用相關係數矩陣看一下,拿掉一些自變項類別變數(包含依變數)則用交叉表,可能有完美預測的情形
作者: Wush978 (拒看低質媒體)   2017-04-27 16:52:00
變數這麼多,應該會有perfect split, 也就是在某些類別型變數的狀態下有y全0或1的狀況。這時候training會因為機率值是0 or 1, 導致你的logistic regression在linear part必須要是-Inf / Inf ,進而導致數值收斂的困難實務上除了去找方法修剪feature外,也可以把lambda打開用regularization解決收歛性的問題。你可以利用crossvalidation來挑適當的lamda值,對你的預測也有幫助最後,小心若資料的label的0/1比率差很大,那準確率沒有參考性。
作者: pk790127 (<>)   2017-04-28 01:09:00
謝謝兩位前輩

Links booklink

Contact Us: admin [ a t ] ucptt.com