Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Теперь проблема заключается в том, что вес w не может кодировать трехсторонний выбор. Три возможных значения w × x равны 0, w и 2 × w. Либо эти три все приводят к тому же решению (все они - lt; 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.

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

Ответ 2

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