Каков текущий критерий сходимости glmnet?

#r #glmnet #lasso-regression

Вопрос:

Я попытался воспроизвести результаты glmnet с помощью критерия сходимости, описанного в уравнениях 1 и 2 или в виньетке в приложении 0 на странице 34: https://cran.r-project.org/web/packages/glmnet/vignettes/glmnet.pdf

уравнение1
уравнение2

Учитывая, что каждое наблюдение имеет вес 1, это дает мне:

 delta[i]=crossprod(X[, i], X[, i])* (beta_last[i] - beta_new[i])**2
 

Затем я проверяю, является ли max (delta)> = eps, как описано в виньетке

Используя этот критерий, я не получаю того же количества итераций, что и результаты glmnet (часто с задержкой в одну или две итерации), что наводит меня на мысль, что он устарел. Кстати, похоже, что критерий сходимости алгоритма glmnet в случае Гаусса регулярно менялся в последние несколько лет.

Знаете ли вы, какой критерий используется для определения сходимости алгоритма?

Заранее спасибо за вашу помощь.

Ответ №1:

glmnet перед началом подгонки весовые коэффициенты перемасштабируются для суммирования до 1, поэтому вам не хватает коэффициента 1 / n в определении delta [i] . Но с этим исправлением этот критерий используется в текущей версии glmnet (4.1-3), а также в версии 4.1-2. Имейте в виду, могут быть и другие различия, такие как active set / strong set, которые вы можете использовать не совсем так, как glmnet does, что также может повлиять на количество реализованных вами спусков по координатам.