One-hot Encoding

Оновлено: 31.07.2023

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

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

Цей підхід створює новий стовпчик для кожного унікального значення у вихідному стовпчику категорії. Нулі та одиниці згодом заносяться в ці фіктивні змінні (1 означає ІСТИНА, 0 - ХИБНІСТЬ).

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

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

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

Оригінальне кодування

Значенню кожної спеціальної категорії присвоюється ціле число в порядковому кодуванні.

Наприклад, "фіолетовий" дорівнює 1, "синій" дорівнює 2, а "помаранчевий" дорівнює 3.

Це називається порядковим кодуванням. Часто використовуються цілі значення, що починаються з нуля.

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

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

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

Використання класів можна продемонструвати, перетворивши колірні категорії "фіолетовий", "синій" і "помаранчевий" на числа.

Кодування фіктивної змінної

Представлення фіктивної змінної є важливим для деяких моделей, крім того, що воно є значно менш надлишковим.

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

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

Одночасне кодування

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

Оскільки в цій змінній кольору є три категорії, то потрібно три двійкові змінні. У цій двійковій змінній колір представлений числом 1, тоді як решта кольорів представлені значеннями 0.

Оскільки категорії є рядками, вони спочатку сортуються в алфавітному порядку, а потім генеруються бінарні змінні для кожної категорії окремо. Це означає, що синій - це [1, 0, 0], перша змінна - 1, потім помаранчевий і, нарешті, фіолетовий.

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

Висновок

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

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

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

Переваги одночасного кодування → Навчальні дані є більш придатними для використання та виразними в результаті одночасного кодування, і їх можна легко масштабувати