Як оцінити параметр усадки в регресії Лассо або хребта за допомогою змінних> 50K?


36

Я хочу використовувати регресію Лассо або хребта для моделі з більш ніж 50 000 змінних. Я хочу зробити це за допомогою програмного пакету в Р. Як я можу оцінити параметр усадки ( )?λ

Зміни:

Ось цей момент я вирішив:

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
Я не згоден - ви можете оцінити параметр згладжування, використовуючи змішаний модельний підхід. Методи Ремля існують, як і герархічні методи Байєса. Вам не потрібна дорога перехресна перевірка.
ймовірністьлогічний

1
@probabilityislogic дякую за інформацію. Було б чудово, якщо в сценарії буде мало деталей, як ми можемо це зробити за допомогою reml
Джон

2
Для регресії хребта перехресна перевірка одноразового відключення по суті є безкоштовною (статистика PRESS Аллена), і я вважав, що це досить хороший метод. Однак, маючи особливості, можливо, будь-який метод, який ви використовуєте, буде нестабільним, і повністю байєсівський підхід, маргіналізуючи як параметри, так і параметри регуляризації, швидше за все, буде більш надійним рішенням (як, на мою думку, ймовірність того, що це пропонувало). Якщо вам не подобаються байєсівські методи, то використовуйте мішки та переоцінюйте лямбда кожен раз.
Дікран Марсупіал

2
@Macro - (нічого подібного до відповіді через 18 місяців). У змішаному модельному підході є два додаткові терміни, які залежать лише від але не . Це іде - кількість бет, а X - матриця предиктора. Перший термін походить від , де є дисперсія помилки. Другий термін - корекція REML для врахування невизначеності підключення до . β - k log ( λ ) журнал | X T X + λ I | K & beta ; ~ N ( 0 , σ 2 λ - 1 ) σ 2 β = βλβ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

Альтернативно, пакет Rc mgcv містить широкі можливості для оцінки за допомогою квадратичної пеналізації, включаючи автоматичний вибір параметрів штрафу. Впроваджені методи включають узагальнену перехресну перевірку та REML, як згадується в коментарі. Більш детальну інформацію можна знайти в книзі авторів упаковки: Wood, SN (2006) Узагальнені моделі добавок: вступ до R, CRC.


1
Ви, ймовірно , захочете додати , що cv.glmnetповертає два значення для , і ( «один стандарт помилок» правила). λlambda.minlambda.1se
chl

@chl, дякую за пропозицію. Я мав би це додати.
NRH

15

Ця відповідь специфічна для MATLAB, проте основні поняття повинні бути досить схожими на те, що ви звикли з R ...

У випадку з MATLAB у вас є можливість запустити ласо з включеною перехресною перевіркою.

Якщо ви зробите це, функція lasso повідомить про два критичних значення параметра

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

Ви також отримаєте приємну маленьку діаграму, яку можете використовувати для перевірки взаємозв'язку лямбда та CVMSE

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

Загалом, ви вибрали значення лямбда, яке падає між синьою та зеленою.

Наступна публікація в блозі включає деякий демо-код на основі деяких прикладів у

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

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


10

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


Це здається дуже цікавою відповіддю, чи хотіли б ви трохи допрацювати?
Yair Daon

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.