8 категоричних методів кодування даних для покращення вашої моделі в Python!

Огляд

  • Зрозумійте, що таке категоріальне кодування даних
  • Вивчіть різні техніки кодування та коли їх використовувати

Вступ

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

методів

Типовий вчений-дослідник витрачає 70 - 80% свого часу на очищення та підготовку даних. А перетворення категоріальних даних - це неминуча діяльність. Це не тільки підвищує якість моделі, але й допомагає покращити розробку характеристик. Тепер питання в тому, як нам діяти далі? Який метод категоричного кодування даних нам слід використовувати?

У цій статті я розповім про різні типи категоріальних методів кодування даних із реалізацією в Python.

Якщо ви хочете вивчити поняття науки про дані у відеоформаті, перегляньте наш курс - Вступ до науки про дані

Зміст

  • Що таке категоричні дані?
  • Кодування етикетки або звичайне кодування
  • Одне гаряче кодування
  • Фіктивне кодування
  • Кодування ефекту
  • Двійкове кодування
  • Кодування BaseN
  • Кодування хешу
  • Цільове кодування

Що таке категоричні дані?

Оскільки ми будемо працювати над категоріальними змінними в цій статті, ось коротке оновлення того ж із кількома прикладами. Категоричні змінні зазвичай представляються у вигляді "рядків" або "категорій" і мають кінцеве число. Ось кілька прикладів:

  1. Місто, де живе людина: Делі, Мумбаї, Ахмедабад, Бангалор тощо.
  2. Кафедра, в якій працює людина: Фінанси, Людські ресурси, ІТ, Виробництво.
  3. Найвищий ступінь, яку має людина: середня школа, диплом, бакалавр, магістр, доктор філософії.
  4. Оцінки студента: A +, A, B +, B, B- тощо.

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

  • Звичайні дані: Категорії мають властивий порядок
  • Номінальні дані: Категорії не мають властивого порядку

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

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

Для кодування категоріальних даних ми маємо пакет python category_encoders. Наступний код допомагає легко встановити.

Кодування етикетки або звичайне кодування

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

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

Одне гаряче кодування

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

Ці нещодавно створені двійкові функції відомі як Фіктивні змінні. Кількість фіктивних змінних залежить від рівнів, наявних у категоріальній змінній. Це може здатися складним. Візьмемо приклад, щоб краще це зрозуміти. Припустимо, у нас є набір даних із категорією тварина, в якій є різні тварини, такі як Собака, Кішка, Вівця, Корова, Лев. Тепер нам доведеться одноразово кодувати ці дані.

Після кодування у другій таблиці ми маємо фіктивні змінні, кожна з яких представляє категорію в ознаці Animal. Тепер для кожної наявної категорії ми маємо 1 у стовпці цієї категорії та 0 для інших. Давайте подивимося, як реалізувати одноразове кодування в python.

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

Фіктивне кодування

Фіктивна схема кодування схожа на одноразове кодування. Цей метод категоріального кодування даних перетворює категоріальну змінну у набір двійкових змінних (також відомих як фіктивні змінні). У випадку одноразового кодування для N категорій змінної використовується N двійкових змінних. Фіктивне кодування - це невелике покращення в порівнянні з гарячим кодуванням. Фіктивне кодування використовує функції N-1 для представлення N міток/категорій.

Щоб краще це зрозуміти, давайте подивимося на зображення нижче. Тут ми кодуємо одні й ті самі дані, використовуючи як гаряче кодування, так і фіктивні методи кодування. У той час як one-hot використовує 3 змінні для представлення даних, тоді як фіктивне кодування використовує 2 змінні для кодування 3 категорій.