我使用GradientBoostingClassifier来处理不平衡的标记数据集。看起来类别权重并不作为Skleran中此分类器的参数存在。我知道我可以在适合时使用sample_weight,但在处理VotingClassifier或GridSearch时我无法使用它。有人可以帮忙吗?
答案 0 :(得分:5)
目前在sklearn中没有办法在GB中使用class_weights。
不要将此与sample_weight相混淆
样本权重会更改您尝试优化的损失函数和分数。这通常用于调查数据,其中抽样方法存在差距。
类权重用于纠正类不平衡,作为过度\欠采样的代理。在sklearn中没有直接的方法来做GB(你可以在随机森林中做到这一点)
答案 1 :(得分:0)
很晚了,但是我希望它对其他成员有用。
在Zichen Wang in towardsdatascience.com的文章中,告诉了第5点 Gradient Boosting :
例如,梯度提升机(GBM)通过基于错误分类的示例构造连续的训练集来处理班级不平衡问题。它通常在不平衡数据集上胜过随机森林。例如,梯度提升机(GBM)通过基于错误分类的示例构造连续的训练集来处理班级不平衡问题。在不平衡的数据集上,它通常胜过随机森林。
图表显示,一半的增强型模型的AUROC超过80%。因此,考虑到GB模型的性能及其完成方式,似乎没有必要引入一种class_weight
参数,因为RandomForestClassifier
包中的sklearn
就是这种情况。>
在AndreasC.Müller和Sarah Guido撰写的《使用Pyhton进行机器学习入门》一书中,2017年版,第89页,第2章*监督学习,决策树组合,小节梯度增强的回归树(梯度增强机):
他们通常对 参数设置比随机森林要大,但是如果正确设置参数,则可以提供更好的准确性。
现在,如果由于目标变量中类别的比例不平衡而仍然存在评分问题,则可能应该查看是否应该拆分数据以对其应用不同的模型,因为它们看起来不那么均匀是。我的意思是说它可能有一个您的数据集序列中没有的变量(显然是一个隐藏变量),该变量会极大地影响模型结果,那么即使更大的GB也很难给出正确的评分,因为它会丢失大量的信息,而您无法由于某些原因,make有时会出现在矩阵中以进行计算。
答案 2 :(得分:-1)
是的,sample_weight
方法
fit
sample_weight :类似数组,形状= [n_samples]或无
样本权重。如果为None,则样本的权重相等。在每个节点中搜索拆分时,将忽略将创建具有净零或负权重的子节点的拆分。在分类的情况下,如果它们会导致在任一子节点中携带负权重的任何单个类,则也会忽略拆分。
根据类别
简单地传递每个样本的权重