Какие алгоритмы требуют горячего кодирования?


12

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


2
Вы спрашиваете о необходимости кодировать категориальные данные в некоторый тип «контрастных переменных» или конкретно в фиктивный (однократный) тип?
ttnphns

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

@ttnphns честно говоря, я не знаю, что вы подразумеваете под контрастной переменной. Я только знаком с пустышкой.
Космос

Космос, пустышка (= индикатор = одна горячая) - это только один из нескольких способов кодирования категориальных переменных в анализах. Эти способы в совокупности называются «контрастными переменными». См. Stats.meta.stackexchange.com/q/4669/3277 и stats.stackexchange.com/a/221868/3277
ttnphns

1
Я думаю, что полный список, который вы просите, будет сложно составить.
mdewey

Ответы:


6

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

Алгоритмы, которые не требуют кодирования, представляют собой алгоритмы, которые могут непосредственно работать с объединенными дискретными распределениями, такими как цепь Маркова / наивная байесовская / байесовская сеть, основанная на деревьях и т. Д.

Дополнительные комментарии:


До сих пор не ясно, требуется ли одна горячая кодировка для САМЫХ АЛГОРИТМОВ. Вы просто говорите, что требуется кодировка. Но это горячая кодировка?
Прометей

4

Может ли кто-нибудь дать список того, какие алгоритмы требуют, чтобы категориальные функции были закодированы в горячем виде, а какие - нет?

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

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

Если вы избегаете однократного кодирования для первого случая, вы «теряете» информацию о заказе. Если вы используете горячее кодирование для второго случая, вы назначаете некоторый порядок категориям, что, естественно, не соответствует действительности.

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

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


2
Это хороший ответ. Я должен был прояснить этот вопрос, включив также неупорядоченные категориальные переменные. В таком случае, он всегда должен быть горячим?
Космос

@ cosmos1990 ИМХО, как правило, для неупорядоченных категориальных данных предпочтительнее использовать горячее кодирование (в отличие от присвоения числовых значений).
Ами Тавори

2

Ни один алгоритм машинного обучения не требует одного горячего кодирования. Это один из методов работы с категориальными переменными. Фиктивные переменные это другое. Традиционно фиктивные переменные были предпочтительным решением. Например, функция R lm () автоматически создает фиктивные переменные для категориальных данных. Если вы используете python и scikt-learn, то я считаю, что многие из его алгоритмов требуют горячего кодирования категориальных переменных. Я считаю, что tennorsFlow также требует горячего кодирования. Это выбор способа кодирования переменной. Нет причины, по которой фиктивные переменные не могли бы использоваться вместо этого в коде. Все это имеет отношение к реальной реализации кода алгоритма.

Как указывает hxd1011, проблема описания «расстояния» между категориальными переменными является деликатной проблемой. В дополнение к упомянутым расстояниям есть также расстояние Жакара. Некоторые методы ML, в частности SVM, не подходят для категориальных данных, и добавление категориальных переменных может / будет (как вы сами решаете) привести к моделям с очень плохой предсказательной способностью. Большинство ансамблевых моделей обрабатывают категориальные данные «как есть» и не требуют предварительной обработки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.