决策树分类器如何与全局约束一起使用?

时间:2019-01-19 11:43:35

标签: python machine-learning scikit-learn classification decision-tree

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

在使用分类器对所有项目进行重新分类后,尽管准确性是可以接受的,但在大多数分类运行中都违反了全局成本约束。很自然地,因为python中sklearn的标准决策树没有考虑约束。

是否有一种方法可以合并全局约束,以便在分类后得到维护?在做出下一个分配选择时,是否有一种方法可以迫使树考虑所有已经分类的项目?我认为这将需要建立某种成本或惩罚功能,以便在树分类期间进行检查。

1 个答案:

答案 0 :(得分:0)

sklearn中实现的决策树仅基于考虑基尼系数,熵或信息增益的分裂标准构建。无法使用自定义损失功能。

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

然后,您将把违反约束的惩罚条款纳入损失函数。