作者pornstar (迪克)
看板R_Language
標題Re: [問題] lm函式是否能計算高維度的資料?
時間Fri Jan 9 19:52:07 2015
目前嘗試使用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://webptt.com/m.aspx?n=bbs/R_Language/M.1420804329.A.1FA.html
1F:推 ty854697: 1. 因為default的nlambda是100,所以result的每一行是一 01/09 23:04
2F:→ ty854697: 個lambda所對應的model的估計值,一般來說, 01/09 23:04
3F:→ ty854697: 是用cv.glmnet (cross-validation for glmnet) 找出最好 01/09 23:04
4F:→ ty854697: 的lambda再估計 01/09 23:05
5F:→ ty854697: 2. 估計出來的數值是平均值代表lambda太大導致所有的參 01/09 23:05
6F:→ ty854697: 數估計都為0,所以是用一個只有intercept 01/09 23:06
7F:→ ty854697: 的模型去估計,predict的結果才會是資料的平均值。 01/09 23:06
8F:→ ty854697: p.s. nlambda是指lambda的個數 01/09 23:07
9F:→ pornstar: 感謝樓上 想請問做cv時找出最好的lambda是看吐出來的哪 01/10 03:11
10F:→ pornstar: 些參數做判斷? 話說我現在改用lars 不過效果應該一樣? 01/10 03:11
11F:→ pornstar: 是找index參數對應最小cv值的位置當lambda? 不太懂原理 01/10 03:28
12F:→ ty854697: 他的default是用deviance(在lm跟mse相同) 01/10 08:59