Зрозуміла ступінчаста регресія?


14

Припустимо, я хочу створити двійковий класифікатор. У мене є кілька тисяч особливостей і лише кілька 10-ти зразків. На основі знань про домен, я маю вагомі підстави вважати, що мітку класу можна точно передбачити, використовуючи лише декілька функцій, але я не маю уявлення, які з них. Я також хочу, щоб правило остаточного рішення було легко інтерпретувати / пояснювати, потребуючи додаткової кількості функцій. Деякі підмножини моїх функцій сильно корелюються, тому вибір найбільш прогнозних кількох самостійно не працював би. Я також хочу вміти грамотно провести перевірку гіпотез на моїх ознаках.

Чи є розумною наступна ступінчаста процедура регресії за цих умов:

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

  2. Розгляньте гіпотези, перевірені на етапі 1 кожної ітерації, як сімейство та обчисліть показник помилкового виявлення для найменшого P-значення (для вибраної функції), використовуючи щось на зразок Бенджаміні-Хохберга.

  3. Перехід 1, якщо не виконані деякі критерії зупинки.

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

Чи вдасться зробити щось подібне за цих обставин успішно уникнути всіх типових закидів поступової регресії? Чи обґрунтовані таким чином показники помилкового виявлення?


3
Чи є причина, щоб не піти з пеналізованим регресійним підходом (ласо, еластична мережа тощо)?
Бен Болкер

Відповіді:


11

Я б не рекомендував вам використовувати цю процедуру. Моя рекомендація: Відмовитися від цього проекту. Просто здайся і піди. Ви не маєте надії, щоб це спрацювало.

Ілюстрація Доре Інферно "Відмова від надії" джерело для зображення

Якщо відмовитись від стандартних проблем із покроковим вибором (див. Тут ), у вашому випадку, швидше за все, у вас є ідеальні прогнози через поділ у такому великому просторі.

Я не маю конкретних даних щодо вашої ситуації, але ви заявляєте, що у вас є "лише кілька зразків 10". Давайте будемо благодійними і скажімо, що у вас є 90. Ви також сказали, що у вас є "кілька тисяч функцій". Давайте уявимо, що у вас "лише" 2000. Для простоти скажімо, що всі ваші функції є двійковими. Ви "вважаєте, що мітку класу можна точно передбачити, використовуючи лише декілька функцій", скажімо, що ви будете шукати набори до 9 максимум функцій. Нарешті, давайте уявимо, що відносини є детермінованими, щоб справжні стосунки завжди були ідеально присутніми у ваших даних. (Ми можемо змінити ці числа та припущення, але це повинно тільки погіршити проблему.) Тепер, наскільки добре ви змогли б відновити ці відносини за цих (щедрих) умов? Тобто, як часто правильний набір буде єдиним набором, який дає ідеальну точність? Або, по-іншому, скільки наборів з дев'яти функцій також підійдуть випадково?

Деякі (надмірно) прості математичні та симуляції повинні дати певні підказки до цього питання. По-перше, з 9 змінних, кожна з яких може бути 0 або 1, кількість моделей, які спостереження могли б показати, є , але у вас буде лише 90 спостережень. Таким чином, цілком можливо, що для даного набору з 9 бінарних змінних, кожне спостереження має різний набір значень предиктора - повторів немає. Без реплік з тими самими значеннями предиктора, де деякі мають y = 0, а деякі y = 1, ви матимете повне розділення і можливе ідеальне передбачення кожного спостереження. 29=512

Нижче у мене є симуляція (зашифрована в R), щоб побачити, як часто у вас немає шаблонів значень x з 0 і 1. Як це працює, я отримую набір чисел від 1 до 512, які представляють можливі шаблони, і я бачу, чи будь-який із шаблонів у першому 45 (це може бути 0) відповідає одному з шаблонів у другому 45 (це може бути 1). Це передбачає, що у вас є ідеально збалансовані дані відповідей, що дає вам найкращий можливий захист від цієї проблеми. Зауважте, що наявність декількох реплікуваних x-векторів з різними y-значеннями насправді не виводить вас з лісу, це просто означає, що ви не зможете досконало передбачити кожне спостереження у вашому наборі даних, що є дуже суворим стандартом I я тут використовую.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

Моделювання передбачає, що у вас виникне ця проблема з приблизно 1,8% наборів 9 х змінних. Тепер, скільки наборів з 9 є? Строго, це був би (оскільки ми встановили, що у вашому наборі є справжні 9 детермінованих причинних змінних). Однак багато з цих наборів будуть перекриватися; буде 1991 / 9 221 неперекривающіеся набори 9межах зазначеного розділу ваших змінних (з багатьма такими розділами можливо). Таким чином, в межах деякого даного розділу ми можемо очікувати, що це буде 221 × 0,018 41991 choose 9=1.3×10241991/9221221×0.0184 набори з 9-х змінних, які чудово спрогнозують кожне спостереження у вашому наборі даних.

Зауважте, що ці результати стосуються лише тих випадків, коли у вас є відносно більший набір даних (у межах "десятків"), порівняно менша кількість змінних (у межах "тисяч"), лише шукає випадки, коли кожне спостереження можна прогнозувати ідеально ( буде ще багато наборів, які майже ідеальні) і т. д. Ваш фактичний випадок навряд чи вийде «добре». Більше того, ми заявили, що відносини є повністю детермінованими. Що буде, якщо у відносинах є якийсь випадковий шум? У такому випадку у вас все ж будуть знаходитись ~ 4 (null) набори, які ідеально передбачають ваші дані, але правильний набір цілком може бути серед них .

Тл; д-р , основний момент тут полягає в тому, що ваш набір змінних є занадто великим / великим розміром, а ваш обсяг даних занадто малий, щоб все було можливо. Якщо це дійсно вірно, що у вас є "десятки" зразків, "тисячі" змінних, і абсолютно немає земної ідеї, які змінні можуть бути правильними, ви не маєте надії дістатися куди-небудь з будь-якою процедурою. Іди, роби щось ще зі своїм часом.


1
Тепер це оригінальний вступ до відповіді, я люблю це.
Łukasz Grad

1
Відмова від проекту часто є розумним варіантом. Незважаючи на невелику частку випадків, я не раз радив клієнтам, що проекти, які вони мають на увазі, не будуть реалізованими.
gung - Відновіть Моніку

1

Для цілей своєї відповіді я позначу двійкову змінну, що цікавить, як та предиктори X i j  ; ( j = 1 , , p ) і припустимо, що Y має значення Y = 0 і Y = 1 . Також буде зручно визначити γ m для позначення моделі m  ; ( m = 1Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γm , так що γ T m X i j дорівнює X i j, якщоj-тазмінна знаходиться вm-ймоделі, а 0 в іншому випадку.m ;(m=1,..,M)γmTXijXij0

Я б вніс модифікацію у ваш метод і дав би обґрунтування. Ви використовуєте модель класифікатора, що означає, що ви хочете передбачити значення категоріальної змінної у майбутньому - тому ви дійсно повинні визначати правило прогнозування (з урахуванням нового набору предикторів , як ви будете прогнозувати, чи Y = 1 або Y = 0 ).XjY=1Y=0

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

Тепер вам потрібно визначитися

  1. що ви хочете, щоб "найкраще" означало математично
  2. як розділити свої дані на "придатні" та "прогнозуючі" частини

Я буду робити пропозиції для кожного:

  1. Інтуїтивне визначення «хорошого» класифікатора (а також просто обчислювально) - це частка правильних класифікацій, які він вносить. Однак ви можете мати деякі додаткові знання про конкретні наслідки створення правильної чи неправильної класифікації (наприклад, правильно прогнозувати, коли вдвічі важливіше, ніж коли Y = 0Y=1Y=0 ). У цьому випадку ви повинні включити ці знання до визначення "добро". Але для рівнянь у своїй відповіді я буду використовувати як критерій (F= "частка" або "частота"F=CC+IF = "правильний" I)CI = "неправильний")
  2. Оскільки у вас немає багато даних, вам потрібно якомога більше підходити до моделі, тож можна використовувати просту процедуру за допомогою одного крана. Ви залишаєте спостереження , підходите до моделі зі спостереженнями 2 , , n і використовуєте це для прогнозування спостереження 1 . Тоді ви залишаєте спостереження 2 поза, підходите до моделі зі спостереженнями 1 , 3 , , n і використовуєте це для прогнозування спостереження 2 ; і так далі, поки кожне спостереження не буде «залишене» та прогнозовано. Тоді у вас буде n прогнозів, і тепер ви можете обчислити F = C12,,n121,3,,n2n , частка правильно передбачених значень для конкретної моделі. Підпишіть це для конкретної моделіFm.F=CnFm

Потім слід обчислити для кожної моделі ( m = 1 , , M ) і вибрати модель, яка прогнозує найкраще m = argmax m M F m . Зауважте, що добре у вищевказаному методі полягає в тому, що вам не потрібно турбуватися про те, скільки змінних є у вашій моделі або про те, наскільки співвідносяться ці змінні (якщо це не робить неможливим фактично відповідати моделі). Це пояснюється тим, що модель підходить окремо до прогнозування, тому упередженість через надмірну підгонку або деградацію через чисельну нестабільність виявиться у бідніших прогнозах.Fm(m=1,,M)m=argmaxmMFm

У покроковій ситуації це робиться послідовно, тому в вас є M s = p + 1 моделей на вибір: одна для "видалення" кожного X j, яка є в моделі, одна для "додавання" кожен X j, який відсутній у моделі, та один для збереження моделі без змін (ви зупиняєте процедуру, коли ви вибираєте цю модель, і це ваша кінцева модель). Якщо є нічия, вам потрібні додаткові критерії, щоб розділити переможців (або ви можете відпустити алгоритм "гілка" і побачити, де закінчується кожна "гілка"), а потім візьміть "гілку", яка мала найкращі прогнози заключний крок)sthMs=p+1XjXj

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

100F

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

А для тестування гіпотез, ви можете оголосити будь-який ефект, що залишився у вашій кінцевій моделі, як "істотний", оскільки зв'язки, що містяться в цій моделі, ми змогли відновити дані (Y

Два заключні зауваження:

  1. Ви також можете скористатися цією технікою, щоб вирішити, чи кращий ступінь кращого вибору вперед (лише додайте змінні) або вибору назад (почніть з повної моделі та видаліть лише змінні).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWY . В основному,λλ

Дякую за пораду. Однак у цьому є три проблеми: 1. Мені цікаво кількісне визначення невизначеності в моїх прогнозах та внесок кожної змінної, а не лише точності бінарного прогнозування. 2. Враховуючи характер мого набору даних, це занадто обчислювально обчислювально. 3. З огляду на домен, я вважаю, що питання локальної оптими не є важливим.
dimimcha

100nF

Насправді ви праві. Ця процедура буде частиною більшої бази даних коду, і я забув, що частина решти коду не потрібно буде повторно виконувати для кожної ітерації джекніфа. Інші два пункти все ще діють.
dimimcha

ЖЖ для обраної моделі (Жcгодосен-Ж(-j)- це як граничний ефект для j-ї змінної на точність прогнозування за рахунок кожної змінної)
ймовірність

Інше питання полягає в тому, що моя відповідь є загальним у критерії, тому що я не знаю, які наслідки використання цього класифікатора. Якщо ви знаєте більше довідкової інформації, тоЖ should be changed to reflect what is important when you will actually be using the classifier and not what's important when you are fitting the model. I believe I made this clear in my answer.
probabilityislogic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.