λжурнал( λ )∑i| βi|
З цією метою я створив деякі корельовані та некорельовані дані, щоб продемонструвати:
x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]
sigma <- matrix(c( 1, -.5, 0,
-.5, 1, -.5,
0, -.5, 1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]
Дані x_uncorr
мають некорельовані стовпці
> round(cor(x_uncorr), 2)
[,1] [,2] [,3]
[1,] 1.00 0.01 0.00
[2,] 0.01 1.00 -0.01
[3,] 0.00 -0.01 1.00
при цьому x_corr
має заздалегідь встановлену кореляцію між стовпцями
> round(cor(x_corr), 2)
[,1] [,2] [,3]
[1,] 1.00 -0.49 0.00
[2,] -0.49 1.00 -0.51
[3,] 0.00 -0.51 1.00
Тепер давайте розглянемо графіки ласо для обох цих випадків. Спочатку некорельовані дані
gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)
Виділяються пара особливостей
- Прогнози переходять до моделі в порядку їх величини істинного коефіцієнта лінійної регресії.
- ∑i| βi|∑i|βi|
- Коли новий предиктор входить у модель, він детерміновано впливає на нахил шляху коефіцієнтів усіх прогнозів, які вже є в моделі. Наприклад, коли другий предиктор входить у модель, нахил першого шляху коефіцієнта розрізається навпіл. Коли третій предиктор входить у модель, нахил шляху коефіцієнта дорівнює третині його початкового значення.
Це все загальні факти, що стосуються регресії ласо з некорельованими даними, і всі вони можуть бути або доведені вручну (хороша вправа!), Або знайдені в літературі.
Тепер давайте робити корельовані дані
gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)
Ви можете прочитати деякі речі з цього сюжету, порівнявши його з неспорідненим випадком
- Перший та другий контури предиктора мають таку саму структуру, як і некорельований випадок, поки третій предиктор не ввійде в модель, навіть якщо вони співвідносяться. Це особливість двох випадків передбачення, які я можу пояснити в іншій відповіді, якщо є інтерес, це займе мене трохи далеко від поточної дискусії.
- ∑ | βi|
Тож тепер давайте подивимось на ваш сюжет із набору даних про автомобілі та прочитаємо деякі цікаві речі (я відтворив ваш сюжет, щоб ця дискусія була легше читати):
Слово попередження : Я написав наступний аналіз, який базувався на припущенні, що криві показують стандартизовані коефіцієнти, у цьому прикладі їх немає. Нестандартні коефіцієнти не є безрозмірними і не порівнянні, тому з них не можна робити висновків з точки зору прогнозної важливості. Щоб наступний аналіз був достовірним, будь ласка, зробіть вигляд, що графік має стандартизовані коефіцієнти, і будь ласка, виконайте власний аналіз на стандартизованих шляхах коефіцієнта.
- Як ви кажете,
wt
прогноз здається дуже важливим. Він входить в модель спочатку і має повільний і стійкий спуск до остаточного значення. У нього є кілька кореляцій, які роблять його злегка кумедною їздою, am
зокрема, здається, він має драстичний ефект, коли він заходить.
am
також важливо. Він з'являється пізніше і співвідноситься з тим wt
, що впливає на схил wt
насильницьким чином. Це також співвідноситься з carb
і qsec
тому, що ми не бачимо передбачуваного пом’якшення схилу, коли вони входять. Після того, як ці чотири змінних увійшов , хоча ми дійсно бачимо хороший некорреліровани шаблон, так що , здається, коррелірованни з усіма провісниками в кінці.
- Щось входить приблизно в 2,25 на осі x, але сам шлях не помітний, його можна виявити лише за впливом на параметри
cyl
та wt
параметри.
cyl
досить захоплююче. Він входить другий, тому важливий для маленьких моделей. Після інших змінних, і особливо am
введених, це вже не так важливо, і його тенденція повертається назад, врешті-решт, це все, окрім як видалено. Здається, ефект cyl
може бути повністю захоплений змінними, які вводяться в кінці процесу. Від того, чи є більш доцільним використання cyl
, або додатковою групою змінних, насправді залежить від компромісу зміщення зміщення. Наявність групи у вашій кінцевій моделі суттєво збільшить її відхилення, але, можливо, нижчий ухил компенсує це!
Це невеликий вступ до того, як я навчився читати інформацію з цих сюжетів. Я думаю, що вони безліч задоволень!
Дякую за чудовий аналіз. Якщо говорити просто, ви б сказали, що wt, am і cyl - це 3 найважливіші прогнози mpg. Крім того, якщо ви хочете створити модель для прогнозування, які з них ви включите на основі цієї цифри: wt, am і cyl? Або якесь інше поєднання. Крім того, вам здається, що вам не потрібна найкраща лямбда для аналізу. Хіба це не важливо, як при регресії хребта?
Я б сказав, що це стосується wt
і am
чіткого вирізання, вони важливі. cyl
набагато тонкіший, він важливий у маленькій моделі, але зовсім не доречний у великій.
Я б не зміг визначити, що включати, виходячи лише з фігури, що дійсно повинно відповісти в контексті того, що ви робите. Можна сказати , що якщо ви хочете модель три провісника, а потім wt
, am
і cyl
це хороший вибір, так як вони є актуальними у великій схемі речей, і повинні в кінцевому підсумку, розумних розмірах ефекту в невеликої моделі. Це ґрунтується на припущенні, що у вас є деякі зовнішні підстави бажати невеликої трьох моделей прогнозів.
Це правда, цей тип аналізу розглядає весь спектр лямбда і дозволяє встановлювати взаємозв'язки в межах різних складностей моделі. Однак, для остаточної моделі я думаю, що налаштування оптимальної лямбда дуже важлива. За відсутності інших обмежень я б неодмінно використовував перехресну валідацію, щоб знайти, де уздовж цього спектру найбільш передбачувана лямбда, а потім використати цю лямбда для остаточної моделі та остаточного аналізу.
λ
В іншому напрямку іноді існують зовнішні обмеження щодо того, наскільки складною може бути модель (витрати на впровадження, застарілі системи, пояснювальний мінімалізм, інтерпретація бізнесу, естетична спадщина), і такий вид перевірки може допомогти вам зрозуміти форму ваших даних, і компроміси, які ви робите, вибираючи меншу за оптимальну модель.
-1
вglmnet(as.matrix(mtcars[-1]), mtcars[,1])
.