Я хочу использовать регрессию Лассо или Риджа для модели с более чем 50 000 переменных. Я хочу сделать это, используя программный пакет в R. Как я могу оценить параметр усадки ( )?
Редактирование:
Вот точка, до которой я добрался:
set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000, replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)
mydf <- data.frame(Y, X)
require(MASS)
lm.ridge(Y ~ ., mydf)
plot(lm.ridge(Y ~ ., mydf,
lambda = seq(0,0.1,0.001)))
У меня вопрос: как узнать, какая лучше всего подходит для моей модели?
Ответы:
Функцияλ ℓ1 ℓ1 ℓ2 α
cv.glmnet
из пакета R glmnet выполняет автоматическую перекрестную проверку на сетке значений используемых для -пенализованных задач регрессии. В частности, для лассо. Пакет glmnet также поддерживает более общий штраф за эластичную сеть , который представляет собой комбинацию и . Начиная с версии 1.7.3. пакета, принимающего параметр равным 0, дает ребристую регрессию (по крайней мере, эта функциональность не была документирована до недавнего времени).Перекрестная проверка - это оценка ожидаемой ошибки обобщения для каждого и может быть разумно выбран в качестве минимизатора этой оценки. Функция возвращает два значения . Минимизатор, и всегда больше , который является эвристическим выбором производящего менее сложную модель, для которой производительность с точки зрения предполагаемой ожидаемой ошибки обобщения находится в пределах одной стандартной ошибки минимума. Различные варианты функций потерь для измерения ошибки обобщения возможны в пакете glmnet. Аргумент определяет функцию потерь.λ λ λ λ
cv.glmnet
lambda.min
lambda.1se
type.measure
Альтернативно, пакет R mgcv содержит широкие возможности для оценки с квадратичным штрафом, включая автоматический выбор параметров штрафа. Реализованные методы включают обобщенную перекрестную проверку и REML, как упомянуто в комментарии. Более подробную информацию можно найти в книге авторов пакета: Wood, SN (2006) Обобщенные аддитивные модели: введение в R, CRC.
источник
cv.glmnet
возвращает два значения для , и ( «один стандарт ошибок» правила).lambda.min
lambda.1se
Этот ответ специфичен для MATLAB, однако основные понятия должны быть очень похожи на те, к которым вы привыкли в R ...
В случае с MATLAB у вас есть возможность запустить лассо с включенной перекрестной проверкой.
Если вы сделаете это, функция лассо сообщит о двух критических значениях параметров
Вы также получите хороший маленький график, который вы можете использовать, чтобы проверить отношения между лямбда и CVMSE
В общем, вы выбираете значение лямбда, которое находится между синей линией и зеленой линией.
Следующая запись блога включает в себя демонстрационный код, основанный на некоторых примерах в
Тибширани Р. (1996). Регрессивная усадка и отбор с помощью лассо. Дж. Ройал. Statist. Soc B., Vol. 58, № 1, стр. 267-288).
http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/
источник
Я добился большого успеха, используя эффективный AIC, то есть используя AIC с эффективными степенями свободы - см. Gray JASA 87: 942 1992 для эффективного df. Это реализовано для штрафа в пакете R для линейных и логистических моделей, и Эта функция может быть использована для определения коэффициента усадки, который оптимизирует эффективную AIC. Примером, показывающим, как сделать дифференциальную усадку (например, больше усадки для взаимодействий), является Harrell et al Stat в Med 17: 909, 1998.L2
rms
rms
pentrace
источник