#r #prediction #predict #glmnet
Вопрос:
Я использую ЛАССО из glmnet-пакета для создания прогнозов. Кроме того, я использую функцию cv.glmnet для 5-кратной перекрестной проверки для создания Lasso.fit. Этот glmnet-объект затем используется в функции прогнозирования с помощью эмпирического правила s = «lambda.1se».
x lt;- scale(x) x_test lt;- scale(x_test) lasso.fit lt;- cv.glmnet(x,y, nfolds = 5, alpha=1, intercept =TRUE, standardize =TRUE, type.measure="mae") lasso_pred lt;- predict(lasso.fit, x_test, s ="lambda.1se")
Однако при запуске этой модели я получаю следующее предупреждение:
Warning: from glmnet Fortran code (error code -79); Convergence for 79th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned
Что означает это предупреждение?
Более того, должен ли я серьезно отнестись к этому предупреждению, т. Е. Изменить что-то в cv.glmnet-функции?
Или это то, о чем мне не следует беспокоиться при создании прогнозов с помощью штрафных методов?
Ответ №1:
По умолчанию glmnet
пытается вычислить решения для 100 значений лямбда. Ошибка заключается в том, что при 79-м значении лямбды была достигнута максимальная итерация (по умолчанию 10^5) спуска по координатам. Поэтому, поскольку решение не соответствовало критерию сходимости, приведены только решения для первых 78 значений лямбда. Вы все еще можете использовать cv.glmnet
— это просто сделает выбор модели с этими 78 лямбдами. Если вы хотите вычислить больше лямбд, просто передайте другой параметр maxit=...
, где ...
некоторое число больше 10^5.