OneHotEncoding后决策树中的特征解释

时间:2020-03-12 09:06:25

标签: python encoding scikit-learn decision-tree one-hot-encoding

我正在尝试对数据执行 OneHotEncoding 以转换分类数据后,决策树如何解释功能


比方说,在训练数据中,我们具有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 个答案:

答案 0 :(得分:1)

在每种情况下,您的模型都可以使用您提供的模型:

  • 如果您的数据集具有形状(X.shape [0],9),则意味着从您的3个类别中将生成9个特​​征。在这种情况下,每个功能都将成为布尔指示符(即:如果与X1对应的列和值“ a”在一行中的值为1,则意味着该行在X1中添加值“ a”)。

  • 在另一种情况下,如果您的形状为(X.shape [0],3),则每一列将具有一组数值(即:对于X1:“ a” = 0.33;“ b” = 0.66;“ c” = 1.0),可以有效地对类别变量中的字符进行编码。

准确回答您的问题:

现在,在拟合决策树模型时,为了计算信息增益,该模型会将其视为9个特征还是3个特征的训练集?

模型将考虑您提供的内容,如果您给他提供形状为(X.shape [0],9)的数据,则模型将计算9个特征的信息增益,如果(X.shape [0],3),它将计算3个特征的信息增益。

如果为3,则模型如何知道否。与功能关联的列的数量。

OneHotEncoding 的意义,仅是将唯一字符串的集合转换为唯一浮点/整数的集合。从本质上讲,IF增益并不关心您的数据是什么样子,这只是scikit-learn算法不接受类别变量。为了获得中频,您的OneHotEncoding结果具有与原始数据相同的“值”。

如果为9,功能是否会失去重要性?

如果您的功能是布尔指示器,而不是已编码的类别列,那么您会丢失任何信息吗?在我看来,您只是表示以其他格式出现在数据集中的信息!

从理论上讲,没有深度限制,这两种方法都应保持相似的结果,因为您只是更改了表示形式,而不是数据和类之间的关系试图学习。

唯一的区别是,如果拆分规则仅考虑一项功能(在sklearn中就是这种情况),则该规则基于编码特征(X1:“ a” = 0.33;“ b” = 0.66;“ c” = 1.0)与布尔值指示符相比,可以一次分离更多的情况。

相关问题