Почему одно горячее кодирование повышает производительность машинного обучения?
Я заметил, что когда одно горячее кодирование используется на определенном наборе данных (матрице) и используется в качестве обучающих данных для алгоритмов обучения, оно дает значительно лучшие результаты в отношении точности прогнозирования по сравнению с использованием самой исходной матрицы в качестве обучающих данных. Как происходит это повышение производительности?
2 ответов:
многие алгоритмы обучения либо изучают один вес на объект, либо используют расстояния между образцами. Первое относится к линейным моделям, таким как логистическая регрессия, которые легко объяснить.
предположим, что у вас есть набор данных, имеющий только один категориальный признак "национальность", со значениями" Великобритания"," французский "и"США". Предположим, без потери общности, что они кодируются как 0, 1 и 2. Затем у вас есть вес w для этой функции в линейном классификаторе, который примет какое-то решение, основанное на ограничении w×x + b > 0, или эквивалентно w×x
проблема теперь в том, что вес w не может кодировать трехсторонний выбор. Три возможных значения w×x равны 0, w и 2×w. либо все эти три приводят к одному и тому же решению (все они
одним-горячей кодирования, вы эффективно взорвать признакового пространства для трех функций, которые каждый получит собственного веса, поэтому решение функция теперь ж[Великобритания]х[УК] + ш[фр]х[ПТ] + ш[США]х[нам]
аналогично, любой ученик на основе стандартные метрики расстояния (такие как k-ближайшие соседи) между образцами будут путаться без однократного кодирования. С наивным кодированием и евклидовым расстоянием расстояние между французским и нами равно 1. Расстояние между США и Великобританией составляет 2. Но при однократном кодировании попарные расстояния между ними [1, 0, 0], [0, 1, 0] и [0, 0, 1] все равны √2.
Это не относится ко всем алгоритмам обучения; деревья решений и производные модели, такие как случайные леса, если они достаточно глубоки, может обрабатывать категориальные переменные без однократного кодирования.
Что касается увеличения функций путем выполнения одного горячего кодирования, можно использовать хеширование функций. При выполнении хэширования можно указать количество сегментов, которое будет намного меньше, чем количество вновь введенных функций.
Comments