Re: [問題] lm函式是否能計算高維度的資料?

看板R_Language作者 (迪克)時間10年前 (2015/01/09 19:52), 編輯推噓1(1012)
留言13則, 3人參與, 最新討論串2/2 (看更多)
目前嘗試使用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

01/09 23:04, , 1F
1. 因為default的nlambda是100,所以result的每一行是一
01/09 23:04, 1F

01/09 23:04, , 2F
個lambda所對應的model的估計值,一般來說,
01/09 23:04, 2F

01/09 23:04, , 3F
是用cv.glmnet (cross-validation for glmnet) 找出最好
01/09 23:04, 3F

01/09 23:05, , 4F
的lambda再估計
01/09 23:05, 4F

01/09 23:05, , 5F
2. 估計出來的數值是平均值代表lambda太大導致所有的參
01/09 23:05, 5F

01/09 23:06, , 6F
數估計都為0,所以是用一個只有intercept
01/09 23:06, 6F

01/09 23:06, , 7F
的模型去估計,predict的結果才會是資料的平均值。
01/09 23:06, 7F

01/09 23:07, , 8F
p.s. nlambda是指lambda的個數
01/09 23:07, 8F

01/10 03:11, , 9F
感謝樓上 想請問做cv時找出最好的lambda是看吐出來的哪
01/10 03:11, 9F

01/10 03:11, , 10F
些參數做判斷? 話說我現在改用lars 不過效果應該一樣?
01/10 03:11, 10F

01/10 03:28, , 11F
是找index參數對應最小cv值的位置當lambda? 不太懂原理
01/10 03:28, 11F

01/10 08:59, , 12F
他的default是用deviance(在lm跟mse相同)
01/10 08:59, 12F
文章代碼(AID): #1Khy3f7w (R_Language)
文章代碼(AID): #1Khy3f7w (R_Language)