随机森林分类器class_weight

时间:2017-12-06 15:22:33

标签: machine-learning scikit-learn random-forest

我有一个200000描述为0级的不平衡数据集,类似于10000的类是1.但是,在我的训练数据集中,我有相同数量的'正'和'负'样本,每个约8000。所以现在我对如何正确使用分类器的“class_weight”选项感到困惑。似乎只有当训练数据中的“正”和“负”样本的数量与整个数据集中的数量相同时,它才有效。在这种情况下,它将是8000'正面'和160000'负面',这是不可行的。减少“正面”样本的数量似乎也不是一个好主意。或者我错了吗?

2 个答案:

答案 0 :(得分:2)

class_weight选项只会增加使用代表不足的类产生错误的权重。换句话说,对稀有阶级的错误分类受到更严厉的惩罚。

分类器可能在您的测试集上表现更好(两个类都表示相同,因此两者同样重要),但这是您可以轻松验证的内容。

副作用是predict_proba返回远离实际概率的概率。 (如果你想理解为什么,绘制简单的平均机会和预测分数的分布,没有和不同的class_weight=。预测的分数如何变化?)。根据您的最终用例(分类,排名,概率估算),您应该考虑模型中的选择。

答案 1 :(得分:1)

严格来说,从您的 training 集的角度来看,您不会遇到类不平衡问题,因此您可以将class_weight置于默认{{1}价值。

这里和一般不平衡数据集中的真正问题(关于哪些不提供任何信息)是错误分类的成本对于两个类都是相同的。这是一个“业务”决策(即不是统计/算法)。

通常,不平衡的数据集与不同的错误分类成本问题密切相关;医学诊断是一个教科书的例子,因为:

  1. 数据集几乎默认不平衡,因为健康人数远远超过受感染者
  2. 我们宁愿误报(将某人误认为患有此疾病,而他/她却没有),而不是错过检测(将感染者误分类为健康,从而冒着生命危险)
  3. 因此,这是您应该考虑的实际问题(即使在构建训练集之前)。

    如果对于您尝试解决的业务问题,将“1”的错误分类与“0”的“1”错误分类并给出你的训练集是平衡的,你可以继续前进而不必担心分配不同的班级权重......