Интерпретация функций в дереве решений после OneHotEncoding - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь понять, как функции интерпретируются деревом решений после выполнения OneHotEncoding для данных для преобразования категориальных данных.


Допустим, в обучающих данных у нас есть 3 функции (все категориальные) как X1, X2, X3.

X1 имеет 3 различных значения (a, b, c), X2 имеет 2 различных значения (e, f) и X3 имеет 4 различных значения (m, n, o, p).

После кодирования со значением sparse = False результирующая матрица будет иметь форму (X.shape [0], 9).


Теперь при подборе модели дерева решений для вычисления прироста информации, Будет ли модель рассматривать это как обучающий набор из 9 или 3 функций?

Если 3, как модель узнает о нет. столбцов, связанных с функцией.

Если 9, функции не потеряют свою важность?

1 Ответ

1 голос
/ 12 марта 2020

В любом случае ваша модель будет работать с тем, что вы ей дадите:

  • Если ваш набор данных имеет форму (X.shape [0], 9), это будет означать что 9 функций были бы сгенерированы из вашей 3 категории. В этом случае каждый объект становится булевым индикатором (ie: если столбец, соответствующий X1 и значению «a», имеет значение 1 в строке, это будет означать, что эта строка добавляет значение «a» в X1).

  • В другом случае, если ваша фигура (X.shape [0], 3), каждый столбец будет иметь набор числовых значений (ie: для X1: "a "= 0,33;" b "= 0,66;" c "= 1,0), эффективно кодирующие символы в вашей категориальной переменной.

Чтобы точно ответить на ваши вопросы:

Теперь, при подборе модели дерева решений для расчета получения информации, будет ли модель рассматривать это как обучающий набор из 9 или 3 функций?

Модель будет учитывать то, что вы ей дадите, если вы дадите ему данные с формой (X.shape [0], 9), она вычислит выигрыш информации по 9 объектам, если (X.shape [0], 3), она вычислит информацию 3 функции.

Если 3, то как модель узнает о нет. столбцов, связанных с объектом.

Точка OneHotEncoding , если только в , преобразует ансамбль уникальной строки в ансамбль уникальных чисел с плавающей запятой / целых чисел . В сущности, если усиление не имеет значения, как выглядят ваши данные, это просто алгоритм scikit-learn, не принимающий категориальные переменные. Чтобы получить IF, ваш результат OneHotEncoding будет иметь то же «значение», что и исходные данные.

Если 9, функции не потеряют свою значимость?

Если ваш функции логический индикатор вместо закодированного категориального столбца, вы теряете какую-либо информацию? На мой взгляд, нет, вы просто представляли информацию, изначально представленную в вашем наборе данных в другом формате!

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

Единственная разница заключается в том, что , если в правилах разбиения учитывается только один признак (как в случае с sklearn), правило, основанное на значении закодированный признак (X1: «a» = 0,33; «b» = 0,66; «c» = 1,0) может разделить больше дел в одном разбиении , чем булевский индикатор.

...