Кришна Кумар Махто до даних "Гаряче кодування", мультиколінеарність та фіктивна змінна пастка
У цій статті йдеться про фіктивну пастку змінних, що випливає із проблеми мультиколінеарності
Крішна Кумар Махто
8 липня 2019 · 11 хв читання
Поки що кожна нова тема машинного навчання, яку я взяв, мала щось таке, чого я ніколи раніше не бачила. Але це були не тільки невидимі теми, але й теми, які я колись пережив, щось прослизнули мені в голову. Dummy Variable Trap - одна з таких деталей, про яку я зовсім забув, що вона існує, поки не повернулася до створення класифікатора за 3–4 місяці до цього.

Перш ніж почати з точного вмісту манекен-змінної пастки, ось кілька термінів, з якими нам потрібно бути ознайомленими. Формальні визначення можна погуглити, тому я надам неофіційний опис, якого має бути достатньо для контексту цієї статті.
Категоричні змінні
Категоричні змінні - це ті, які можуть приймати значення з кінцевого набору. Для таких змінних значення, які вони приймають, можуть мати внутрішнє упорядкування (наприклад, швидкість:). Такі змінні називаються звичайними категоріальними змінними. З іншого боку, деякі категоріальні змінні можуть не мати внутрішнього впорядкування (наприклад, Gender:). Такі категоріальні змінні називаються номінальними категоріальними змінними.
Якщо ви знаєте загальну практику кодування категоріальних змінних у числа, ви знаєте, що часто пропонується їх кодування з одним гарячим кодуванням. Цьому є дві причини:
- Більшість алгоритмів машинного навчання не можуть працювати безпосередньо з категоріальними змінними, їх потрібно перетворити в числа.
- Навіть якщо ми знайдемо спосіб безпосередньої роботи з категоріальними змінними, не перетворюючи їх у числа, наша модель має тенденцію до мови, якою ми користуємось. Наприклад, у завданні класифікації тварин, якщо мітки є, то використання такого методу маркування навчить нашу модель прогнозувати мітки лише англійською мовою, що накладе лінгвістичне обмеження на можливе застосування моделі.
Для того, щоб їх обійти, ми можемо закодувати значення категоріальних змінних до чисел, як показано нижче:
Випадок 1:
Порядкова категоріальна змінна Швидкість (як цитується вище) може кодуватися як:
Випадок 2:
Для завдання класифікації тварин (наведеного вище) мінлива мітка, яка є номінальною категоріальною змінною, може бути закодована як:
З цим є одна головна проблема - мітки у проблемі класифікації тварин не повинні кодуватися до цілих чисел (як ми це робили вище), оскільки це забезпечить очевидно неправильне природне впорядкування: "щур" інтуїтивно це розуміє. Якщо ми введемо ці цифри безпосередньо в модель, ці величини, ймовірно, вплинуть на функцію витрат/збитків. Нам потрібно моделювати це наше розуміння математично. Одне гаряче кодування - це те, як ми це робимо.
Швидкість - це порядкова змінна. Ми можемо стверджувати, що співвідношення: „низький” низький, „середній” та „високий” має. У використанні 1, 2 і 3 немає нічого особливого. Іншими словами, ми не знаємо, наскільки швидкість «середня» більша, ніж швидкість «низька», і наскільки мала вона порівняно з «високою» швидкістю. Різниця між цими ярликами може потенційно вплинути на модель, яку ми тренуємо. Отже, ми можемо захотіти також гаряче кодувати змінну «швидкість».
На цьому етапі, я сподіваюся, ми розуміємо, про що категоричні змінні, і чому ми хотіли б їх гаряче кодувати.
Мультиколінеарність
Мультиколінеарність виникає, коли дві або більше незалежних змінних (також ознак) у наборі даних співвідносяться між собою. Існує декілька методів, за допомогою яких ми можемо виміряти ступінь та напрямок кореляції для двовимірних випадків (більше інформації про міри кореляції), тоді як мультиколінеарність, як правило, вимірюється за допомогою коефіцієнта інфляції дисперсії (більше інформації про міри мультиколінеарності). У двох словах, мультиколінеарність існує в наборі даних, коли незалежні змінні (майже) лінійно пов'язані між собою.
Такі випадки, як показано на рис. 1., називаються "Ідеальна мультиколінеарність". Подібним чином, ми також маємо випадки Недосконалої мультиколінеарності, в яких одна або декілька дуже лінійних взаємозв’язків можуть викликати наше занепокоєння. Вони безпосередньо впливають на аналіз лінійної регресії (для отримання додаткової інформації про це зверніться до цих приміток до лекцій). Однак ми будемо обговорювати їх вплив з точки зору будь-якого загального алгоритму машинного навчання.
На даний момент, я сподіваюся, ми розуміємо, що таке мультиколінеарність.
OneHotEncoding у Python
Перш ніж перейти до заключної частини цієї статті, давайте подивимося, як ми можемо кодувати категоріальні змінні.
One-hot-encoder повертає вектор для кожного унікального значення категоріального стовпця. Кожен такий вектор містить лише одне «1», тоді як усі інші значення у векторі «0» (див. Рис. 4 нижче), тому назва one-hot-encoder.
Можливо, також повинні бути пакети мовою на ваш вибір, але оскільки я використовую Python для всіх матеріалів, пов’язаних з машинним навчанням та наукою даних, я включаю лише фрагменти з консолі Python. У наступному обговоренні я процитую бібліотеку панд Python за її популярним псевдонімом «pd» та numpy як «np».