Как сделать выбор поднабора логистической регрессии?


47

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

Любая помощь или предложения будут с благодарностью.


Существуют функции, которые выполняют автоматический поиск. Вы должны взглянуть на функцию шага . Раздел 5.4 иллюстрирует этот момент: data.princeton.edu/R/glms.html
— октябрь

Извините, но мое сообщение было отредактировано так, что оно больше не задает мой вопрос. У меня 35 (26 значимых) объясняющих переменных в моей модели логистической регрессии. Мне нужна наилучшая возможная комбинация из 8, а не лучшее подмножество, и ни в коем случае я не интересовался поэтапным подходом или подходом со всеми подмножествами. В этой 8. нет места для маневра, я просто подумал, что кто-то, возможно, знает, как я могу подобрать все комбинации из 8 дополнительных переменных, и он может сказать мне, что максимизирует вероятность (извините за пердеть мозга R-квадрата, но AIC также не имеет значения, так как У меня фиксированное количество параметров, 8).
— Леендерт

Вы можете вернуться к предыдущей версии своего поста или объединить обе правки. Я уверен, что @mpiktas старался улучшить его внешний вид и просто не заметил параметров No.
— ЧЛ

@ Все: Большое спасибо. В конце концов я использовал много разных вещей в надежде, что они все дадут одинаковые ответы. И они сделали. Я использовал пакеты BMA, bestglm и glmnet, а также функцию step. Подходили модели со всеми из них, и не было расхождений в том, что BMA с maxcol = 9 и шагом считалось лучшей моделью. Все эксперты в области вокруг меня казались очень довольными переменными, и чувствовали, что это было довольно прогрессивно. Так что спасибо за весь вклад. Я действительно все это использовал.
— Леендерт

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

Ответы:


28

Пошаговые и "все подмножества" методы вообще плохие. См. Остановка пошагово: почему пошаговые методы плохи и что вы должны использовать , Дэвид Касселл и я (мы использовали SAS, но урок применим) или стратегии регрессионного моделирования Фрэнка Харрелла. Если вам нужен автоматический метод, я рекомендую LASSO или LAR. Пакет LASSO для логистической регрессии доступен здесь , другая интересная статья о повторном LASSO для логистики


6
(+1) Что касается пакетов R, есть также glmnet (реализация с алгоритмом спуска по алгоритму, Фридман и колл.) И штраф (позволяет сохранить некоторую переменную в невыполненном состоянии). Следует отметить, что Ф. Харрелл предоставляет штрафные оценки ML для GLM (см. lrmИли его учебник по RMS для получения дополнительной информации).
— ЧЛ

(+1) Хорошая статья, кажется, я должен начать выходить далеко за рамки утверждений автора в этом вопросе (не первый раз, когда я этого не делал). @chl (+1) идеальные альтернативные предложения тоже.
— Дмитрий Челов

@chl: +1 для glmnet, это отличный пакет.
— Зак

1
@chl Спасибо! Одной из проблем с R является отслеживание пакетов (их так много!), Которые являются лучшими. Представления задач действительно помогают
— Питер Флом - Восстановить Монику

2
Если ваши переменные коллинеарны, лучше использовать эластичную сеть, используя glmnet, скажем, с альфа = 0,5, поскольку LASSO имеет тенденцию случайным образом выбрасывать высококоллинеарные переменные из модели
— Том Вензелерс

15

R2AICBIC

Логистическая регрессия оценивается методом максимального правдоподобия, поэтому leapsздесь не используется напрямую. Расширение leapsдля glm()функций является bestglm пакет (как правило , рекомендации следует, консультируйтесь виньетки там).

Вас также может заинтересовать статья Дэвида В. Хосмера, Борко Йовановича и Стэнли Лемешоу «Логистическая регрессия лучших подмножеств» // Biometrics Vol. 45, No. 4 (Dec., 1989), pp. 1265-1270 (обычно доступна через университетские сети).


2
R2BIC,AIC8BICAICR2

8

любой академический справочник дляR2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
— SIslam

примечание о том bestglm, что он использует leapsв бэкэнде для расчета! Таким образом, произойдет сбой, если в наборе данных есть NA, и появится сообщение типа Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) Но что интересно, в моем наборе данных нет NA, а есть несколько нулей, тем не менее, эта функция жалуется и выдает именно это сообщение !!
— SIslam

glmnet также хорош, и может также делать модели, которые учитывают все возможные эффекты взаимодействия 1-го порядка
— Том Венселерс

6

Одна идея состоит в том, чтобы использовать случайный лес, а затем использовать показатели важности переменных, которые он выводит, чтобы выбрать ваши лучшие 8 переменных. Другой идеей было бы использовать пакет "boruta", чтобы повторить этот процесс несколько сотен раз, чтобы найти 8 переменных, которые наиболее важны для модели.


@ Зач. Предлагаете ли вы полагаться на RF для выполнения выбора функций, а затем применять GLM - в этом случае есть риск переоснащения или чрезмерного оптимизма - или использовать RF (со стандартными показателями разной важности, или актуальный выбор) как самостоятельный инструмент?
— ЧЛ

@chl: Я предлагал использовать RF для выбора функций, а затем применить GLM. Я согласен, что есть риск перебора, но ОП сказал, что ему нужно ровно 8 переменных.
— Зак

1
@ Зач "ровно 8 переменных" ... Затем вы несколько мягко устанавливаете пороговые значения потенциальных переменных, представляющих интерес, на основе показателя важности переменной (который благодаря тому, что он основан на перестановке и двойной повторной выборке, должен быть свободным от смещения) и затем повторно вставьте их в GLM. ИМХО, вы нарушаете контроль над перегрузкой через мешки. Это также описано в ESLII от Hastie et al .: выбор функции, если таковой имеется, должен быть включен в процедуру перекрестной проверки (где перекрестная проверка включает оценку производительности модели).
— ЧЛ

@chl: Разве кросс-пакет "boruta" пакета r не проверяется, если запустить случайный лес несколько раз? Вы в основном говорите, что нам нужна «мета-перекрестная проверка», когда вы делаете выбор переменных и подгоняете свою модель к случайным подмножествам данных?
— Зак

3
@ Zach Моя точка зрения заключалась в том, что мешки, или, в частности, RF, предотвращают переоснащение (в определенной степени), если вы остаетесь в той же цепочке инструментов. Если вы используете результаты из RF и затем посмотрите, как другая модель будет работать с теми же данными, то вы прервете цикл CV. Но почему бы не использовать непосредственно RF для классификации? Другим решением было бы использование RF на обучающей выборке, а затем применение GLM на удерживаемой выборке (которая также может быть перекрестно проверена).
— ЧЛ

0

stats::stepфункции или более общая MASS::stepAICподдержка функции lm, glm(т.е. логистическая регрессия) и aovсемейные модели.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.