我用sklearn在Python中生成了一个决策树分类器,在准确性方面效果很好。我使用线性程序的最优解训练分类器,该最优解将项目的最优分配返回给类,同时考虑到全局成本约束(即,将项目1分配给A类的成本为x。总的总成本)项目和类别必须小于值y)。
在使用分类器对所有项目进行重新分类后,尽管准确性是可以接受的,但在大多数分类运行中都违反了全局成本约束。很自然地,因为python中sklearn的标准决策树没有考虑约束。
是否有一种方法可以合并全局约束,以便在分类后得到维护?在做出下一个分配选择时,是否有一种方法可以迫使树考虑所有已经分类的项目?我认为这将需要建立某种成本或惩罚功能,以便在树分类期间进行检查。
答案 0 :(得分:0)
但是,诸如XGboost,LightGBM和CatBoost之类的梯度增强树允许您指定自己的损失函数。可以在这里找到教程: https://towardsdatascience.com/custom-loss-functions-for-gradient-boosting-f79c1b40466d
然后,您将把违反约束的惩罚条款纳入损失函数。