Чому нам потрібен фіктивний код категоричних змінних


22

Я не впевнений, навіщо нам маніпулювати категоричні змінні коду. Наприклад, якщо у мене є категоріальна змінна з чотирма можливими значеннями 0,1,2,3, я можу замінити її двома вимірами. Якби змінна мала значення 0, вона мала б 0,0 у двох вимірах, якби вона мала 3, вона мала б 1,1 у двох вимірах тощо.

Я не впевнений, навіщо нам це робити?

Відповіді:


21

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

Ні в якому разі (що я зараз можу собі уявити) ми б означали, що зелений коричневий, або ліщина синій, як наших кодів, навіть якщо і .= 2 × 3 = 3 × 1 4 = 2 × 2=3×=2×3=3×14=2×2

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

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

id  category  dummy1 dummy2 dummy3
 1         1       1      0      0
 2         1       1      0      0
 3         2       0      1      0
 4         2       0      1      0
 5         3       0      0      1
 6         3       0      0      1
 7         4       0      0      0
 8         4       0      0      0

Тут категорія 4 - це опорна категорія, якщо припустити, що у вашій моделі є константа, наприклад:

у=β0+β1г1+β2г2+β3г3+ε

де - середнє значення коли категорія = 4, а терміни, пов'язані з кожною манекеном, вказують на яку суму змінюється від для цієї категорії. y β y β 0β0уβуβ0

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

у=β1г1+β2г2+β3г3+β4г4+ε

Отже, це дозволить вирішити питання створення безглуздих кількісних зв’язків між кодами категорій, про які я згадував спочатку, але чому б не використовувати кодування user12331, як ви пропонуєте? кандидат12 -31-кодує кандидат A:

id  category   code1  code2
 1         1       0      ?
 2         1       0      ?
 3         2       1      ?
 4         2       1      ?
 5         3       ?      0
 6         3       ?      0
 7         4       ?      1
 8         4       ?      1

ви цілком вірно зазначили, що можна представити 4 значення за допомогою 2 бінарних змінних (тобто двобітних). На жаль, один підхід до цього (код1 для категорій 1 і 2 та код2 для категорій 3 і 4) залишає неоднозначність, зазначену знаками запитання: які значення туди йдуть ?!

Ну, а що стосується другого підходу, назвіть його кандидатом B-кодування B121231:

id  category   code1  code2
 1         1       0      0
 2         1       0      0
 3         2       0      1
 4         2       0      1
 5         3       1      0
 6         3       1      0
 7         4       1      1
 8         4       1      1

Там! Ніякої неоднозначності, правда? Правильно! На жаль, все це кодування - це числові величини 1–4 (або 0–3) у двійковій нотації , що залишає недоторканою проблему віднесення цих небажаних кількісних співвідношень до категорій.

Звідси необхідність іншої схеми кодування.

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


5
Хоча ця відповідь демонструє причину, чому ми не можемо використовувати одну змінну (тобто, що нам дійсно потрібно «якесь кодування»), вона не (ще) пояснює, чому ми не можемо це зробити, скажімо, дві змінні, як ОП пропонує у питанні.
Glen_b -Встановіть Моніку

@Glen_b Дякую Я сподіваюся, що моє оновлення допомогло вирішити.
Олексій

2
Зауважимо, що 2 двійкові змінні є достатніми для представлення 4 категорій [(0,0), (0,1), (1,0), (1,1)], але це не підходящий спосіб манекенового коду для аналізу. ОП, здається, кодує неправильно.
Елліс Валентинер

@ user12202013 Так. Як і в моєму останньому прикладі.
Олексій

Що робити, якби я робив двійкове кодування з використанням двох змінних, як це запропонувало ОП, але тоді, якщо мета - прогнозування, то не буде непараметричний, нелінійний класифікатор / регресор працювати однаково добре?
tool.ish

1

Думаю, що кодування чотирьох можливих станів, що мають лише дві змінні, є менш виразним за допомогою деяких алгоритмів машинного навчання, ніж використання 4 змінних.

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


0

Ваша альтернатива - також фіктивний код. Ви вибираєте фіктивний код, який найкраще виражає відношення до залежної змінної. Наприклад, колір може бути виражений як 1 з n, або ви можете перетворитись на числові компоненти rgb, або ви можете класифікувати: girly / blaty / ... 1 з n в основному означає, що кожен екземпляр вивчається окремо, що добре, якщо стосунків немає. .. але там, де є відносини, ви витрачаєте свої дані .. вам доведеться окремо оцінити коефіцієнт для кожного примірника категорії ... розглядайте роботу як категоричну змінну. Ви можете класифікувати їх як ринковий сектор та стаж.

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