R语言 具有指定假阳性和灵敏度的随机森林

y53ybaqx  于 2023-04-27  发布在  其他
关注(0)|答案(3)|浏览(136)

使用R中的randomForest包,我能够训练一个最小化总体错误率的随机森林。然而,我想做的是训练两个随机森林,一个首先最小化误报率(~ 0),然后是总体错误率,另一个首先最大化灵敏度(~1),然后是总体错误率。问题的另一种构造是:给定一个假阳性率和敏感率,训练两个不同的随机森林,分别满足其中一个率,然后最小化总错误率.有人知道是否有一个r包或python包,或任何其他软件在那里做这件事或如何做这件事吗?谢谢你的帮助。

cwxwcias

cwxwcias1#

这是一个可能值得尝试的变通方法。(抱歉,我没有足够的声誉把它作为评论。)
作为

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

(来自Sensitivity_and_specificity的注解)
如果您重复一些阳性/阴性样本(或增加权重),ER将接近灵敏度/特异性。
因此,如果你想最大限度地提高灵敏度,那么你可以将一些阳性样本采样/复制到数据集中,然后在其上训练你的RF。为了最大限度地提高特异性,你可以对阴性样本做同样的事情。

ttisahbt

ttisahbt2#

你可以在“正则化”参数上做一个网格搜索,以最好地匹配你的目标行为。
感兴趣的参数:

  • 最大深度
  • 特征数
lokaqttq

lokaqttq3#

我相信随机森林会为每个观察值生成一个比例,它代表森林对每个类的投票数。默认情况下,类是基于多数票分配的。如果你想让你的模型偏向于减少误报或漏报,你可以调整预测每个类的阈值。在R中的randomForest中,使用cutoff参数。
我发现这篇文章很有帮助:
https://stats.stackexchange.com/questions/112388/how-to-change-threshold-for-classification-in-r-randomforests

相关问题