使用 R 中的 randomForest 包,我能够训练一个随机森林,使整体错误率最小化。然而,我想要做的是训练两个随机森林,一个首先最小化误报率(~0),然后是总体错误率,另一个是首先最大化灵敏度(~1),然后是总体错误率。该问题的另一种构造是:给定误报率和灵敏度率,训练两个分别满足其中一个率的不同随机森林,然后最小化总体错误率。有谁知道是否有 r 包或 python 包,或任何其他执行此操作和/或如何执行此操作的软件?感谢您的帮助。
这是一个可能值得尝试的解决方法。 (抱歉,我没有足够的声誉来发表评论。)
作为
(来自Sensitivity_and_specificity的符号)
如果你复制一些正/负样本(或增加权重),ER 将接近灵敏度/特异性。
所以如果你想最大化灵敏度,那么你可以将一些正样本采样/复制到数据集中,然后在其上训练你的 RF。为了最大限度地提高特异性,您可以对负样本做同样的事情。
您可以对“正则化”参数进行网格搜索,以最好地匹配您的目标行为。
感兴趣的参数:
我相信随机森林会为每个观察产生一个比例,代表森林对每个类别的投票数。默认情况下,类是根据多数票分配的。如果您希望使模型产生偏差以具体减少误报或漏报,您可以调整预测每个类别的阈值。在 R 中的
randomForest
中,使用 cutoff
参数。
我发现这篇文章很有帮助: