Как оценить параметр усадки в лассо или гребень регрессии с> 50K переменных?

36

Я хочу использовать регрессию Лассо или Риджа для модели с более чем 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)))

введите описание изображения здесь

У меня вопрос: как узнать, какая лучше всего подходит для моей модели?λ

Джон
источник
3
Параметр сглаживания не является статистически оцениваемым, но использует выбранное, чтобы максимизировать выборку вне выборки с использованием, например, перекрестной проверки. Я думаю, что стандартные пакеты для LASSO и Ridge Regression в R имеют встроенную функциональность, чтобы сделать это для вас - вы рассматривали это?
Макрос
4
Я не согласен - вы можете оценить параметр сглаживания, используя смешанный модельный подход. Существуют методы Reml, также как и иерархические байесовские методы. Вам не нужна дорогая перекрестная проверка.
вероятностная
1
@probabilityislogic спасибо за информацию. Было бы замечательно, если бы в сценарии было мало деталей, как мы можем сделать это с помощью reml
John
2
Для регрессии гребня перекрестная проверка по принципу «один-один-один» по существу бесплатна (статистика ПРЕССА Аллена), и я нашел, что это достаточно хороший метод. Однако с такими возможностями могут быть практически любые методы, которые вы используете, которые будут нестабильными, и полностью байесовский подход, маргинализирующий как параметры, так и параметры регуляризации, скорее всего, будет более надежным решением (как я полагаю, предполагал вероятность ошибки). Если вам не нравятся байесовские методы, используйте мешки и каждый раз переоценивайте лямбду.
Дикран Сумчатый
2
@Macro - (ничего похожего на ответ 18 месяцев спустя). В смешанном модельном подходе есть два дополнительных условия, которые зависят только от но не . Это игде - количество бета, а X - матрица предиктора. Первое слагаемое происходит от где - дисперсия ошибки. Второе слагаемое - это REML-поправка, учитывающая неопределенность в подключении . λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2β=β^
вероятностная

Ответы:

25

Функция cv.glmnetиз пакета R glmnet выполняет автоматическую перекрестную проверку на сетке значений используемых для -пенализованных задач регрессии. В частности, для лассо. Пакет glmnet также поддерживает более общий штраф за эластичную сеть , который представляет собой комбинацию и . Начиная с версии 1.7.3. пакета, принимающего параметр равным 0, дает ребристую регрессию (по крайней мере, эта функциональность не была документирована до недавнего времени).λ112α

Перекрестная проверка - это оценка ожидаемой ошибки обобщения для каждого и может быть разумно выбран в качестве минимизатора этой оценки. Функция возвращает два значения . Минимизатор, и всегда больше , который является эвристическим выбором производящего менее сложную модель, для которой производительность с точки зрения предполагаемой ожидаемой ошибки обобщения находится в пределах одной стандартной ошибки минимума. Различные варианты функций потерь для измерения ошибки обобщения возможны в пакете glmnet. Аргумент определяет функцию потерь.λλcv.glmnetλlambda.minlambda.1seλtype.measure

Альтернативно, пакет R mgcv содержит широкие возможности для оценки с квадратичным штрафом, включая автоматический выбор параметров штрафа. Реализованные методы включают обобщенную перекрестную проверку и REML, как упомянуто в комментарии. Более подробную информацию можно найти в книге авторов пакета: Wood, SN (2006) Обобщенные аддитивные модели: введение в R, CRC.

NRH
источник
1
Вы, вероятно , захотите добавить , что cv.glmnetвозвращает два значения для , и ( «один стандарт ошибок» правила). λlambda.minlambda.1se
ЧЛ
@chl, спасибо за предложение. Я должен был добавить это.
NRH
15

Этот ответ специфичен для MATLAB, однако основные понятия должны быть очень похожи на те, к которым вы привыкли в R ...

В случае с MATLAB у вас есть возможность запустить лассо с включенной перекрестной проверкой.

Если вы сделаете это, функция лассо сообщит о двух критических значениях параметров

  1. Значение лямбда, которое минимизирует среднеквадратичную ошибку
  2. Значение лямбда с наибольшей величиной усадки, чье CVMSE находится в пределах одной стандартной ошибки минимума.

Вы также получите хороший маленький график, который вы можете использовать, чтобы проверить отношения между лямбда и CVMSE

введите описание изображения здесь

В общем, вы выбираете значение лямбда, которое находится между синей линией и зеленой линией.

Следующая запись блога включает в себя демонстрационный код, основанный на некоторых примерах в

Тибширани Р. (1996). Регрессивная усадка и отбор с помощью лассо. Дж. Ройал. Statist. Soc B., Vol. 58, № 1, стр. 267-288).

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/

Ричард Уилли
источник
10

Я добился большого успеха, используя эффективный AIC, то есть используя AIC с эффективными степенями свободы - см. Gray JASA 87: 942 1992 для эффективного df. Это реализовано для штрафа в пакете R для линейных и логистических моделей, и Эта функция может быть использована для определения коэффициента усадки, который оптимизирует эффективную AIC. Примером, показывающим, как сделать дифференциальную усадку (например, больше усадки для взаимодействий), является Harrell et al Stat в Med 17: 909, 1998.L2rmsrms pentrace

Фрэнк Харрелл
источник
Похоже, очень интересный ответ, не могли бы вы уточнить немного?
Яир