Может ли классификатор случайных лесов работать с категориальными переменными? - PullRequest
2 голосов
/ 30 апреля 2020

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

Я хочу указать gender в качестве функции для моей модели. Однако gender может принимать три значения: M, F из np.nan. Если я закодирую этот столбец в три дихотомических столбца, как классификатор случайных лесов узнает, что эти три столбца представляют один элемент?

Представьте себе max_features = 7. При обучении данного дерева оно случайным образом выбирает случайным образом семь функций. Предположим, выбран gender. Если gender разделен на три столбца (gender_M, gender_F, gender_NA), будет ли классификатор случайных лесов всегда выбирать все три столбца и считать его как один объект, или есть вероятность, что он выберет только один или два?

1 Ответ

1 голос
/ 30 апреля 2020

Если для max_features установлено значение меньше фактического количества столбцов (это рекомендуемый подход, см. Рекомендуемые значения для max_features в документах ), тогда да, есть вероятность того, что для данного оценщика в случайном лесу рассматривается только подмножество фиктивных столбцов.

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

В общем, лучший подход для бинарных функций состоит в том, чтобы придумать подходящий метод для заполнить пропущенные значения и преобразовать их в один столбец, закодированный в 0 с и 1 с.

...