看板 R_Language 關於我們 聯絡資訊
目前嘗試使用glmnet處理 code如下: Model<-glmnet(Data,Target) 其中Data是維度很高的資料 約100*10000 Target是欲fitting的目標 100*1 兩個都是矩陣形式 資料都是純數值 接著想檢查fitting出的答案跟Target像不像 Result<-predict(Model,Data) ##再把Data丟進去一次看結果 我本來預期訓練出的結果應該跟Target資料差不多 結果一看Result 竟然是100*100的矩陣 然後矩陣內的數字幾乎都一模一樣 就是Target整體資料的平均值 我有兩個疑問: 1.為何吐出來的Result是100*100 而非100*1? (後來我在glmnet內加入nlambda=1條件 就變成吐出100*1 nlanbda預設100 但不知道 這個參數的作用是甚麼) 2.為何Result內的數值都是Target整體的平均值? 這樣有預測跟沒預測一樣 等同於預測出的答案全填整體的平均 對glmnet不太熟悉 還希望高手指點~~ 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1420804329.A.1FA.html
ty854697: 1. 因為default的nlambda是100,所以result的每一行是一 01/09 23:04
ty854697: 個lambda所對應的model的估計值,一般來說, 01/09 23:04
ty854697: 是用cv.glmnet (cross-validation for glmnet) 找出最好 01/09 23:04
ty854697: 的lambda再估計 01/09 23:05
ty854697: 2. 估計出來的數值是平均值代表lambda太大導致所有的參 01/09 23:05
ty854697: 數估計都為0,所以是用一個只有intercept 01/09 23:06
ty854697: 的模型去估計,predict的結果才會是資料的平均值。 01/09 23:06
ty854697: p.s. nlambda是指lambda的個數 01/09 23:07
pornstar: 感謝樓上 想請問做cv時找出最好的lambda是看吐出來的哪 01/10 03:11
pornstar: 些參數做判斷? 話說我現在改用lars 不過效果應該一樣? 01/10 03:11
pornstar: 是找index參數對應最小cv值的位置當lambda? 不太懂原理 01/10 03:28
ty854697: 他的default是用deviance(在lm跟mse相同) 01/10 08:59