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