Введение

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

Горячее кодирование

Горячее кодирование — популярный метод кодирования, который преобразует категориальные переменные в формат двоичного вектора. Каждая категория в переменной представлена ​​двоичным значением, где 1 указывает на наличие этой категории, а 0 указывает на ее отсутствие. Горячее кодирование полезно для категориальных переменных с небольшим количеством категорий, но оно может быть дорогостоящим в вычислительном отношении для переменных со многими категориями.

Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Горячее кодирование будет представлять эти категории следующим образом:

Кодировка этикетки

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

Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Кодировка метки будет представлять эти категории следующим образом:

Порядковое кодирование

Порядковое кодирование похоже на кодирование меток, но оно присваивает числовые значения каждой категории в зависимости от их порядка. Этот метод кодирования полезен, когда категории в переменной имеют неотъемлемый порядок.

Например, предположим, что у нас есть категориальная переменная «grade» с тремя категориями: A, B и C. Порядковое кодирование будет представлять эти категории следующим образом:

Двоичное кодирование

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

Например, предположим, что у нас есть категориальная переменная «фрукты» с тремя категориями: яблоко, банан и апельсин. Двоичное кодирование будет представлять эти категории следующим образом:

Хэш-кодирование

Хэш-кодирование — это метод, который преобразует категориальные переменные в числовые значения с помощью хэш-функции. Это полезно для больших наборов данных, поскольку требует меньше памяти, чем однократное кодирование, и работает быстрее, чем другие методы кодирования. Хэш-кодирование сопоставляет каждую категорию с уникальным целочисленным значением в заранее определенном диапазоне с помощью хеш-функции. Однако могут возникать коллизии, что приводит к снижению производительности модели. Чтобы избежать коллизий, можно использовать большее хэш-пространство или другую хеш-функцию.

Например, рассмотрим категориальную переменную «фрукты» с тремя категориями: «яблоко», «банан» и «апельсин». Мы можем использовать хеш-пространство 4 для представления этих категорий следующим образом:

  • «яблоко» отображается на 2
  • «банан» отображается на 1
  • «оранжевый» отображается на 0

В этом случае мы использовали простую хеш-функцию, такую ​​как функция по модулю, для сопоставления категорий с уникальными числовыми значениями в диапазоне [0,3].

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

Спасибо