предсказать функцию с помощью регрессии Лассо - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь реализовать регрессию лассо для моей задачи прогнозирования продаж.Я использую пакет 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, который нужно добавить для предсказания функции, которую я тоже не знаю.Я имею в виду, что в большинстве типов регрессии у нас есть новые данные или аргумент данных, которые мы заполняем нашими тестовыми данными.

1 Ответ

0 голосов
/ 19 марта 2019

Я думаю, что в вашем 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...