如何处理sklearn随机森林中的类别不平衡。我应该使用样本权重还是类别权重参数?

5
我正在尝试解决一个存在类别不平衡的二元分类问题。我的数据集中有210,000条记录,其中92%0s8%1s。我在python中使用sklearn(v 0.16)进行random forests分类。
在构建分类器时,我发现有两个参数: sample_weightclass_weight。我目前正在使用参数 class_weight="auto"
我是否使用正确?class_weight和sample weight实际上是什么及应该使用什么?

是的,我尝试了class_weight="auto",它给了我很好的精度和召回率,但我想知道背后发生了什么,我是否做得正确。 - NG_21
1个回答

3

类别权重是您应该使用的内容。

样本权重允许您指定特定样本影响的乘数。使用2.0的权重给样本加权大致等同于数据中存在该点两次(尽管确切的影响因估计器而异)。

类别权重具有相同的效果,但它用于将指定类别中的每个样本都应用一组乘数。在功能方面,您可以使用任何一个,但为了方便起见,提供了class_weights,这样您就不必手动加权每个样本。并且也可以同时使用两种权重,在此情况下,类别权重会乘以样本权重。

fit() 方法中 sample_weights 的主要用途是允许增强元算法,例如 AdaBoostClassifier 在现有的决策树分类器上运行,并根据算法需要增加或减少单个样本的权重。


感谢您的解释。 - NG_21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接