Что сделать вывод из этого лассо-сюжета (glmnet)

19

Ниже приведен график glmnet с альфа-значением по умолчанию (1, следовательно, лассо) с использованием mtcarsнабора данных в R с использованием mpgв качестве DV и других в качестве переменных-предикторов.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

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

Что мы можем сделать вывод из этого графика относительно различных переменных, особенно am, cylи wt(красные, черные и светло - голубые линий)? Как бы мы сформулировали результаты в отчете, который будет опубликован?

Я думал о следующем:

  1. wtявляется наиболее важным предсказателем mpg. Это негативно влияет на mpg.

  2. cylявляется слабым негативным предиктором mpg.

  3. amможет быть положительным предиктором mpg.

  4. Другие переменные не являются надежными предикторами mpg.

Спасибо за ваши мысли по этому поводу.

(Примечание: cylчерная линия, которая не достигает 0 до очень близко к ней.)

Изменить: Ниже приведен график (mod, xvar = 'lambda'), который показывает ось X в порядке, обратном приведенному выше графику:

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

(PS: Если вы находите этот вопрос интересным / важным, пожалуйста, проголосуйте за него;)

rnso
источник
Похоже , что вы забыли запятую перед -1в glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Ричард Харди
Если запятая не указана, R предполагает, что число будет номером столбца, поэтому оно работает.
rnso
Здорово, я не сейчас, что раньше.
Ричард Харди
2
@RichardHardy будь осторожен; это поведение отличается для фреймов данных и матриц. Кадр данных представляет собой список, и каждый столбец является элементом этого списка, поэтому my_data_frame[1]возвращает фрейм данных с одного столбца, в то время как , my_data_frame[[1]]и my_data_frame[, 1]как обратный вектор , который не «содержал» от кадра данных. Матрицы, однако, на самом деле просто плоские векторы со специальным атрибутом , который позволяет R для доступа к ним , как сетки, так my_matrix[1], my_matrix[1, 1]и my_matrix[[1]]все будет возвращать первый элемент из my_matrix. my_matrix[, 1] возвращает первый столбец.
Shadowtalker
2
Я упомяну только , что plot_glmnet функция в plotmo пакете дает несколько лучшие коэффициента графики , поскольку он берет на этикетке overplotting и некоторые другие детали. Примеры могут быть найдены в главе 6 в виньетке plotres .
Стивен Милборроу

Ответы:

39

λжурнал(λ)Σя|βя|

С этой целью я создал некоторые коррелированные и некоррелированные данные для демонстрации:

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)

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

Пара особенностей выделяются

  • Предикторы входят в модель в порядке их величины истинного коэффициента линейной регрессии.
  • Σя|βя|Σя|βя|
  • Когда новый предиктор входит в модель, он детерминистически влияет на наклон пути коэффициента всех предикторов, уже находящихся в модели. Например, когда второй предиктор входит в модель, наклон пути первого коэффициента уменьшается вдвое. Когда третий предиктор входит в модель, наклон пути коэффициента составляет одну треть от его первоначального значения.

Все это общие факты, которые относятся к регрессии лассо с некоррелированными данными, и все они могут быть либо доказаны вручную (хорошее упражнение!), Либо найдены в литературе.

Теперь давайте сделаем коррелированные данные

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

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

Вы можете прочитать некоторые вещи из этого сюжета, сравнив его с некоррелированным случаем

  • Первый и второй пути предикторов имеют ту же структуру, что и некоррелированный случай, пока третий предиктор не войдет в модель, даже если они коррелированы. Это особенность случая с двумя предикторами, который я могу объяснить в другом ответе, если есть интерес, он уведет меня немного далеко от текущего обсуждения.
  • Σ|βя|

Итак, теперь давайте посмотрим на ваш сюжет из набора данных автомобилей и прочитаем некоторые интересные вещи (я воспроизвел ваш сюжет здесь, чтобы это обсуждение было легче читать):

Предупреждение : я написал следующий анализ, основанный на предположении, что кривые показывают стандартизированные коэффициенты, в этом примере они не показывают . Нестандартизированные коэффициенты не являются безразмерными и несопоставимыми, поэтому из них нельзя сделать никаких выводов с точки зрения прогнозирующей важности. Чтобы следующий анализ был действительным, сделайте вид, что график имеет стандартизированные коэффициенты, и, пожалуйста, проведите собственный анализ по стандартным путям коэффициентов.

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

  • Как вы говорите, wtпредиктор кажется очень важным. Сначала он входит в модель и имеет медленный и устойчивый спуск к окончательному значению. У него есть несколько корреляций, которые делают его слегка ухабистым, amв частности, кажется, что он имеет радикальный эффект, когда вступает.
  • amтоже важно. Это приходит позже и соотносится с тем wt, как оно сильно влияет на уклон wt. Это также связанно с carbи qsec, так как мы не видим предсказуемое размягчения склона , когда те войти. После того, как эти четыре переменных вошел , хотя мы действительно видим хороший некоррелированный шаблон, так что , кажется, коррелированны со всеми предсказателями в конце.
  • Что входит около 2,25 по оси х, а сам его путь незаметный, вы можете обнаружить это только его влияние на cylи wtпараметры.
  • cylдовольно навязчиво. Входит вторым, поэтому важно для маленьких моделей. После других переменных, и особенно amвхода, это уже не так важно, и его тренд меняется на противоположный, в конце концов практически исчезая. Кажется, что эффект cylможет быть полностью уловлен переменными, которые вводятся в конце процесса. Является ли более подходящим использование cylили дополнительная группа переменных, действительно зависит от компромисса смещения. Наличие группы в вашей окончательной модели значительно увеличит ее дисперсию, но это может быть тот случай, когда более низкий уклон компенсирует это!

Это небольшое введение в то, как я научился считывать информацию с этих графиков. Я думаю, что они тонны веселья!

Спасибо за отличный анализ. Проще говоря, не могли бы вы сказать, что wt, am и cyl являются 3 наиболее важными предикторами mpg. Кроме того, если вы хотите создать модель для прогнозирования, какие из них вы будете включать на основе этого показателя: wt, am и cyl? Или какая-то другая комбинация. Кроме того, вам, кажется, не нужна лучшая лямбда для анализа. Разве это не важно, как в регрессии гребня?

Я бы сказал, что аргументы за wtи amчеткие, они важны. cylгораздо тоньше, это важно в маленькой модели, но совсем не актуально в большой.

Я не смог бы определить, что включать, основываясь только на рисунке, который действительно должен отвечать контексту того, что вы делаете. Можно сказать , что если вы хотите модель три предсказателя, а затем wt, amи cylэто хороший выбор, так как они актуальны в великой схеме вещей, и должны в конечном итоге, разумных размерах эффекта в небольшой модели. Это основано на предположении, что у вас есть какая-то внешняя причина желать иметь маленькую модель с тремя предикторами.

Это правда, что этот тип анализа просматривает весь спектр лямбд и позволяет отбирать отношения по ряду модельных сложностей. Тем не менее, для окончательной модели, я думаю, настройка оптимальной лямбды очень важна. В отсутствие других ограничений я бы определенно использовал перекрестную проверку, чтобы найти, где вдоль этого спектра находится наиболее прогнозирующая лямбда, а затем использовал бы эту лямбду для окончательной модели и окончательного анализа.

λ

С другой стороны, иногда существуют внешние ограничения на то, насколько сложной может быть модель (затраты на внедрение, устаревшие системы, объяснительный минимализм, интерпретация бизнеса, эстетическое наследие), и этот вид проверки действительно может помочь вам понять форму ваших данных, и компромиссы, которые вы делаете, выбирая модель меньше оптимальной.

Мэтью Друри
источник
Спасибо за отличный анализ. Проще говоря, не могли бы вы сказать, что wt, am и cyl являются 3 наиболее важными предикторами mpg. Кроме того, если вы хотите создать модель для прогнозирования, какие из них вы будете включать на основе этого показателя: wt, am и cyl? Или какая-то другая комбинация. Кроме того, вам, кажется, не нужна лучшая лямбда для анализа. Разве это не важно, как в регрессии гребня?
rnso
@rnso Я добавил ответ к своему ответу.
Мэтью Друри,
Возможно, «наследство» должно быть «экономным»?
Хатшепсут
@ Мэтью Друри, у меня есть несколько вещей, в которых я не уверен, я был бы признателен за ваше разъяснение, # вы написали «например, когда вводятся вторые предикторы», как я могу узнать из графика вторые предикторы или третьи предикторы / ввод , ## когда я могу сказать, что это предсказатели важны или нет. ### наконец, как я могу выбрать лучшую модель этого фитинга. Кроме того, легенда / метка включены автоматически. (Я реализовал этот пример в R)
Jeza
5
+6, я явно пропустил это, когда вышло. Действительно хорошая работа.
gung - Восстановить Монику