Алгоритмы автоматического выбора модели


193

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

Моя проблема в том, что я не могу найти методологию или реализацию с открытым исходным кодом (я просыпаюсь в Java). Методология, которую я имею в виду, будет выглядеть примерно так:

  1. рассчитать матрицу корреляции всех факторов
  2. выбрать факторы, которые имеют низкую корреляцию друг с другом
  3. удалить факторы, которые имеют низкий т-стат
  4. добавить другие факторы (все еще основанные на низком коэффициенте корреляции, найденном в 2.).
  5. Повторите несколько раз, пока какой-либо критерий (например, AIC) не превысит определенный порог, или не сможет, или мы не сможем найти большее значение.

Я понимаю, что для этого есть реализация R (stepAIC), но я нахожу код довольно сложным для понимания. Также мне не удалось найти статьи, описывающие ступенчатую регрессию.


72
Честно говоря, я думаю, что это провальная идея, которая почти наверняка приведет ко многим ложным выводам.
Gung

4
@ Gung: хотя я согласен, что слепое следование за результатом выбора модели - плохая идея, я думаю, что это может быть полезно в качестве отправной точки анализа. В моем случае у меня есть несколько сотен доступных факторов, и я хотел бы выбрать 5-10 наиболее подходящих. Я не вижу, как я мог бы сделать это без автоматического выбора модели (который позже будет изменен вручную).
S4M

12
Все процедуры выбора модели зависят от проблем, которые я обсуждаю в своем ответе ниже. Кроме того, чем больше число возможных факторов, по которым вы хотите выполнить поиск, тем более серьезными становятся эти проблемы, и увеличение не является линейным. В то время как есть несколько лучших подходов (обсуждаемых @Zach), которые следует использовать в сочетании с перекрестной проверкой (обсуждаемой @JackTanner), выбор, основанный на t, r и AIC, не входит в их число. Более того, при сотнях факторов количество необходимых данных может исчисляться миллионами. К сожалению, перед вами стоит очень сложная задача.
gung

7
Какова цель выбора модели? Это для модели прогнозирования / прогнозирования или вы ищете важные переменные? Также, насколько большой набор данных вы используете - сколько наблюдений и сколько переменных?
вероятностная

6
Интересные взгляды здесь, но я думаю, что негативный взгляд на алгоритмические процедуры выбора модели немного устарел. Взять, к примеру, недавнюю работу Дэвида Хендри в области эконометрики, в частности его работу над программным обеспечением PcGive и методами насыщения. Лекция с обзором его подхода может быть найдена здесь . Как указал @MichaelChernick (и Хендри тоже это сделает!), Знание предмета очень важно. Вот почему в предметных специалистах есть ценность - позволить алгоритмам действовать в одиночку - ошибка.
Грэм Уолш

Ответы:


333

Я думаю, что этот подход ошибочен, но, возможно, будет более полезным, если я объясню почему. Желание узнать лучшую модель с учетом некоторой информации о большом количестве переменных вполне понятно. Более того, это ситуация, в которой люди, кажется, регулярно оказываются. Кроме того, многие учебники (и курсы) по регрессии охватывают методы поэтапного отбора, что подразумевает, что они должны быть законными. К сожалению, однако, это не так, и сопряжение этой ситуации и цели довольно трудно успешно преодолеть. Ниже приведен список проблем с автоматическими пошаговыми процедурами выбора модели (приписан Фрэнку Харреллу и скопирован здесь ):

  1. Это дает R-квадрат значения, которые сильно смещены, чтобы быть высокими.
  2. Тесты F и хи-квадрат, указанные рядом с каждой переменной в распечатке, не имеют заявленного распределения.
  3. Метод дает доверительные интервалы для эффектов и прогнозируемых значений, которые являются ложно узкими; см. Альтман и Андерсен (1989).
  4. Это дает p-значения, которые не имеют правильного значения, и правильная коррекция для них является сложной проблемой.
  5. Это дает смещенные коэффициенты регрессии, которые нуждаются в усадке (коэффициенты для остальных переменных слишком велики; см. Tibshirani [1996]).
  6. Это имеет серьезные проблемы при наличии коллинеарности.
  7. Он основан на методах (например, F-тесты для вложенных моделей), которые должны были использоваться для проверки заранее определенных гипотез.
  8. Увеличение размера выборки не очень помогает; см. Derksen and Keselman (1992).
  9. Это позволяет нам не думать о проблеме.
  10. Он использует много бумаги.

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

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

set.seed(59)
intrinsic_ability = runif(30, min=9, max=10)
time = 31 - 2*intrinsic_ability + rnorm(30, mean=0, sd=.5)

Результаты первой гонки показаны на следующем рисунке вместе с комментариями тренера для детей.

первая гонка

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

вторая гонка

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

Теперь, какое это имеет отношение к методам автоматического (например, пошагового) выбора модели? Разработка и подтверждение модели, основанной на том же наборе данных, иногда называется дноуглублением данных, Хотя между переменными существует некоторая базовая связь, и ожидается, что более сильные отношения приведут к более сильным оценкам (например, более высокая t-статистика), это случайные переменные, и полученные значения содержат ошибку. Таким образом, когда вы выбираете переменные на основе более высоких (или более низких) реализованных значений, они могут быть такими из-за их истинного значения, ошибки или обоих. Если вы продолжите в том же духе, вы будете удивлены так же, как и тренер после второй гонки. Это верно, независимо от того, выбираете ли вы переменные на основе высокой t-статистики или низкой корреляции. Да, использование AIC лучше, чем использование p-значений, потому что это наказывает модель за сложность, но AIC сама по себе является случайной величиной (если вы проводите исследование несколько раз и подходите к одной и той же модели, AIC будет колебаться, как все остальное). К несчастью,

Я надеюсь, что это полезно.


43
Феноменальное объяснение дноуглубительных работ.
Фрэнк Харрелл

17
2L+kpPr(χ12>k)

7
pk2logN2L

9
(2L1+2p0+2)(2L0+2p0)=2(L1L0)+2, Теперь первый член - это статистика отношения правдоподобия, на которой основано значение p. Поэтому мы добавляем дополнительный параметр, если статистика отношения правдоподобия больше некоторого предела. Это то же самое, что делает подход p-значения. Здесь есть только концептуальная разница
вероятностная

2
для иллюстрации, почему AIC не решает проблему, см .: Mundry, R. (2011). Вопросы статистического вывода, основанного на теории информации - комментарий с точки зрения распространителя. Поведенческая экология и социобиология, 65 (1), 57-68.
Янв

70

Ознакомьтесь с пакетом каретки в R. Это поможет вам перекрестно проверить пошаговые регрессионные модели (используйте method='lmStepAIC'или method='glmStepAIC') и может помочь вам понять, как эти типы моделей имеют плохую прогностическую эффективность. Кроме того, вы можете использовать findCorrelationфункцию в карете для определения и исключения коллинеарных переменных, а rfeфункцию в карете для исключения переменных с низкой t-статистикой (использовать rfeControl=rfeControl(functions=lmFuncs)).

Однако, как уже упоминалось в предыдущих ответах, эти методы выбора переменных могут создать вам проблемы, особенно если вы делаете их итеративно. Удостоверьтесь, что вы оцениваете свои результаты на ПОЛНОСТЬЮ выдержанном тестовом наборе. Даже не смотрите на тестовый набор, пока вы не будете довольны своим алгоритмом!

Наконец, может быть лучше (и проще) использовать прогностическую модель со «встроенным» выбором признаков, таких как регрессия гребня, лассо или эластичная сеть. В частности, попробуйте method=glmnetаргумент для каретки и сравните перекрестно проверенную точность этой модели с method=lmStepAICаргументом. Я предполагаю, что первый даст вам гораздо более высокую точность вне выборки, и вам не нужно беспокоиться о реализации и проверке собственного алгоритма выбора переменных.


1
log(λ2+β2)

2
@probabilityislogic Знаете ли вы о каких-либо хороших реализациях двойного наказания по Парето на языке, подобном rили python? Я хотел бы попробовать это.
Зак

1
Исходя из того, что я понимаю, выбор модели с помощью AIC и проверка по принципу «оставь один раз» - это, по сути, одно и то же (асимптотическая эквивалентность, см. Stone, 1977) , поэтому AIC и некоторые типы перекрестной проверки могут привести к очень схожим Результаты. Однако я не использовал пакет caret, и из вызовов методов кажется, что AIC действительно используется в некоторых случаях.
файл под водой

38

Я полностью согласен с проблемами, описанными @gung. Тем не менее, на самом деле, выбор модели - это реальная проблема, требующая реального решения. Вот что я бы использовал на практике.

  1. Разделите ваши данные на обучающие, проверочные и тестовые наборы.
  2. Модели поездов на вашем тренировочном наборе.
  3. Измерьте производительность модели на наборе проверки с помощью показателя, например RMSE прогнозирования, и выберите модель с наименьшей ошибкой прогнозирования.
  4. При необходимости разработайте новые модели, повторите шаги 2-3.
  5. Сообщите, насколько хорошо модель работает на тестовом наборе.

Для примера использования этого метода в реальном мире, я считаю, что он был использован в конкурсе Netflix Prize.


15
n>20000

5
@Frank: Как вы думаете, почему N должно быть так высоко?
rolando2

14
Из-за плохой точности. Если вы разделитесь снова, вы можете получить очень разные результаты. Вот почему люди делают 100 повторов 10-кратной перекрестной проверки или начальной загрузки.
Фрэнк Харрелл

10
@FrankHarrell От чего зависит цифра n> 20000? Это основано на оригинальном комментарии автора о наличии « нескольких сотен факторов »? Или это не зависит от какого-либо аспекта данных?
Даррен Кук

33
Тип тестирования, на котором я тестировал разделение данных, был n = 17000 с долей 0,3, имеющей событие, и имеющей около 50 параметров, исследованных или вписанных в бинарную логистическую модель. Я использовал случайное разделение 1: 1. Проверенная область ROC в тестовом образце существенно изменилась, когда я повторно разделил данные и начал заново. См. Исследования методов, используемых в тексте в biostat.mc.vanderbilt.edu/rms для имитационных исследований и связанных с ними работ, дающих больше информации.
Фрэнк Харрелл

15

Чтобы ответить на вопрос, есть несколько вариантов: 1) все подмножество AIC / BIC 2) пошаговое значение p 3) пошаговое значение AIC / BIC 4) регуляризация, такая как LASSO (может быть основана на AIC / BIC или CV 5) генетический алгоритм (ГА) 6) другие? 7) использование неавтоматического, теоретического («предметного знания») ориентированного отбора

Следующий вопрос будет, какой метод лучше. В этом документе (doi: 10.1016 / j.amc.2013.05.016) указано, что «все возможные регрессии» дали те же результаты для предложенного ими нового метода, и пошагово хуже. Простая GA между ними. В этой статье (DOI: 10.1080 / 10618600.1998.10474784) сравнивается штрафная регрессия (мост, лассо и т. Д.) С «скачками и ограничениями» (кажется, что это исчерпывающий алгоритм поиска, но быстрее), а также обнаруживается, что «модель моста согласуется с лучшей моделью из выбор подмножества методом скачков ». Эта статья (doi: 10.1186 / 1471-2105-15-88) показывает, что GA лучше, чем LASSO. В этой статье (DOI: 10.1198 / jcgs.2009.06164) предложен метод - по существу подход, основанный на использовании всех подмножеств (основанный на BIC), но разумно сокращающий время вычислений. Они демонстрируют этот метод лучше, чем LASSO. Интересно, что этот документ (DOI: 10.1111 / j.1461-0248.2009.01361.

Таким образом, в целом результаты неоднозначны, но у меня сложилось впечатление, что GA кажется очень хорошим, хотя ступенчатое не может быть слишком плохим и быстрым.

Что касается 7), использование неавтоматического, теоретического («предметного знания») ориентированного отбора. Это отнимает много времени, и это не обязательно лучше, чем автоматический метод. Фактически в литературе о временных рядах хорошо известно, что автоматизированный метод (особенно коммерческое программное обеспечение) превосходит людей-экспертов "с существенным преимуществом" (doi: 10.1016 / S0169-2070 (01) 00119-4, стр. 561, например, выбор различных экспоненциальных сглаживаний и модели ARIMA).


6
Имейте в виду, что вы можете получить различную производительность в исследованиях моделирования различных алгоритмов выбора, изменив процесс создания данных в пользу (даже если не намеренно) конкретной процедуры. Вопрос о том, какой подход будет быстрее или медленнее, отличается, но потенциально все еще важен.
Gung

2
Фактически, примеры из оригинальной статьи Тибширани о LASSO хорошо иллюстрируют точку зрения @ gung. То же самое касается сравнительных исследований различных методов на реальных данных. Кстати, ваша последняя ссылка правильно? Документ Clements & Hendry с указанным вами документом DOI не претендует на то, что автоматизированные методы превосходят людей-экспертов или вообще используют слова «с большим отрывом». (Было бы хорошо, если бы вы дали полные ссылки.)
Scortchi

Нашел его: Goodrich (2001), «Коммерческое программное обеспечение в M3-Competition», Int. J. Forecast., 17, с. 560–565. Он находится в той же коллекции «Комментарии к M3-Competition», что и документ Clements & Hendry, поэтому Googling DOI отправил меня туда.
Scortchi

В любом случае, не совсем ясно, что комментарий Гудрича имеет какое-либо отношение к предметной экспертизе.
Scortchi

1
@ Scortchi, может быть, это станет более ясным в статье, начиная со страницы 581 по этому вопросу журнала. Это в большей степени связано с «M2-конкуренцией», в которой методы автоматического прогнозирования сравнивались с приглашенными специалистами-людьми (включая некоторых громких имен в литературе временных рядов), которые знали экономический / отраслевой контекст и могли даже запросить дополнительную информацию у компаний, предоставивших данные.
heran_xp

6

Вот ответ из левого поля - вместо линейной регрессии используйте дерево регрессии (пакет rpart). Это подходит для автоматического выбора модели, потому что, немного поработав, вы можете автоматизировать выбор cp, параметра, который используется для избежания чрезмерной подгонки.


3

Линейная модель может быть оптимизирована путем реализации генетического алгоритма путем выбора наиболее ценных независимых переменных. Переменные представлены в алгоритме как гены, и лучшая хромосома (набор генов) затем выбирается после операторов кроссовера, мутации и т. Д. Он основан на естественном отборе - тогда лучшее «поколение» может выжить, иными словами, алгоритм оптимизирует функцию оценки, которая зависит от конкретной модели.


2
Это позволило бы выбрать «лучшие» переменные в данных , а не обязательно лучшие переменные в процессе / населении, генерирующем данные, поскольку он имеет доступ только к данным. Это не очень отличается от пошагового метода, который хотел OP.
gung

0

У нас есть функция в пакете R base stats, называемая step (), которая делает выбор моделей вперед, назад или пошагово на основе самого низкого AIC. Это также работает для факторных переменных. Разве это не сервер цели здесь?


-51

Я вижу, что мой вопрос вызвал большой интерес и интересные дебаты о правильности подхода автоматического выбора модели. Хотя я согласен с тем, что воспринимать результат автоматического выбора как должное рискованно, его можно использовать в качестве отправной точки. Итак, вот как я реализовал это для моей конкретной проблемы, которая состоит в том, чтобы найти лучшие n факторов, чтобы объяснить данную переменную

  1. сделать все переменные регрессии против отдельных факторов
  2. сортировать регрессию по заданному критерию (скажем, AIC)
  3. уберите факторы с низким t-stat: они бесполезны при объяснении нашей переменной
  4. в порядке, указанном в 2., попробуйте добавить факторы по одному в модель и сохраните их, когда они улучшат наш критерий. итерация для всех факторов.

Опять же, это очень грубо, могут быть способы улучшить методологию, но это моя отправная точка. Я отправляю этот ответ, надеясь, что он может быть полезен для кого-то еще. Комментарии приветствуются!


47
(1) Я не был свидетелем каких-либо «дебатов» в этой теме: все ответы и комментарии представляют одно и то же основное сообщение. (2) Ваша реализация является специальной версией ступенчатой ​​регрессии . Я согласен с тем, что он может быть полезен в качестве отправной точки при условии, что он не будет автоматически принят как самоцель
whuber

28
вы действительно приняли свой собственный ответ, который противоречит всем аргументам сообщества. Не удивительно видеть негативы здесь ...
Jank

23
Я считаю, что это первый раз, когда я вижу так много отрицательных голосов. @ САМ, почему бы тебе просто не принять некоторые из отличных ответов и удалить свой «ответ»?
Марбель

Является ли этот SE самый отрицательный ответ когда-либо?
Мкт

2
Похоже, вы ответили на важный вопрос @probabilityislogic, сказав, что ваша цель - «найти лучшие n факторов, объясняющих данную переменную». Построение модели для объяснения (чтобы понять причинно-следственную связь) должно быть сделано более намеренно и, как правило, гораздо более интенсивно, чем прогнозирование для построения модели.
rolando2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.