Кодирование меток или горячее кодирование: в чем разница?


Часто в машинном обучении мы хотим преобразовать категориальные переменные в какой-то числовой формат, который может быть легко использован алгоритмами.

Существует два распространенных способа преобразования категориальных переменных в числовые переменные:

1. Кодирование меток. Присвойте каждому категориальному значению целочисленное значение в алфавитном порядке.

2. Одно горячее кодирование: создайте новые переменные, которые принимают значения 0 и 1 для представления исходных категориальных значений.

Например, предположим, что у нас есть следующий набор данных с двумя переменными, и мы хотим преобразовать переменную Team из категориальной переменной в числовую переменную:

В следующих примерах показано, как для этого использовать как кодирование тегов , так и горячее кодирование .

Пример: использование кодировки меток

Используя кодировку меток , мы преобразуем каждое уникальное значение в столбце «Команда» в целочисленное значение в алфавитном порядке:

В этом примере мы можем увидеть:

  • Каждое значение «A» было преобразовано в 0 .
  • Каждое значение «B» было преобразовано в 1 .
  • Каждое значение «C» было преобразовано в 2 .

Мы успешно преобразовали столбец «Команда» из категориальной переменной в числовую переменную.

Пример: использование одного горячего кодирования

Используя горячее кодирование , мы преобразуем столбец Team в новые переменные, содержащие только значения 0 и 1:

Когда мы используем этот подход, мы создаем новый столбец для каждого уникального значения исходной категориальной переменной.

Например, категориальная переменная Team имела три уникальных значения , поэтому мы создали в наборе данных три новых столбца , каждый из которых содержит значения 0 или 1.

Вот как интерпретировать значения в новых столбцах:

  • Значение нового столбца Team_A равно 1, если исходное значение столбца Team было A. В противном случае значение равно 0.
  • Значение нового столбца Team_B равно 1, если исходное значение столбца Team было B. В противном случае значение равно 0.
  • Значение нового столбца Team_C равно 1, если исходное значение столбца Team было C. В противном случае значение равно 0.

Мы успешно преобразовали столбец «Команда» из одной категориальной переменной в три числовые переменные, которые иногда называют «фиктивными».

Примечание . При использовании этих «фиктивных» переменных в модели регрессии или другом алгоритме машинного обучения будьте осторожны, чтобы избежать ловушки фиктивных переменных .

Когда использовать кодирование тегов вместо горячего кодирования

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

Например, рассмотрим случай, когда мы использовали кодировку меток для преобразования команды в числовую переменную:

Данные, закодированные в метке, создают впечатление, что команда C каким-то образом больше или выше, чем команды B и A, поскольку она имеет более высокое числовое значение.

Это не проблема, если исходная категориальная переменная на самом деле является порядковой переменной с естественным упорядочением или ранжированием, но во многих сценариях это не так.

Однако одним из недостатков горячего кодирования является то, что оно требует создания столько новых переменных, сколько уникальных значений имеется в исходной категориальной переменной.

Это означает, что если ваша категориальная переменная имеет 100 уникальных значений, вам нужно будет создать 100 новых переменных при использовании горячего кодирования.

В зависимости от размера вашего набора данных и типа переменных, с которыми вы работаете, вы можете предпочесть горячее кодирование или кодирование меток.

Дополнительные ресурсы

В следующих руководствах объясняется, как на практике выполнить кодирование меток :

В следующих руководствах объясняется, как на практике выполнить горячее кодирование :

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *