Функция R cv.glm (library: boot) вычисляет предполагаемую K-кратную ошибку прогнозирования перекрестной проверки для обобщенных линейных моделей и возвращает дельту. Имеет ли смысл использовать эту функцию для регрессии лассо (library: glmnet) и, если да, то как ее можно выполнить? Библиотека glmnet использует перекрестную проверку для получения лучшего параметра поворота, но я не нашел ни одного примера, который бы проверял окончательное уравнение glmnet.
r
regression
cross-validation
lasso
glmnet
kalakaru
источник
источник
Ответы:
Пример того , как сделать ванильный простой кросс-проверки для лассо в
glmnet
наmtcars
наборе данных.Загрузите набор данных.
Подготовить функции (независимые переменные). Они должны быть
matrix
классными. Самый простой способ преобразоватьdf
содержащие категориальные переменные вmatrix
это черезmodel.matrix
. Имейте в виду, по умолчаниюglmnet
подходит перехват, так что вам лучше убрать перехват из матрицы модели.Подготовьте ответ (зависимая переменная). Давайте закодируем автомобили с выше среднего
mpg
как эффективные ('1'), а остальные как неэффективные ('0'). Преобразуйте эту переменную в фактор.Запустите перекрестную проверку через
cv.glmnet
. Он получит параметры поalpha=1
умолчаниюglmnet
, о чем вы просили: регрессия лассо.Изучив результаты перекрестной проверки, вы можете быть заинтересованы по крайней мере в двух частях информации:
лямбда, что минимизирует перекрестную проверку ошибок.
glmnet
фактически обеспечивает 2 лямбды:lambda.min
иlambda.1se
. Это ваше суждение как практикующий статистик, который можно использовать.результирующие регуляризованные коэффициенты.
Пожалуйста, смотрите код R согласно приведенным выше инструкциям:
Заключительные комментарии:
Обратите внимание, что вывод модели ничего не говорит о статистической значимости коэффициентов, только значения.
Штраф l1 (лассо), о котором вы просили, печально известен нестабильностью, о чем свидетельствует этот пост в блоге и этот вопрос по обмену стека . Лучшим способом может быть перекрестная проверка
alpha
, которая позволит вам выбрать правильное сочетание штрафников l1 и l2.альтернативным способом перекрестной проверки может быть обращение к карету
train( ... method='glmnet')
и, наконец, лучший способ узнать больше о
cv.glmnet
его исходных настройкахglmnet
- это, конечно?glmnet
, консоль R)))источник