我正在尝试对我的销售预测问题实施套索回归。我正在使用glmnet
包和cv.glmnet
函数来训练模型。
library(glmnet)
set.seed(123)
model = cv.glmnet(as.matrix(x = train[, -which(names(train) %in% "Sales")]),
y = train$Sales,
alpha = 1,
lambda = 10^seq(4,-1,-0.1))
best_lambda = model$lambda.min
lasso_predictions_valid <- predict(model,s = best_lambda,type = "coefficients")
在阅读了有关实现套索回归的几篇文章之后,我仍然不知道如何添加要应用预测的测试数据。还有newx
个参数要添加到我也不知道的预测函数中。我的意思是,在大多数回归类型中,我们都有newdata或data参数,可以将测试数据填充到其中。
答案 0 :(得分:0)
我认为您的lasso_predictions_valid
中存在错误,您不应该将valid$sales
用作newx,因为我相信这是实际的销售数量。
一旦使用训练集创建了模型,那么对于newx
,您需要传递要进行预测的x的矩阵值,在这种情况下,我想它将是您的验证集。
查看上面的示例代码,我认为您的predict
行应类似于:
lasso_predictions_valid <- predict(model, s = best_lambda,
newx = as.matrix(valid[, -which(names(valid) %in% "Sales")]),
type = "coefficients")
然后您应该运行RMSE()
行:
RMSE(lasso_predictions_valid, valid$Sales)