Принциповий спосіб згортання категоріальних змінних з багатьма рівнями?


58

Які методи доступні для згортання (чи об'єднання) багатьох категорій до кількох, з метою використання їх як вхідних даних (прогнозів) у статистичній моделі?


Розглянемо таку змінну, як студент коледжу (дисципліна, яку обирає студент). Це не упорядковане і категоричне, але потенційно воно може мати десятки різних рівнів. Скажімо, я хочу використовувати мажор як предиктор у регресійній моделі.

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

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

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

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

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


2
У своєму коментарі на stats.stackexchange.com/questions/230636/… У мене довгий список подібних питань тут! Подивіться ... Крім того, в пошуках цього сайту за ключовими словами "багато рівнів" ви знайдете багато подібних питань, кілька хороших відповідей.
kjetil b halvorsen

3
Я повернусь до цього, коли встигну
kjetil b halvorsen

2
Я не думаю, що у мене виникає питання, моїм природним імпульсом було б насправді додати більше фіктивних змінних для кодування ієрархій (можливо, стільки ж різних ієрархій, як ви можете собі придумати), а потім використовувати регуляризацію L1 / L2, щоб гарантувати, що категорії вищого рівня вибираються, а не категорії тоншого рівня. Проблема з спеціальностями тощо полягає в тому, що очевидно немає подібності (коли вона представлена ​​як фіктивна змінна), тому для отримання хорошої моделі (яка дозволяє узагальнити) вам потрібно надати подібність
seanv507

1
@ssdecontrol, так, мій прототипний приклад - номери телефонів (або інші ідентифікатори). В основному правильна відповідь на запитання, як моделювати їх за допомогою - це не треба!
seanv507

2
Якщо ви хочете зробити висновок про ієрархії, ви можете переглянути схеми вбудовування нейронної мережі. По суті, вони використовують зменшений набір нейронів між категоріями та рештою моделі, так що модель повинна вирішувати лінійні проекції подібних категорій при вирішенні. По суті це нелінеаризована версія машин факторизації. tensorflow.org/guide/embedding
seanv507

Відповіді:


41

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

У найпростішому випадку у вас була б лінійна модель "в одну сторону ANOVA" з єдиним категоричним предиктором: де я кодує рівень категоріальної змінної (категорія). Але ви можете скористатися рішенням, яке згортає деякі рівні (категорії) разом, наприклад { α 1 = α 2 , α 3 = α 4 = α 5 .

уij=мк+αi+ϵij,
i
{α1=α2,α3=α4=α5.

L=ωi<j|αi-αj|.
αi-αjω

Я ніколи не займався подібними моделями, і вищезгадане - це перше, що мені прийшло в голову. Тоді я вирішив подивитися, чи є щось подібне реалізовано. Я здійснив пошук у Google і незабаром зрозумів, що це називається злиття категорій; пошук lasso fusion categoricalдасть вам багато посилань для читання. Ось декілька, які я коротко переглянув:

Gertheiss and Tutz 2010, опублікований у "Анналах прикладної статистики", виглядає як нещодавній і дуже читабельний документ, що містить інші посилання. Ось його конспект:

L1

Мені подобаються їхні шляхи рішення, що нагадують Лассо, які показують, як рівні двох категоріальних змінних зливаються разом, коли сила регуляризації зростає:

Гертеїс і Тутц 2010


1
І лише після написання всього, що я помітив, що @Kjetil дав посилання на один із паперів Tutz вже тиждень тому ...
амеба каже Reinstate Monica

1
Дякуємо, що поринули у цій літературі! Це, безумовно, хороша відправна точка, особливо маючи назву цієї техніки ("синтез"), яку я можу шукати
shadowtalker

10

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

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

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

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


1
Ви розглядали використання матриці близькості як матриці відстані для кластеру? stats.stackexchange.com/questions/270201/… ?
Кіт

7

Zz1,...,zКYZВплив(Z)

Вплив(zк)=Е(Y | Z=zк)-Е(Y)

YYlogitЕЕ

Існує реалізація Python у бібліотеці категорії_кодерів [2].

Варіант під назвою "кодування впливу" було реалізовано в пакеті R Vtreat [3] [4]. Пакет (і саме кодування впливу) описано в статті цих авторів від 2016 року [5] та в кількох публікаціях блогу [6]. Зауважте, що поточна реалізація R не обробляє багаточленну (категоричну з більш ніж 2 категоріями) або багатоваріантну (векторну) відповіді.

  1. Даніеле Мічі-Баррека (2001). Схема попередньої обробки категоричних ознак високої кардинальності при проблемах класифікації та прогнозування. Інформаційний бюлетень з розслідувань ACM SIGKDD , том 3, випуск 1, липень 2001 р., Стор. 27-32. https://doi.org/10.1145/507533.507538
  2. Категорія Енкодери. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. Джон Маунт та Ніна Зумель (2017). vtreat: Статистично здоровий 'data.frame' Процесор / Кондиціонер. Версія пакету R 0.5.32. https://CRAN.R-project.org/package=vtreat
  4. Win-Vector (2017). vtreat. Репозиторій GitHub за адресою https://github.com/WinVector/vtreat
  5. Зумель, Ніна і гора, Джон (2016). vtreat: процесор data.frame для прогнозування моделювання. 1611.09477v3, e-відбитки ArXiv . Доступно за адресою https://arxiv.org/abs/1611.09477v3 .
  6. http://www.win-vector.com/blog/tag/vtreat/

Що таке logit E? Не могли б ви поділитися самою формулою?
Optimus Prime

@OptimusPrime logit E - це логіт очікування
shadowtalker

Добре. Отже, у цьому випадку Impact (zk) = log (E (Y | Z = zk) −E (Y)) OR Impact (zk) = log (E (Y | Z = zk)) - log (E (Y) )?
Optimus Prime

2
Це навчання під наглядом і вживатиме складні корективи, щоб визначити кількість ступенів свободи, які "викрадені" у Ю.
Френк Харрелл

3
Напевно - будь-який метод, який використовує Y, щоб керувати тим, як з категоріями керується категоричним передбачувачем, буде піддаватися надмірній обробці, і важко буде отримати інтервали невизначеності, щоб бути досить широкими, щоб бути точними. Я зосереджувався на навчанні без нагляду, щоб ці проблеми не виникали.
Френк Харрелл

6

Якщо у вас є допоміжна незалежна змінна, яку логічно використовувати як якір для категоричного прогноктора, розгляньте використання алгоритму оптимального оцінювання Фішера, який пов'язаний з його лінійним дискримінантним аналізом. Припустимо, що ви хотіли зіставити мажор коледжу в єдину безперервну метрику, і припустимо, що належний якір - це кількісний тестовий бал SAT перед вступом. Обчисліть середній кількісний бал для кожного основного і замініть основний на цей середній. Ви можете легко розширити це на декілька якорів, створюючи більше ніж один ступінь свободи, за допомогою якого можна підвести підсумки основних.

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

Мені дуже подобається пропозиція про санкції https://stats.stackexchange.com/users/28666/amoeba @amoeba.


Ви б були такі ласкаві, щоб поглянути на моє запитання stats.stackexchange.com/q/383887/44368 ? Дякую.
Ганс

Чи є оптимальним бал метод, описаний на слайді 15 цієї лекції ? Шукати ці терміни трохи важко, всі вони поширені в інших контекстах.
shadowtalker

1
Я 0,85 впевнений, що це
Френк Харрелл

Це звучить як (краща) версія ідеї кодування цілей за допомогою машинного навчання, наприклад, stats.stackexchange.com/questions/398903/…
kjetil b halvorsen

2

У статті " Схема попередньої обробки категоричних атрибутів з високою кардинальністю в проблемах класифікації та прогнозування " використовується ієрархічна структура в атрибутах категорії вкладеної "емпіричної схеми Байєса" на кожному пулі / рівні для відображення категоріальної змінної на ймовірність заднього класу, яка може використовуватися безпосередньо або як вхід до інших моделей.


Це в основному те, що пропонував @Wayne (моделі зі змішаними ефектами ~ частою версією баєсових ієрархічних моделей), і те, що я запропонував у коментарі поставити під сумнів. Однак ОП хоче зробити висновок про ієрархії.
seanv507

1

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

Але цілком може бути проблема в моделюванні, я не настільки впевнений, що звичайні методи обробки категоричних змінних прогнозів дійсно дають достатні вказівки при наявності категоричних змінних з дуже багатьма рівнями, дивіться на цьому сайті тег [many-categories]. Звичайно, можна спробувати багато способів, якими можна скористатися (якщо це гарна ідея для вашого прикладу, я не можу знати, ви не сказали нам своє конкретне застосування) свого роду ієрархічна категоріальна змінна (и), тобто натхненна за системою, що використовується в біологічній класифікації, див. https://en.wikipedia.org/wiki/Taxonomy_(biology). Там особа (рослина чи тварина) класифікується спочатку до домену, потім королівства, типу, класу, ордену, сім'ї, роду та нарешті видів. Таким чином, для кожного рівня класифікації ви можете створити коефіцієнт змінної. Якщо ваш рівень, скажімо, продукція, що продається в супермаркеті, ви могли б створити ієрархічну класифікацію, починаючи з [харчові продукти, кухонне начиння тощо], то харчові продукти можна класифікувати як [м'ясо, риба, овочі, крупи, ...] і так далі. Просто можливість, яка дає попередню ієрархію, не конкретно пов'язану з результатом.

Але ти сказав:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.