【发布时间】:2018-04-02 14:43:02
【问题描述】:
我有一个包含 1000 个观察值和 76 个变量的数据集,其中大约 20 个是分类变量。我想在整个数据集上使用 LASSO。我知道通过 lars 或 glmnet 在 LASSO 中使用因子变量并不能真正起作用,但是变量太多了,并且它们可以采用太多不同的无序值来合理地对它们进行数字重新编码。
在这种情况下可以使用 LASSO 吗?我该怎么做呢?创建预测变量矩阵会产生以下响应:
hdy<-as.numeric(housingData2[,75])
hdx<-as.matrix(housingData2[,-75])
model.lasso <- lars(hdx, hdy)
Error in one %*% x : requires numeric/complex matrix/vector arguments
我意识到其他方法可能更容易或更合适,但挑战实际上是使用 lars 或 glmnet 来做到这一点,所以如果可能的话,我将不胜感激任何想法或反馈。
谢谢,
【问题讨论】:
-
使用
model.matrix创建您的预测矩阵,它将使用虚拟变量重新编码您的因子变量。您可能还想查看组套索 -
所以,使用 hdx
-
到目前为止很好,但我们需要一个可重现的示例来帮助您更进一步。在下面的示例中使用
lars(x=x_train,y=df$var5)似乎可以正常工作。您的输入数据中有NA值吗? -
是的,有很多 NA。当我使用 Flo.P 所做的(顺便谢谢你,这完全有道理)并使其适应我的数据时,我得到了错误:glmnet 中的错误(x,y,权重 = 权重,偏移 = 偏移,lambda = lambda, : y (1000) 中的观察数不等于 x (0) 的行数,当我执行 lars(x=x_train,y=housingData2$SalePrice) 时,我得到相同的 TRUE/FALSE 错误。
-
Flo.P 的方法最适合进一步阅读,请参阅:users.stat.umn.edu/~zouxx019/Papers/gglasso-paper.pdf 澄清一下,输入给 gglasso 的“组”变量中的组变量是指虚拟变量组。例如。哪些虚拟变量组曾经是单个变量。这很重要,因为如果其他虚拟变量不重要,那么在模型中包含一个虚拟变量是没有意义的。
标签: r regression glmnet lasso-regression lars