决策树分类器如何处理全局约束?

Posted

技术标签:

【中文标题】决策树分类器如何处理全局约束?【英文标题】:How can a decision tree classifier work with global constraints? 【发布时间】:2019-06-13 11:17:09 【问题描述】:

我用 Python 中的 sklearn 生成了一个决策树分类器,在准确度方面效果很好。我用线性程序的最佳解决方案训练分类器,它返回项目到类的最优分配,同时考虑到全局成本约束(即,将项目 1 分配给类 A 的成本为 x。总产生的成本在所有items 和 classes 必须小于值 y)。

在使用分类器重新分类所有项目后,虽然准确度可以接受,但在大多数分类运行中都违反了全局成本约束。自然如此,因为 python 中 sklearn 的标准决策树不考虑约束。

有没有办法将全局约束纳入分类之后维护?在做出下一个分配选择时,有没有办法强制树考虑所有已经分类的项目?我认为这需要建立某种成本或惩罚函数,以便在树分类期间进行检查。

【问题讨论】:

【参考方案1】:

在 sklearn 中实现的决策树仅基于考虑基尼系数、熵或信息增益的分割标准构建。无法自定义损失函数。

但是,XGboost、LightGBM 和 CatBoost 等梯度增强树允许指定您自己的损失函数。可以在此处找到教程: https://towardsdatascience.com/custom-loss-functions-for-gradient-boosting-f79c1b40466d

然后,您可以将违反约束的惩罚项合并到损失函数中。

【讨论】:

非常感谢您的评论,@jonnor!非常有帮助,非常感谢!

以上是关于决策树分类器如何处理全局约束?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理类别型特征

如何处理“rpart”中的连续和离散变量 - 使用 R 的决策树?

数据挖掘十大经典算法--CART: 分类与回归树

sklearn-分类决策树

分类:基本概念、决策树与模型评估

决策树与随机森林