Кодирование меток или горячее кодирование: в чем разница?
Часто в машинном обучении мы хотим преобразовать категориальные переменные в какой-то числовой формат, который может быть легко использован алгоритмами.
Существует два распространенных способа преобразования категориальных переменных в числовые переменные:
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 новых переменных при использовании горячего кодирования.
В зависимости от размера вашего набора данных и типа переменных, с которыми вы работаете, вы можете предпочесть горячее кодирование или кодирование меток.
Дополнительные ресурсы
В следующих руководствах объясняется, как на практике выполнить кодирование меток :
В следующих руководствах объясняется, как на практике выполнить горячее кодирование :