Введение
Модели машинного обучения требуют числовых данных в качестве входных данных. Однако многие наборы данных содержат категориальные данные, которые необходимо преобразовать в числовой формат перед вводом в модель. Этот процесс называется кодированием. В этом сообщении блога мы рассмотрим различные методы кодирования и обсудим их преимущества и ограничения.
Горячее кодирование
Горячее кодирование — популярный метод кодирования, который преобразует категориальные переменные в формат двоичного вектора. Каждая категория в переменной представлена двоичным значением, где 1 указывает на наличие этой категории, а 0 указывает на ее отсутствие. Горячее кодирование полезно для категориальных переменных с небольшим количеством категорий, но оно может быть дорогостоящим в вычислительном отношении для переменных со многими категориями.
Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Горячее кодирование будет представлять эти категории следующим образом:
Кодировка этикетки
Кодирование меток — еще один популярный метод кодирования, при котором каждой категории в категориальной переменной присваивается уникальное числовое значение. Кодирование меток полезно для переменных с большим количеством категорий, но оно может привнести в данные порядковый номер, что может быть нежелательно.
Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Кодировка метки будет представлять эти категории следующим образом:
Порядковое кодирование
Порядковое кодирование похоже на кодирование меток, но оно присваивает числовые значения каждой категории в зависимости от их порядка. Этот метод кодирования полезен, когда категории в переменной имеют неотъемлемый порядок.
Например, предположим, что у нас есть категориальная переменная «grade» с тремя категориями: A, B и C. Порядковое кодирование будет представлять эти категории следующим образом:
Двоичное кодирование
Двоичное кодирование — это метод, который преобразует каждую категорию в категориальной переменной в двоичный код. Этот метод кодирования полезен для переменных с большим количеством категорий и требует меньше памяти, чем одноразовое кодирование.
Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Двоичное кодирование будет представлять эти категории следующим образом:
Хэш-кодирование
Хэш-кодирование — это метод, который преобразует категориальные переменные в числовые значения с помощью хэш-функции. Это полезно для больших наборов данных, поскольку требует меньше памяти, чем однократное кодирование, и работает быстрее, чем другие методы кодирования. Хэш-кодирование сопоставляет каждую категорию с уникальным целочисленным значением в заранее определенном диапазоне с помощью хеш-функции. Однако могут возникать коллизии, что приводит к снижению производительности модели. Чтобы избежать коллизий, можно использовать большее хэш-пространство или другую хеш-функцию.
Например, рассмотрим категориальную переменную «фрукты» с тремя категориями: «яблоко», «банан» и «апельсин». Мы можем использовать хеш-пространство 4 для представления этих категорий следующим образом:
- «яблоко» отображается на 2
- «банан» отображается на 1
- «оранжевый» отображается на 0
В этом случае мы использовали простую хеш-функцию, такую как функция по модулю, для сопоставления категорий с уникальными числовыми значениями в диапазоне [0,3].