在处理VotingClassifier或Grid搜索时,Sklearn中的GradientBoostingClassifier是否有类权重(或替代方式)?

时间:2016-02-21 18:13:36

标签: scikit-learn classification

我使用GradientBoostingClassifier来处理不平衡的标记数据集。看起来类别权重并不作为Skleran中此分类器的参数存在。我知道我可以在适合时使用sample_weight,但在处理VotingClassifier或GridSearch时我无法使用它。有人可以帮忙吗?

3 个答案:

答案 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

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier.fit

  

sample_weight :类似数组,形状= [n_samples]或无

     

样本权重。如果为None,则样本的权重相等。在每个节点中搜索拆分时,将忽略将创建具有净零或负权重的子节点的拆分。在分类的情况下,如果它们会导致在任一子节点中携带负权重的任何单个类,则也会忽略拆分。

根据类别

简单地传递每个样本的权重