Проблеми з кодуванням із гарячим кодом та фіктивним кодуванням


11

Мені відомо про той факт, що категоричні змінні з k рівнями повинні бути кодовані змінними k-1 у фіктивній кодування (аналогічно для багатозначних категоріальних змінних). Мені було цікаво, якою проблемою є однокольорове кодування (тобто замість цього k змінних) через кодове кодування для різних методів регресії, в основному лінійної регресії, пеналізованої лінійної регресії (Lasso, Ridge, ElasticNet), на основі дерев (випадкові ліси , машини для підвищення градієнта).

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

Однак чи потрібно використовувати кодексійне кодування у всіх них, і наскільки помилковими будуть результати, якщо використовується однокольорове кодування?

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


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

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

1
Я з @ttnphns, обидва це просто жахливі імена. Я віддаю перевагу повному кодуванню та кодированному кодуванню .
Меттью Друрі

2
Вибачення за термінологію, це стандартні терміни, які я бачив, використовувані практиками (і аналогічно орієнтовані книги). Питання колінеарності виникає лише в лінійних (неперспективованих моделях)? Не все програмне забезпечення припиняє входити до всіх k (наприклад, scikit-learn Python, виправте мене, якщо я помиляюся)
user90772

@MatthewDrury Одним із моїх вихованців-вихованців є дублікати термінів / фраз, що повзають у поле статистичного аналізу, як-от «кодування на гарячому рівні» та «тестування A / B». Кожна людина повинна дотримуватися старішого "кодування фіктивного" та "перевірки гіпотез", щоб уникнути плутанини.
RobertF

Відповіді:


7

Проблема, що представляє категоричну змінну, яка має рівні з змінними в регресії, полягає в тому, що, якщо модель також має постійний термін, то умови будуть лінійно залежними і, отже, модель буде непізнавана. Наприклад, якщо модель і , то будь-який вибір вектора параметрів не відрізняється від . Тож, хоча програмне забезпечення може бути готовим дати ваші оцінки за цими параметрами, вони не є однозначно визначеними, а отже, ймовірно, не будуть дуже корисними.kkμ=a0+a1X1+a2X2X2=1X1(β0,β1,β2)(β0+β2,β1β2,0)

Пеналізація зробить модель ідентифікованою, але надмірне кодування все одно впливатиме на значення параметрів дивними способами, враховуючи вищесказане.

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


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

@MatthewDrury Я думаю, ти маєш рацію щодо перехоплення, але навіть тоді для дерева зайве кодування здається обмеженим. Наприклад, якщо функція є двійковою, яка різниця між розділенням на перший клас та розділенням на другий клас? Нічого, наскільки я можу сказати.
Кодіолог

Це правда, але я думаю, що збереження повної симетрії - це найпростіший спосіб зберегти все очевидно справедливим та зрозумілим.
Меттью Друрі

1

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

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


1
Щоб бути педантичним, одномовна версія не є основою (оскільки лінійно залежить); він просто охоплює той самий простір. Але ви впевнені, що кодування не має ніякої різниці в точності? Зокрема, у випадку санкціонованої регресії, я думаю, що остаточна обрана модель зробить різні прогнози.
Кодіолог

@Kodiologist дякую за правильне мене з базового питання.
Хайтао Ду

@Kodiologist чому точність буде відрізнятися в регульованому лінійному методі?
Хайтао Ду

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

1
@Matthew Drury, дякую за останній коментар. Скажіть, будь ласка, відповідь? Тож лише для простої лінійної регресії необхідне кодування фіктивних даних?
user90772

1

Я вважаю, що найкраща відповідь на це запитання похована у коментарях @MatthewDrury, де зазначено, що є різниця і що ви повинні використовувати, здавалося б, надмірну колонку в будь-якому регульованому підході. @ МеттьюДрурі міркує

[У регульованій регресії] перехоплення не карається, тому, якщо ви робите вплив рівня як не частина перехоплення, важко сказати, що ви штрафуєте всі рівні однаково. Натомість завжди включайте всі рівні, тому кожен є симетричним щодо штрафу.

Я думаю, що він має крапку.


Тож вам слід одну змінну гарячого кодування з kрівнями або з k-1рівнями залежно від ситуації. На додаток до вашої заяви (регуляризованої / не регульованої), чи будуть вказівки щодо того, що робити у всіх випадках?
Dan Chaltiel

Моє правило - якщо немає регуляризації, як у класичній ANOVA, використовуйте рівні k-1. Якщо є регуляризація, як у байєсівських методах або регресія з регуляризацією L2, використовуйте k рівні.
Бен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.