随机森林是不平衡数据分类的好选择吗?

机器算法验证 机器学习 分类 数据挖掘 监督学习 统计学习
2022-03-04 04:56:49

尽管有相似的和其他不断增加的数据可变性方法,但随机森林“作为一种算法”是否可以被认为是不平衡数据分类的好选择?

2个回答

注意:这篇文章相当古老,可能不正确。仅将其用作起点,而不是权威答案。


随机森林模型建立在决策树之上,决策树对类不平衡很敏感每棵树都建立在一个“袋子”上,每个袋子都是来自数据的均匀随机样本(有放回)。因此,每棵树都会因类别不平衡而偏向相同的方向和幅度(平均而言)。

然而,有几种技术可以减轻分类任务中的不平衡。

其中一些是通用的,适用于各种情况。搜索unbalanced-classes此 SE 网站上的class-imbalance标签,以及Data Science SE 网站上的标签。

此外,随机森林至少适用于两种类权重。第一种技术是加权树分裂标准(有关其工作原理的信息,请参阅https://datascience.stackexchange.com/a/56260/1156)。另一种技术是在自举采样过程中对数据点进行过采样或欠采样。

在 Python 中,加权树分裂是在Scikit-learn类中实现的RandomForestClassifier,作为class_weight参数。加权引导采样在Imbalanced-learn类中实现BalancedRandomForestClassifier请注意,Imbalanced-learnBalancedRandomForestClassifier也支持与class_weightScikit-learn 相同的参数RandomForestClassifier

在 R 中,这两种技术都在Ranger中实现,在 mainranger函数中,作为class.weightscase.weightssample.fraction参数。有关使用示例,请参见https://stats.stackexchange.com/a/287849/36229 ;关于同一问题的其他答案中也有有用的信息。

显然,在类不平衡的每个极端情况下,您可能需要调整最小节点大小或其他“详细”参数以使模型完全正常工作。参见,例如https://stackoverflow.com/a/8704882/2954547

仅当您还存在误分类成本不平衡时,不平衡类才是一个问题。如果有少数少数类,并且将它们归类为多数类并不比反之更昂贵,那么合理的做法是允许对少数类进行错误分类。

所以让我们假设你有阶级和成本不平衡。有多种方法可以解决这个问题。Max Kuhn 的书“应用预测建模”在第 16 章中有一个很好的概述。这些补救措施包括使用 0.5 以外的截止值,这反映了不平等的成本。只要您的分类器输出标签概率(树和森林这样做),这在二元分类中很容易做到。我还没有研究过多个课程。您还可以对少数类进行过采样以赋予其更大的权重。