Я никогда не уверен, когда использовать одно горячее кодирование для неупорядоченных категориальных переменных, а когда нет. Я использую его всякий раз, когда алгоритм использует метрику расстояния для вычисления сходства. Может ли кто-нибудь дать общее эмпирическое правило относительно того, какие типы алгоритмов требуют, чтобы неупорядоченные категориальные функции были закодированы горячим способом, а какие - нет?
12
Ответы:
Большинство алгоритмов (линейная регрессия, логистическая регрессия, нейронная сеть, машина опорных векторов и т. Д.) Требуют некоторого кодирования категориальных переменных. Это потому, что большинство алгоритмов принимают только числовые значения в качестве входных данных.
Алгоритмы, которые не требуют кодирования, представляют собой алгоритмы, которые могут непосредственно работать с объединенными дискретными распределениями, такими как цепь Маркова / наивная байесовская / байесовская сеть, основанная на деревьях и т. Д.
Дополнительные комментарии:
Одно горячее кодирование является одним из методов кодирования. Вот хороший ресурс для категориального кодирования переменных (не ограничиваясь R). R БИБЛИОТЕЧНЫЕ КОНТРАСТНЫЕ СИСТЕМЫ КОДИРОВАНИЯ ДЛЯ КАТЕГОРИЧЕСКИХ ПЕРЕМЕННЫХ
Даже без кодирования можно определить расстояние между точками данных с дискретными переменными, такими как расстояние Хэмминга или расстояние Левенштейна
источник
AFAIU, он должен делать больше с конкретными данными , а не с конкретным алгоритмом . В частности, это зависит от того, существует ли какой-либо значимый порядок в категориях или нет.
Рассмотрим два случая. В первом у вас есть категории плохие, хорошо , а во втором у вас есть яблоко, апельсин, груша . В первом случае существует естественный порядок, потому что, вероятно , меха находится между плохим и хорошим , но, вероятно, ничего подобного не происходит в яблоке, апельсине, груше .
Если вы избегаете однократного кодирования для первого случая, вы «теряете» информацию о заказе. Если вы используете горячее кодирование для второго случая, вы назначаете некоторый порядок категориям, что, естественно, не соответствует действительности.
Зачем? Предположим, что одна из характеристик является категорически плохой, хорошо, хорошо , и у вас есть три экземпляра, 1, 2 и 3, где они идентичны, за исключением того, что 1 - плохо , 2 - это мех , а 3 - хорошо. Вы, вероятно, хотите выразить алгоритму, что 1 больше похож на 2, чем на 3.
источник
Ни один алгоритм машинного обучения не требует одного горячего кодирования. Это один из методов работы с категориальными переменными. Фиктивные переменные это другое. Традиционно фиктивные переменные были предпочтительным решением. Например, функция R lm () автоматически создает фиктивные переменные для категориальных данных. Если вы используете python и scikt-learn, то я считаю, что многие из его алгоритмов требуют горячего кодирования категориальных переменных. Я считаю, что tennorsFlow также требует горячего кодирования. Это выбор способа кодирования переменной. Нет причины, по которой фиктивные переменные не могли бы использоваться вместо этого в коде. Все это имеет отношение к реальной реализации кода алгоритма.
Как указывает hxd1011, проблема описания «расстояния» между категориальными переменными является деликатной проблемой. В дополнение к упомянутым расстояниям есть также расстояние Жакара. Некоторые методы ML, в частности SVM, не подходят для категориальных данных, и добавление категориальных переменных может / будет (как вы сами решаете) привести к моделям с очень плохой предсказательной способностью. Большинство ансамблевых моделей обрабатывают категориальные данные «как есть» и не требуют предварительной обработки.
источник