首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lasso,glmnet,数据预处理

Lasso,glmnet,数据预处理
EN

Stack Overflow用户
提问于 2014-05-21 16:01:47
回答 1查看 1.9K关注 0票数 1

我试图使用glmnet软件包在具有二进制结果( logit)的模型上安装一个套索(L1惩罚)。除一个连续变量外,我的预测器都是二进制的(它们是1/0没有有序的,~4000)。我需要将预测器转换成稀疏矩阵,因为这需要花费很长时间,否则需要一天时间。我的问题是:人们似乎在使用sparse.model.matrix,而不仅仅是将它们的矩阵转换为稀疏矩阵。为什么会这样呢?我需要在这里做这个吗?两种方法的结果略有不同。

此外,我的因素是否需要编码为因子(涉及结果和预测因素),还是使用稀疏矩阵并在glmnet模型中指定结果是二项式是否足够?

这是我目前所做的

代码语言:javascript
复制
#Create a random dataset, y is outcome, x_d is all the dummies (10 here for simplicity) and x_c  is the  cont variable 
y<- sample(c(1:0), 200, replace = TRUE)
x_d<- matrix(data= sample(c(1:0), 2000, replace = TRUE), nrow=200, ncol=10)
x_c<- sample(60:90, 200, replace = TRUE) 

#FIRST: scale that one cont variable. 
scaled<-scale(x_c,center=TRUE, scale=TRUE)

#then predictors together
x<- cbind(x_d, scaled) 

#HERE'S MY MAIN QUESTION: What i currently do is: 
xt<-Matrix(x ,  sparse = TRUE) 

#then run the cross validation...
cv_lasso_1<-cv.glmnet(xt, y, family="binomial", standardize=FALSE)

#which gives slightly different results from (here the outcome variable is in the x matrix too) 
xt<-sparse.model.matrix(data=x, y~.)

#then run CV. 

因此,总结我的两个问题是:1-我是否需要使用sparse.model.matrix,即使我的因素只是二进制和没有排序?如果是的话,它实际上有什么不同之处,只将矩阵转换成稀疏矩阵2-我需要将二进制变量编码为因子吗?我问这个问题的原因是我的数据集很大。它节省了大量的时间,只是这样做,而不是编码作为因素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-17 03:09:33

我不认为你需要一个sparse.model.matrix,因为它真正给你的是因子项的扩展,如果你已经是二进制的话,它不会给你任何东西。您当然不需要将其编码为因子,我经常在一个只有1的规则(非模型)稀疏矩阵上使用glmnet。在一天结束时,glmnet是一种数值方法,所以因子最终会被转换成一个数字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23788364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档