我很好奇序数特征的处理方式是否与决策树中的分类特征不同,我对目标是分类或连续的两种情况都感兴趣。
如果有区别,您能否指出具有解释的良好来源以及支持它的任何软件包(R 或 Python)?
我很好奇序数特征的处理方式是否与决策树中的分类特征不同,我对目标是分类或连续的两种情况都感兴趣。
如果有区别,您能否指出具有解释的良好来源以及支持它的任何软件包(R 或 Python)?
据我所知,对于决策树模型来说,特征是有序的还是分类的并不重要。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。决策树使用属性列表来描述模式。
对于更详细的解释,我在这里提供了一些链接,您会发现这些链接对此类查询很有帮助。
http://www.ibm.com/support/knowledgecenter/SS3RA7_17.0.0/clementine/nodes_treebuilding.html
http://scikit-learn.org/stable/modules/tree.html
http://www.ryerson.ca/~rmichon/mkt700/SPSS/Creating%20Decision%20Trees.htm
在 GBM 中,序数数据和分类数据的处理方式完全相同。但是,如果您将序数数据格式化为分类,结果很可能会有所不同。对于格式化为序数的分类数据也是如此。
有序数据作为分类数据
让我们考虑下面的例子。您正在预测人类的体重。{'S': 0, 'XL': 1, 'L': 2, 'M': 3}
您有T 恤尺寸特征的映射。GBM 将其拆分到最后一个分支,并且尚未拆分 T 恤尺寸功能。此时,它尝试根据 T 恤尺寸进行拆分,但没有发现任何收益,因为单个拆分只能对['S', 'XL']
和进行分组['M', 'L']
。
如果我们按顺序进行编码,那么我们将得到{'S'=0, 'M'=1, 'L'=2, 'XL=3'}
我们的映射。因此,最终的分裂将导致['S', 'M']
并且['L', 'XL']
肯定会导致收益。
现在我明白这是一个非常人为的例子,正确调整参数最终会分裂
['S', 'XL', 'L', 'M']
/ \ No Gain, maybe loss (-2)
['S', 'XL'] ['M', 'L']
/ \ / \ Big gain (+15)
['S'] ['XL'] ['M'] ['L']
但是,当您可以向 GBM 提供已知信息时,您是否会将其留给棘手的参数调整、模型训练时间更长以及信息可能丢失的问题。在这种情况下编码序数是有意义的。
分类数据作为序数
假设我们现在将就业状况作为体重预测的分类数据。我们将其标记如下{'unemployed': 0, 'employed': 1, 'self_employed':2, 'education':3}
。我们可以假设在一个大型数据集上,这 4 个差异对权重几乎没有影响。但是,如果数据集足够大,则很有可能会有一个分支,其中序数似乎与权重有某种关系。然后模型将学习这一点并相应地进行拆分。这会导致过拟合。
在这种情况下,如果我们表示这些数据
Employment_Status
0
2
如下(二进制编码),这种关系不会被学习,因为它们被视为不同的特征。ES 代表就业状况。
ES_unemployed ES_employed ES_self_employed ES_education
1 0 0 0
0 0 1 0
同样,这是一个人为的例子。在这种情况下,您可以克服传统方法中的过度拟合,例如通过交叉验证,但这非常耗时。IMO 非常值得首先进行正确的特征工程,并将分类特征视为分类特征,将有序特征视为有序特征。