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

作者: pornstar (迪克)   2015-01-09 19:52:07
目前嘗試使用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不太熟悉 還希望高手指點~~
感謝!!
作者: ty854697   2015-01-09 23:04:00
1. 因為default的nlambda是100,所以result的每一行是一個lambda所對應的model的估計值,一般來說,是用cv.glmnet (cross-validation for glmnet) 找出最好的lambda再估計2. 估計出來的數值是平均值代表lambda太大導致所有的參數估計都為0,所以是用一個只有intercept的模型去估計,predict的結果才會是資料的平均值。p.s. nlambda是指lambda的個數
作者: pornstar (迪克)   2015-01-10 03:11:00
感謝樓上 想請問做cv時找出最好的lambda是看吐出來的哪些參數做判斷? 話說我現在改用lars 不過效果應該一樣?是找index參數對應最小cv值的位置當lambda? 不太懂原理
作者: ty854697   2015-01-10 08:59:00
他的default是用deviance(在lm跟mse相同)
作者: ljta (ljta)   2015-01-10 11:07:00

Links booklink

Contact Us: admin [ a t ] ucptt.com