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

Кодировка ярлыка

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

Например, предположим, что у нас есть столбец во фрейме данных. Имеет четыре различных значения: [«Нью-Йорк», «Лондон», «Торонто», «Дели»]. Маркировка даст разные числовые значения для каждых данных, [0,1,2,3].

Перед маркировкой: [«Нью-Йорк», «Нью-Йорк», «Дели», «Торонто», «Нью-Йорк», «Лондон», «Торонто», ……….]

После маркировки: [0,0,3,2,0,1,2,….]

Пустая кодировка

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

(Дополнительная ссылка: https://gerardnico.com/data_mining/dummy)

Перед фиктивным кодированием: [«Нью-Йорк», «Нью-Йорк», «Дели», «Торонто», «Нью-Йорк», «Лондон», «Торонто», ……….]

После фиктивного кодирования:

Быстрое кодирование

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

До OHE: [«Нью-Йорк», «Нью-Йорк», «Дели», «Торонто», «Нью-Йорк», «Лондон», «Торонто», ……….]

После OHE:

Посмотрите на конечный результат, в любой заданной точке (в любой строке, то есть в списке в этом исходном коде) только один индекс может быть 1, все остальные равны 0. Вот почему это называется кодировкой ONE HOT.

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

Это сильно зависит от того, какой алгоритм вы собираетесь использовать. Большинство алгоритмов кластеризации и DNN изучают единый вес для каждой функции или вычисляют расстояние (они изучают евклидово расстояние) между вашими точками данных. В таких случаях кодирование ярлыков не сработает. Поскольку конечным результатом кодирования меток является набор номинальных данных, ваша модель может сбить с толку ложные предположения, основанные на сгенерированных числовых метках. Или они никоим образом не повлияют на производительность вашей модели, поскольку не имеют смысла. Нет значимой величины или корреляции между каждой из этих точек данных. Лучше использовать кодировку Dummy или кодировку One-Hot. Одно горячее кодирование - хорошее представление данных об обучении нейронной сети (за исключением случайного леса и других методов, которые могут использовать категориальные данные). Но опять же, как видно из приведенных выше примеров, манекены добавляют больше столбцов в ваш набор данных, что потребляет больше места и вычислительной мощности при изучении этих точек. Однако для небольших наборов данных манекены работают хорошо.

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

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