сходимость glmnet для n-го значения лямбды, не достигнутого после maxit=1000 итераций; решения для больших лямбд возвращены

#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.