Кодировать One-Hot или нет Кодировать One-Hot - PullRequest
0 голосов
/ 24 мая 2019

В моем наборе данных есть номер дня недели (пн = 1, вт = 2, ср = 3 ...)

Мои данные выглядят так

WeekDay Col1 Col2 Target
1       2.2  8    126
6       3.5  4    354
1       8.0  2    322
3       7.2  4    465
7       3.2  5    404
6       3.8  3    134
1       3.6  5    455
1       5.5  8    345
6       7.0  6    442

Должен ли я в один прекрасный день кодировать WeekDay, чтобы он выглядел так?

WeekDay Col1 Col2 Target  Mo Tu We Th Fr Sa Su
1       2.2  8    126     1  0  0  0  0  0  0
6       3.5  4    354     0  0  0  0  0  1  0
1       8.0  2    322     1  0  0  0  0  0  0
3       7.2  4    465     0  0  1  0  0  0  0
7       3.2  5    404     0  0  0  0  0  0  1
6       3.8  3    134     0  0  0  0  0  1  0
1       3.6  5    455     1  0  0  0  0  0  0
1       5.5  8    345     1  0  0  0  0  0  0
6       7.0  6    442     0  0  0  0  0  1  0

Я собираюсь использовать Случайный Лес

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Как правило, предпочтительно использовать One-Hot-Encoding перед использованием Random Forest. Если это только категориальная переменная в вашем наборе данных, тогда выберите One-hot-Encoding. Если вы используете случайный лес R, то, как я знаю, библиотека R сама с этим справится. Для scikit-learn это не тот случай, и вам придётся кодировать себя одним словом. Есть компромисс. Кодирование One-Hot вводит разреженность, которая нежелательна для моделей на основе дерева, если количество элементов категориальной переменной велико, или, другими словами, в категориальной переменной много уникальных значений. Тем не менее, Python Catboost имеет дело с категориальными переменными.

0 голосов
/ 26 мая 2019

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

Одно горячее кодирование лучше в случаях таких методов, как линейная регрессия или логистическая регрессия, где 1, т. Е. Понедельник, может получить большее значение, чем 6то есть в субботу, поскольку у этих моделей есть модель умножения на бэкэнде.

...