具有指定误报和灵敏度的随机森林

问题描述 投票:0回答:3

使用 R 中的 randomForest 包,我能够训练一个随机森林,使整体错误率最小化。然而,我想要做的是训练两个随机森林,一个首先最小化误报率(~0),然后是总体错误率,另一个是首先最大化灵敏度(~1),然后是总体错误率。该问题的另一种构造是:给定误报率和灵敏度率,训练两个分别满足其中一个率的不同随机森林,然后最小化总体错误率。有谁知道是否有 r 包或 python 包,或任何其他执行此操作和/或如何执行此操作的软件?感谢您的帮助。

python r machine-learning random-forest
3个回答
0
投票

这是一个可能值得尝试的解决方法。 (抱歉,我没有足够的声誉来发表评论。)

作为

  • 灵敏度 = TP/(TP + FN)
  • 特异性 = TN/(TN + FP)
  • ER = (TP + TN)/(TP + FN + TN + FP)

(来自Sensitivity_and_specificity的符号)

如果你复制一些正/负样本(或增加权重),ER 将接近灵敏度/特异性。

所以如果你想最大化灵敏度,那么你可以将一些正样本采样/复制到数据集中,然后在其上训练你的 RF。为了最大限度地提高特异性,您可以对负样本做同样的事情。


0
投票

您可以对“正则化”参数进行网格搜索,以最好地匹配您的目标行为。

感兴趣的参数:

  • 最大深度
  • 功能数量

0
投票

我相信随机森林会为每个观察产生一个比例,代表森林对每个类别的投票数。默认情况下,类是根据多数票分配的。如果您希望使模型产生偏差以具体减少误报或漏报,您可以调整预测每个类别的阈值。在 R 中的

randomForest
中,使用
cutoff
参数。

我发现这篇文章很有帮助:

https://stats.stackexchange.com/questions/112388/how-to-change-threshold-for-classification-in-r-randomforests

© www.soinside.com 2019 - 2024. All rights reserved.