我正在尝试使用随机森林来预测极不平衡数据集的结果(1的速率只有1%甚至更低)。由于传统的randomForest最小化了整体错误率,而不是特别关注正类,因此传统的randomForest不适用于不平衡数据。因此,我想为少数群体的错误分类(费用敏感学习)付出高昂的代价。
我读了几个来源,我们可以在R上使用classwt
的{{1}}选项,但我不知道如何使用它。我们还有randomForest
功能的其他替代方法吗?
答案 0 :(得分:3)
classwt
使您能够为数据集中的每个类分配先验概率。因此,如果您有classwt = c(0.5, 0.5)
,那么您说在实际运行特定数据集的模型之前,您希望与0的数量大约相同的0。您可以根据需要调整这些参数,以尽量减少误报。在理论上分配成本似乎是一个明智的想法,但实际上,效果并不好。先验概率倾向于比期望的更尖锐地影响算法。不过,你可以玩这个。
另一种解决方案是运行常规随机林,然后进行预测,使用type='prob'
命令中的predict()
选项。例如,对于随机森林rf1
,我们尝试预测数据集data1
的结果,我们可以这样做:
predictions <- predict(rf1, data=data1, type='prob')
然后,您可以选择自己的概率阈值来对数据的观察进行分类。以图形方式查看可能需要的阈值的一种好方法是使用ROCR包,它生成接收器操作符曲线。