作者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/cn.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