决策树节点中的决策是否可以基于数据集两列之间的比较?

数据挖掘 分类 决策树
2022-02-24 10:58:52

假设数据框中的特征是列 - A、B、C,我的目标是 Y

我的决策树可以有一个决策节点来寻找说,if A>B then true else false吗?

1个回答

是的,但在我所知道的任何实现中都没有。

这个想法在Elements of Statistical Learning中提到,靠近第 9.2.4 节末尾的“线性组合拆分”标题下。但这并没有在流行的 CART 或 Quinlan 家族的决策树算法中实现*,也没有在 sklearn 的树中完成,而且我不知道任何其他使用它的 python 或 R 包。

一些 R 包做了一个更有限的版本,可以对两个功能进行拆分,但这些拆分的形式是“x1>α and x2β” 而不是直接比较变量。请参阅https://stats.stackexchange.com/questions/4356/does-rpart-use-multivariate-splits-by-default

一个明显的问题是计算要求:仅检查所有特征对现在是二次的,并且允许两个特征的任意线性组合可能要大得多。另一方面,如果您想限制直接比较x1x2(没有系数),这应该是易于处理的(如果比 CART 慢得多)。如果需要合并线性组合,Elements 作者建议使用 Hierarchical Mixtures of Experts模型

哦,再来一条评论。如果你真的想要分裂像x1x2, 你可以生成所有的特征xixj; 那么在考虑这些新功能时,更常见的决策树实现将能够进行拆分。(可能会有一些副作用,但仍然会出现计算问题:您添加了特征。)(m2)


* 我发现一条评论表明 CART 确实支持多功能(“代理”)拆分?:
https ://stackoverflow.com/a/9996741/10495893