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

时间:2016-01-07 12:51:51

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

我正在尝试用类不平衡来解决二进制分类问题。我有210,000条记录的数据集, 92% 0s 8% 1秒 即可。我在sklearn (v 0.16)中使用python random forests

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

我是否正确使用此功能? class_weight和样本权重实际上做了什么以及我应该使用什么?

1 个答案:

答案 0 :(得分:3)

你应该使用类权重。

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

类权重具有相同的效果,但它用于将设定的乘数应用于落入指定类的每个样本。在功能方面,您可以使用其中之一,但为方便起见提供了class_weights,因此您无需手动加权每个样本。还可以组合两个类别的使用,其中类权重乘以样本权重。

sample_weights方法fit()的一个主要用途是允许像AdaBoostClassifier这样的元推算等元算法在现有的决策树分类器上运行,并增加或减少个人的权重算法需要的样本。