统计学习 - 具有LASSO预测误差的分类模型

时间:2016-03-23 18:26:48

标签: r machine-learning missing-data lasso

我开发了一个关于训练数据的LASSO模型来预测R中的二元响应变量,使用交叉验证来选择我的$ \ lambda $:

x = model.matrix(y ~ x1 + x2 + ... + x23, data=train)[, -1]
library(glmnet)
glm.train = glmnet(x, y = as.factor(train$y), alpha = 1, family = 'binomial')

情节(glm.train,xvar =“lambda”) 网格() glm.train.cv = cv.glmnet(x,y = train $ dem,alpha = 1,family ='binomial')     opt.lambd = glm.train.cv $ lambda.min train.fit.lasso = glmnet(x,y = train $ dem,alpha = 1,family ='binomial')     预测(train.fit.lasso,s = opt.lambd,type =“coefficients”)[1:23,]

然后我在测试数据上测试了模型,得到了可靠的结果(下面,我在测试数据中插入了模型的ROC曲线): enter image description here

在我上面使用的训练和测试数据中,我有响应变量的实际值,并且能够使用model.matrix()函数来计算预测值。但是,我有第二部分测试数据,其中响应变量的每个值都是NA。在此数据上应用model.matrix()后,矩阵的维度为0x22:

> dim(x.predict)
[1]  0 22

我尝试了model.matrix()的一些替代方案,但只是出错了。例如,当我尝试使用data.matrix()时,矩阵的尺寸是正确的:

> x.predict = data.matrix(predict.data[c(-1,-2,-3, -5,-6, -10, -14, -18,-19, -21, -26,-27, -34,-35,-36,-37)])
> dim(x.predict)
[1] 5010   23

但是,当我尝试使用我的模型估计概率或分类时,我收到以下错误:

> test$test.probs = predict(train.fit.lasso, newx = x.predict, s = opt.lambd, type = "response")

as.matrix(cbind2(1,newx)%%nbeta)出错:   在为函数'as.matrix'选择方法时评估参数'x'时出错:cbind2(1,newx)%%nbeta中的错误:   文件中的Cholmod错误'X和/或Y有错误的尺寸'../MatrixOps/cholmod_sdmult.c,第90行

  

test $ test.predicts = predict(train.fit.lasso,newx = x.predict [1:5010,],s = opt.lambd,type =“class”)       as.matrix错误(cbind2(1,newx)%%nbeta):         在为函数'as.matrix'选择方法时评估参数'x'时出错:cbind2(1,newx)%%nbeta中的错误:         文件中的Cholmod错误'X和/或Y有错误的尺寸'../MatrixOps/cholmod_sdmult.c,第90行

有没有人在使用LASSO之前遇到过这个问题?或者,是否有人可以帮助我理解不同的.matrix()函数如何与LASSO一起使用,以及在响应值为NA时计算预测的可能方法?

0 个答案:

没有答案