【问题标题】:How to handle class imbalance in sklearn random forests. Should I use sample weights or class weight parameter如何处理 sklearn 随机森林中的类不平衡。我应该使用样本权重还是类权重参数
【发布时间】:2016-04-11 20:55:11
【问题描述】:

我正在尝试解决类别不平衡的二元分类问题。我有一个包含 210,000 条记录的数据集,其中 92 %0s8%1 秒。我在python 中使用sklearn (v 0.16)random forests

我看到在构造分类器时有两个参数sample_weightclass_weight。我目前正在使用参数class_weight="auto"

我使用正确吗? class_weight 和 sample weight 实际上是做什么的,我应该使用什么?

【问题讨论】:

  • 是的,我试过了,class_weight="auto",它给了我很好的精度和召回率,但我想知道幕后发生了什么,我什至做得对

标签: python scikit-learn random-forest supervised-learning


【解决方案1】:

类权重是你应该使用的。

样本权重允许您为特定样本的影响指定一个乘数。对权重为 2.0 的样本进行加权与该点在数据中出现两次的效果大致相同(尽管确切的效果取决于估计器)。

类权重具有相同的效果,但它用于将集合乘数应用于属于指定类的每个样本。就功能而言,您可以使用其中任何一种,但为了方便起见,提供了class_weights,因此您不必手动加权每个样本。也可以将两者的使用结合起来,其中类权重乘以样本权重。

sample_weightsfit() 方法上的主要用途之一是允许提升元算法(如AdaBoostClassifier)对现有的决策树分类器进行操作,并根据算法的需要增加或减少单个样本的权重.

【讨论】:

  • 感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 2013-12-13
  • 2012-02-01
  • 2016-06-27
  • 2018-12-25
  • 2017-05-13
  • 2016-02-08
相关资源
最近更新 更多