假设数据框中的特征是列 - A、B、C,我的目标是 Y
我的决策树可以有一个决策节点来寻找说,if A>B then true else false吗?
假设数据框中的特征是列 - A、B、C,我的目标是 Y
我的决策树可以有一个决策节点来寻找说,if A>B then true else false吗?
是的,但在我所知道的任何实现中都没有。
这个想法在Elements of Statistical Learning中提到,靠近第 9.2.4 节末尾的“线性组合拆分”标题下。但这并没有在流行的 CART 或 Quinlan 家族的决策树算法中实现*,也没有在 sklearn 的树中完成,而且我不知道任何其他使用它的 python 或 R 包。
一些 R 包做了一个更有限的版本,可以对两个功能进行拆分,但这些拆分的形式是“” 而不是直接比较变量。请参阅https://stats.stackexchange.com/questions/4356/does-rpart-use-multivariate-splits-by-default
一个明显的问题是计算要求:仅检查所有特征对现在是二次的,并且允许两个特征的任意线性组合可能要大得多。另一方面,如果您想限制直接比较(没有系数),这应该是易于处理的(如果比 CART 慢得多)。如果需要合并线性组合,Elements 作者建议使用 Hierarchical Mixtures of Experts模型。
哦,再来一条评论。如果你真的想要分裂像, 你可以生成所有的特征; 那么在考虑这些新功能时,更常见的决策树实现将能够进行拆分。(可能会有一些副作用,但仍然会出现计算问题:您添加了特征。)
* 我发现一条评论表明 CART 确实支持多功能(“代理”)拆分?:
https ://stackoverflow.com/a/9996741/10495893