Алгоритми автоматичного вибору моделі


193

Я хотів би реалізувати алгоритм автоматичного вибору моделі. Я думаю про поступову регресію, але все, що буде робити (він повинен базуватися на лінійних регресіях).

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

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

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


72
Чесно кажучи, я вважаю, що це згубна ідея, майже гарантована, що призведе до багатьох помилкових висновків.
gung

4
@gung: хоча я погоджуюся, що сліпо за результатами вибору моделі є поганою ідеєю, я думаю, що це може бути корисним як відправна точка аналізу. У моєму випадку у мене є кілька сотень факторів, і я хотів би вибрати 5-10 найбільш релевантних. Я не бачу, як я міг би це зробити без автоматичного вибору моделі (який згодом буде змінено вручну).
S4M

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

7
Яка мета вибору моделі? Це для моделі прогнозування / прогнозування чи шукаєте важливі змінні? Крім того, наскільки великим є набір даних, який ви використовуєте - скільки одержимостей і скільки змінних?
ймовірністьлогічний

6
Цікаві погляди тут, але я думаю, що негативний погляд на процедури вибору алгоритмічної моделі дещо застарілий. Візьмемо, наприклад, недавню роботу Девіда Хендрі в галузі економетрики, зокрема його роботу над програмним забезпеченням PcGive та методами насичення. Лекцію з оглядом його підходу можна знайти тут . Як зазначав @MichaelChernick (і Гендрі теж би це зробив!), Знання теми є (надзвичайно) важливими. Ось чому є цінність у предметних спеціалістів - помилка дозволити алгоритмам діяти самостійно.
Graeme Walsh

Відповіді:


333

Я думаю, що цей підхід помиляється, але, можливо, він буде кориснішим, якщо я поясню, чому. Бажання дізнатись найкращу модель з урахуванням деякої інформації про велику кількість змінних - цілком зрозуміло. Більше того, це ситуація, в якій люди, здається, регулярно опиняються. Крім того, багато підручників (та курсів) з регресії охоплюють ступінчасті методи вибору, що означає, що вони повинні бути законними. Однак, на жаль, їх немає, і для спарювання цієї ситуації та мети досить складно успішно орієнтуватися. Далі наведено перелік проблем із автоматизованими процедурами вибору ступінчастої моделі (приписується Френку Харреллу та скопійовано звідси ):

  1. Це дає значення R-квадрата, які погано упереджені, щоб бути високими.
  2. Тести F та chi-квадрата, що цитуються поруч із кожною змінною на роздруківці, не мають заявленого розподілу.
  3. Метод дає довірчі інтервали для ефектів та прогнозованих значень, які є хибно вузькими; див. Алтман і Андерсен (1989).
  4. Це дає р-значення, які не мають належного значення, і правильна корекція для них є складною проблемою.
  5. Він дає упереджені коефіцієнти регресії, які потребують усадки (коефіцієнти для інших змінних занадто великі; див. Tibshirani [1996]).
  6. У нього є серйозні проблеми за наявності колінеарності.
  7. Він заснований на методах (наприклад, F-тестах для вкладених моделей), які мали використовуватись для тестування попередньо визначених гіпотез.
  8. Збільшення розміру вибірки не дуже допомагає; див. Дерксен і Кесельман (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+кpПr(χ12>к)

7
pк2журналN-2L

9
(-2L1+2p0+2)-(-2L0+2p0)=-2(L1-L0)+2. Тепер перший термін - це коефіцієнт вірогідності, на якому базується р-значення. Тому ми додаємо додатковий параметр, якщо статистика коефіцієнта ймовірності більша, ніж деяке обмеження. Це те саме, що робить підхід p-значення. Тут є лише концептуальна різниця
ймовірністьлогічний

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

70

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

Однак, як уже згадувалося в попередніх відповідях, ці методи варіативного вибору, ймовірно, можуть доставити вам проблеми, особливо якщо ви робите їх повторно. Будьте абсолютно впевнені, що ви оцінюєте свою ефективність на ПОПЕРЕДЖЕННО проведеному тестовому наборі. Навіть не дивіться на тестовий набір, поки ви не задоволені своїм алгоритмом!

Нарешті, може бути краще (і простіше) використовувати модель прогнозування з "вбудованим" вибором функцій, таких як регресія хребта, ласо або еластична сітка. Зокрема, спробуйте method=glmnetаргумент для caret і порівняйте перехресну перевірку точності цієї моделі з method=lmStepAICаргументом. Я здогадуюсь, що перший призведе до набагато вищої точності поза вибіркою, і вам не доведеться турбуватися про впровадження та перевірку власного алгоритму вибору змінних.


1
журнал(λ2+β2)

2
@probabilityislogic Чи знаєте ви про якісь хороші реалізації подвійного парето-покарання, мовою на зразок rабо python? Я хотів би спробувати.
Зак

1
З того, що я розумію, вибір моделі за допомогою АПК та вивірка з перехресною валідацією - це по суті одне і те ж (асимптотична еквівалентність, див. Стоун, 1977) , тому AIC та деякі види перехресної перевірки, ймовірно, можуть призвести до дуже схожого результати. Однак я не використовував пакет caret, і з викликів методу здається, що AIC дійсно використовується в деяких випадках.
fileunderwater

38

Я повністю погоджуюся з проблемами, окресленими @gung. Однак, реалістично кажучи, вибір моделі є реальною проблемою, яка потребує реального рішення. Ось щось я би використав на практиці.

  1. Розділіть свої дані на навчальні, перевірочні та тестові набори.
  2. Тренуйте моделі на своєму навчальному наборі.
  3. Виміряйте ефективність моделі на наборі перевірки, використовуючи такий показник, як RMSE передбачення, і виберіть модель з найнижчою помилкою прогнозування.
  4. Потрібно розробити нові моделі, повторити кроки 2-3.
  5. Повідомте про ефективність моделі на тестовому наборі.

На прикладі використання цього методу в реальному світі, я вважаю, що він використовувався в конкурсі Netflix Prize.


15
н>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) генетичний алгоритм (GA) 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, page561, наприклад, вибір різних експоненціальних згладжувань) та моделі ARIMA).


6
Майте на увазі, що ви можете досягти різної продуктивності в симуляційних дослідженнях різних алгоритмів відбору, змінивши процес генерації даних на користь (навіть якщо не навмисно) певного розпорядку. Питання про те, який підхід буде швидшим чи повільнішим, є чітким, але потенційно все ще важливим.
гунг

2
Насправді приклади в оригінальному документі Тібширані про LASSO добре ілюструють точку @ gung. Те саме стосується порівняльних досліджень різних методів на реальних даних. До речі, ваша остання посилання? Документи Clements & Hendry з DOI, які ви надаєте, не стверджують, що автоматизовані методи перемагають людських експертів, або взагалі використовують слова "з великим запасом". (Було б добре, якби ви дали повні довідки.)
Scortchi

Знайшли: Goodrich (2001), "Комерційне програмне забезпечення в конкурсі M3", Int. J. Прогноз., 17, с. 560–565. Це під тією ж колекцією "Коментарії до M3-конкуренції", що і папір Clements & Hendry, і саме тому Googling DOI надіслав мене туди.
Scortchi

У будь-якому випадку, зовсім не ясно, що коментар Гудрича має щось спільне з експертизою предмета .
Scortchi

1
@Scortchi це може бути зрозуміліше у статті, що починається зі сторінки 581 цього випуску журналу. Він більше пов'язаний з "конкуренцією М2", в якій автоматичні методи прогнозування порівнювались із запрошеними експертами (включаючи деякі великі імена в літературі часових рядів), які знали економічний / галузевий контекст і могли навіть попросити додаткову інформацію у компаній, які надали дані.
heran_xp

6

Ось відповідь з лівого поля - замість лінійної регресії використовуйте дерево регресії (пакет rpart). Це підходить для автоматичного вибору моделі, оскільки за допомогою невеликої роботи ви можете автоматизувати вибір cp, параметра, який використовується для уникнення перенастроювання.


3

лінійну модель можна оптимізувати, застосовуючи генетичний алгоритм шляхом вибору найбільш цінних незалежних змінних. Змінні представляються генами в алгоритмі, а потім найкраща хромосома (набір генів) вибирається після операторів кросовер, мутацій тощо. Він заснований на природному відборі - тоді найкраще «покоління» може вижити, іншими словами, алгоритм оптимізує функцію оцінки, що залежить від конкретної моделі.


2
Це вибрало б "найкращі" змінні в даних , не обов'язково найкращі змінні в процесі генерування даних / сукупності, оскільки воно має лише доступ до даних. Це насправді не таке, що відрізняється від ступінчастого методу, якого хотів ОП.
gung

0

У нас є функція базового пакету статистики R, яка називається step (), яка робить вибір вперед, назад або поступово, вибираючи моделі на основі найнижчого AIC. Це також працює для факторних змінних. Це не серверну мету тут ?.


-51

Я бачу, що моє запитання викликало багато інтересу та цікаву дискусію щодо обгрунтованості підходу до автоматичного вибору моделі. Хоча я згоден, що сприймати результат автоматичного вибору ризиковано, він може бути використаний як відправна точка. Отже, ось як я реалізував це для моєї конкретної проблеми, яка полягає в тому, щоб знайти найкращі n факторів для пояснення даної змінної

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

Знову ж таки, це дуже грубо, можливо, є шляхи вдосконалення методології, але це мій вихідний пункт. Я публікую цю відповідь, сподіваючись, що вона може бути корисною для когось іншого. Коментарі вітаються!


47
(1) Я не був свідком жодної "дискусії" в цій темі: всі відповіді та коментарі містять одне і те ж основне повідомлення. (2) Ваша реалізація виглядає як спеціальна версія поетапної регресії . Я погоджуюся, що він може бути корисним як відправна точка за умови, що він не приймається автоматично як самоціль.
whuber

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

23
Я вважаю, що це перший раз, коли я бачу стільки голосів. @SAM чому б ти просто не прийняв деякі інші чудові відповіді та не видалив свою "відповідь"?
марбель

Це найвідповідальніша відповідь СЕ?
mkt

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