Хотя AN6U5 дал очень хороший ответ, я хотел добавить несколько моментов для дальнейшего использования. При рассмотрении One Hot Encoding (OHE) и Label Encoding , мы должны попытаться понять, какую модель вы пытаетесь построить. А именно, две категории моделей, которые мы будем рассматривать:
- Древовидные модели : деревья решений с градиентным ускорением и случайные леса.
- Модели , не основанные на деревьях: линейные, кНН или нейронные сети.
Давайте рассмотрим, когда применять OHE, а когда применять Label Encoding при построении моделей на основе дерева.
Мы применяем OHE, когда:
- Когда значения, которые близки друг к другу в кодировке метки, соответствуют целевым значениям, которые не являются близкими (нелинейные данные).
- Когда категориальная особенность не является порядковой (собака, кошка, мышь).
Мы применяем кодировку Label, когда:
- Категориальная особенность - порядковый номер (младший кг, старший кг, начальная школа, средняя школа и т. Д.).
- Когда мы можем придумать кодировщик меток, который назначает близкие метки аналогичным категориям : это приводит к меньшему количеству выпадений в локоне и, следовательно, сокращает время выполнения.
- Когда количество категориальных признаков в наборе данных огромно: одноразовое кодирование категориального признака с огромным количеством значений может привести к (1) высокому потреблению памяти и (2) случаю, когда некатегориальные особенности редко используются моделью. Вы можете иметь дело с 1-м случаем, если вы используете разреженные матрицы. Второй случай может возникнуть, если вы строите дерево, используя только подмножество функций. Например, если у вас есть 9 числовых функций и 1 категориальное с 100 уникальными значениями, и вы категорически закодировали эту категорическую функцию, вы получите 109 функций. Если дерево построено только с подмножеством объектов, начальные 9 числовых объектов будут использоваться редко. В этом случае вы можете увеличить параметр, управляющий размером этого подмножества. В xgboost это называется colsample_bytree, в случайном лесу sklearn max_features.
Если вы хотите продолжить с OHE, как предложено @ AN6U5, вы можете объединить PCA с OHE.
Давайте рассмотрим, когда применять OHE и Label Encoding при построении моделей, не основанных на деревьях.
Чтобы применить кодирование метки, зависимость между объектом и целью должна быть линейной, чтобы эффективно использовать кодирование метки.
Точно так же, если зависимость нелинейная, вы можете использовать OHE для нее.
Примечание: на некоторые объяснения ссылались из « Как выиграть в конкурсе Data Science» от Coursera.