目前,我正在使用Sklearn实现RandomForestClassifier来处理我的不平衡数据。我对Sklearn中RF的工作原理并不是很清楚。以下是我的疑虑:
- 根据文档,似乎没有办法为每个树学习器设置子样本大小(即小于原始数据大小)。但是在随机森林算法中,我们需要为每棵树获取样本和特征的子集。我不确定是否可以通过Sklearn实现?如果可以,如何实现?
以下是Sklearn中RandomForestClassifier的描述。
“随机森林是一种元估计器,它在数据集的各个子样本上拟合多个决策树分类器,并使用平均值来提高预测准确性并控制过度拟合。如果bootstrap=True(默认情况下),则子样本大小始终与原始输入样本大小相同,但是如果bootstrap=True,则使用替换抽样。”
我之前发现了一个类似的问题。但是这个问题没有得到太多答案。
如何使用SciKit-Learn随机森林子样本大小等于原始训练数据大小?
- 对于不平衡的数据,如果我们可以通过Sklearn进行子样本拾取(即解决问题#1),那么我们可以做平衡随机森林吗?即对于每个树学习器,它将从较少的类中选择一个子集,并选择相同数量的样本从较多的类中组成一个完整的训练集,以使两个类具有平等的分布。然后重复此过程多次(即# of trees)。
谢谢! Cheng
fit
方法的sample_weight
参数。除此之外,您可能需要手动复制较少频繁类别的样本。 - ktdrv