use*_*526 4 classification scikit-learn
我正在使用GradientBoostingClassifier来处理我的非平衡标记数据集.似乎在Skleran中,类权重不作为此分类器的参数存在.我知道我可以在适合时使用sample_weight,但在处理VotingClassifier或GridSearch时我无法使用它.有人可以帮忙吗?
目前在sklearn中没有办法在GB中使用class_weights.
不要将它与sample_weight混淆
样本权重会更改您尝试优化的损失函数和分数.这通常用于调查数据,其中抽样方法存在差距.
类权重用于纠正类不平衡,作为过度\欠采样的代理.在sklearn中没有直接的方法来做GB(你可以在随机森林中做到这一点)
很晚了,但我希望它对其他成员有用。
在towarddatascience.com 的Zichen Wang的文章中,提到了点5 Gradient Boosting:
例如,梯度提升机 (GBM) 通过基于错误分类的示例构建连续的训练集来处理类不平衡。它通常在不平衡数据集上优于随机森林。例如,梯度提升机 (GBM) 通过基于错误分类的示例构建连续的训练集来处理类不平衡。它通常在不平衡数据集上优于随机森林。
并且有图表显示,grandient boosting 模型的一半的 AUROC 超过 80%。因此,考虑到 GB 模型的性能及其完成方式,似乎没有必要class_weight像RandomForestClassifierin sklearnpackage那样引入一种参数。
在 Andreas C. Müller 和 Sarah Guido 编写的 Pyhton 机器学习介绍一书中,2017 年版,第 89 页,第 2 章 *监督学习,决策树集合部分,梯度提升回归树(梯度提升机)小节:
它们通常比随机森林对参数设置更敏感,但如果参数设置正确,则可以提供更好的准确性。
现在,如果由于目标变量中类别的不平衡比例仍然存在评分问题,您可能应该查看是否应该拆分您的数据以对其应用不同的模型,因为它们并不像看起来那样同质。我的意思是它可能有一个你没有在你的数据集训练中的变量(一个明显的隐藏变量),它对模型结果有很大的影响,那么即使是更大的 GB 也很难给出正确的评分,因为它错过了你不能的大量信息有时出于多种原因,make 会出现在矩阵中进行计算。
一些更新:
我随机发现有一些库将其实现为梯度提升实例对象的参数。这是告诉H2O参数 where的情况balance_classes:
通过过采样/欠采样(对于不平衡数据)平衡训练数据类计数。
类型:bool(默认值:False)。
如果你想继续,sklearn你应该像 HakunaMaData 所说的那样:过采样/欠采样,因为当参数存在时,其他库最终会这样做。
| 归档时间: |
|
| 查看次数: |
5566 次 |
| 最近记录: |