Поведение dfmax в glmnet

#r #glmnet

#r #glmnet

Вопрос:

(ПРИМЕЧАНИЕ: Это слегка измененная версия сообщения, которое я сделал на другом форуме. Я не получил там ответов, отсюда и сообщение здесь. Если это не разрешено, пожалуйста, дайте мне знать, я удалю вопрос).

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

Настройка

Для конкретного набора данных я хочу ограничить количество объектов 3; исходные данные содержат 126 объектов. Вот что я запускаю:

 fit<-glmnet(data.matrix(X), data.matrix(y), family='multinomial', dfmax=3) 
d<-data.frame(tidy(fit)) 
  

Это значение d :

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

Мои вопросы о результатах:

  1. Я вижу там несколько значений lambda ; похоже, glmnet пытается подогнать lambda s, в которых число терминов близко к dfmax=3 . Таким образом, это меньше похоже на алгоритм LARs (где мы движемся поэтапно, добавляя переменные и можем остановиться на точном количестве переменных) и больше касается получения правильных lambda s для регуляризации, которые приводят к намеченному dfmax . Правильно ли это?
  2. Я предполагаю, что alpha играет роль в том, насколько близко мы можем подобраться к dfmax . В alpha=1 , где мы делаем lasso, и поэтому к нему легче подобраться dfmax , по сравнению с тем, когда alpha=0 мы делаем ridge. Правильно ли это понимание?
  3. Казалось бы, «соседство» с dfmax — это лучшее, что мы можем сделать. Или мне не хватает параметра, который возвращает меня к модели с точным dfmax (К вашему сведению: alpha=1 похоже, что он также не приводит меня к точному количеству ненулевых терминов, по крайней мере, в этом наборе данных).
  4. В первом решении — step=1 переменные не используются. Означает ли это, что относительные шансы равны константе?
  5. Что pmax делает?

Заранее спасибо!

Комментарии:

1. Я тоже только начинаю с glmnet , но по поводу вашего последнего вопроса я нашел это . Кроме того, вы прочитали некоторые документы, но эта ссылка , если вы ее пропустили, может быть полезной (речь идет о версии R, но это не составит для вас большой проблемы, если вы используете версию Python).

2. Кроме того, прокрутите это примерно наполовину вниз и найдите elnet вызов.

3. Кроме того, прокрутите это примерно наполовину вниз и найдите elnet вызов. ne Соответствует dfmax и nx есть pmax . Очевидно, что «модель» означает конкретный выбор lambda и param является alpha . И n_features — количество независимых переменных. И «наибольшая модель (критерий остановки)», очевидно, относится к минимальной среднеквадратичной ошибке lambda (или около того) — количество ненулевых бета-версий увеличивается по мере lambda уменьшения.

4. @Mikeo’Connor Я вижу это спустя века, но спасибо тебе! Очень полезные комментарии! Короче говоря: если я хочу зафиксировать количество ненулевых терминов для классификации, мне нужно использовать только pmax glmnet пакете). Я обнаружил, что иногда алгоритм останавливается, прежде чем достигнет предписанного pmax значения — из-за размера шага по умолчанию lambda (предполагается, что алгоритм останавливается до того, как он превысит предоставленный pmax ). В этих случаях уменьшение размера шага часто помогает достичь точного pmax значения: используя большее число для nlambda (по умолчанию — 100 ).

5. Действительно, прошло некоторое время. Я все еще очень активно использую glmnet , но я отказался от попыток полагаться на pmax . Я просто просматриваю все результаты для всех гиперпараметров и выполняю «проверку» только с комбинациями, которые дают ряд функций, которые находятся в пределах моего целевого диапазона.