Почему одна горячая кодировка улучшает производительность машинного обучения?


127

Я заметил, что когда кодирование One Hot используется для определенного набора данных (матрицы) и используется в качестве обучающих данных для алгоритмов обучения, оно дает значительно лучшие результаты в отношении точности предсказания по сравнению с использованием самой исходной матрицы в качестве обучающих данных. Как происходит это повышение производительности?

Ответы:


260

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

Предположим, у вас есть набор данных, содержащий только одну категориальную характеристику «национальность» со значениями «Великобритания», «Французский» и «США». Предположим, без потери общности, что они закодированы как 0, 1 и 2. Затем у вас есть вес w для этой функции в линейном классификаторе, который примет какое-то решение на основе ограничения w × x + b> 0 , или, что то же самое, w × x <b.

Проблема в том, что вес w не может кодировать трехсторонний выбор. Три возможных значения w × x: 0, w и 2 × w. Либо эти три варианта приводят к одному и тому же решению (все они <b или ≥b), либо «Великобритания» и «французский язык» приводят к одному и тому же решению, либо «французы» и «США» принимают одно и то же решение. Модель не может узнать, что «Великобритания» и «США» должны иметь один и тот же ярлык, а «французский» - лишний.

Посредством однократного кодирования вы эффективно увеличиваете пространство функций до трех функций, каждая из которых получит свой собственный вес, поэтому функция принятия решения теперь будет w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b, где все x являются логическими. В этом пространстве такая линейная функция может выражать любую сумму / дизъюнкцию возможностей (например, «Великобритания или США», что может быть предиктором для говорящего по-английски).

Точно так же любой учащийся, основанный на стандартных показателях расстояния (например, k-ближайших соседей) между выборками, запутается без однократного кодирования. При наивном кодировании и евклидовом расстоянии расстояние между французским и американским языками равно 1. Расстояние между США и Великобританией равно 2. Но при однократном кодировании попарные расстояния между [1, 0, 0], [0, 1 , 0] и [0, 0, 1] все равны √2.

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


4
Спасибо за это, Ларс, но когда мы выполняем кодирование OneHotEncoding, которое эффективно увеличивает количество функций, разве нам не нужно также увеличивать количество сэмплов, чтобы убедиться, что они не перекрываются.
Manoj

@Manoj По сравнению с очевидным альтернативным представлением категориальных переменных, кодирующим каждый уровень как отдельное целое число, я не думаю, что это имеет значение: вам в любом случае нужна достаточная статистика.
Фред Фу,

7
Есть ли какая-нибудь литература, на которую вы могли бы указать, чтобы я мог прочитать это дальше? Спасибо.
Доктор Ноуиталл

1
Есть ли преимущество в использовании неполной матрицы рангов (чего вы не стали бы делать при построении обычной статистической модели) при использовании таких методов машинного обучения, как ускорение?
Steve S

2
На мой взгляд, это похоже на то, что статистик назвал бы «фиктивными переменными». Но, возможно, есть небольшая экономия места для хранения.
Soldalma

3

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


0

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

Теперь, что произойдет, если вы назначите категорию 0 на 0, категорию 1 на 1 и категорию 2 на 2 без однократного кодирования, и что прогноз вашего алгоритма не уверен, должен ли он выбрать 0 или 2: должен ли он прогнозировать 1, несмотря на он думает либо 0, либо 2?

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

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