使用R中的randomForest包,我能够训练一个最小化总体错误率的随机森林。然而,我想做的是训练两个随机森林,一个首先最小化误报率(~ 0),然后是总体错误率,另一个首先最大化灵敏度(~1),然后是总体错误率。问题的另一种构造是:给定一个假阳性率和敏感率,训练两个不同的随机森林,分别满足其中一个率,然后最小化总错误率.有人知道是否有一个r包或python包,或任何其他软件在那里做这件事或如何做这件事吗?谢谢你的帮助。
cwxwcias1#
这是一个可能值得尝试的变通方法。(抱歉,我没有足够的声誉把它作为评论。)作为
(来自Sensitivity_and_specificity的注解)如果您重复一些阳性/阴性样本(或增加权重),ER将接近灵敏度/特异性。因此,如果你想最大限度地提高灵敏度,那么你可以将一些阳性样本采样/复制到数据集中,然后在其上训练你的RF。为了最大限度地提高特异性,你可以对阴性样本做同样的事情。
ttisahbt2#
你可以在“正则化”参数上做一个网格搜索,以最好地匹配你的目标行为。感兴趣的参数:
lokaqttq3#
我相信随机森林会为每个观察值生成一个比例,它代表森林对每个类的投票数。默认情况下,类是基于多数票分配的。如果你想让你的模型偏向于减少误报或漏报,你可以调整预测每个类的阈值。在R中的randomForest中,使用cutoff参数。我发现这篇文章很有帮助:https://stats.stackexchange.com/questions/112388/how-to-change-threshold-for-classification-in-r-randomforests
randomForest
cutoff
3条答案
按热度按时间cwxwcias1#
这是一个可能值得尝试的变通方法。(抱歉,我没有足够的声誉把它作为评论。)
作为
(来自Sensitivity_and_specificity的注解)
如果您重复一些阳性/阴性样本(或增加权重),ER将接近灵敏度/特异性。
因此,如果你想最大限度地提高灵敏度,那么你可以将一些阳性样本采样/复制到数据集中,然后在其上训练你的RF。为了最大限度地提高特异性,你可以对阴性样本做同样的事情。
ttisahbt2#
你可以在“正则化”参数上做一个网格搜索,以最好地匹配你的目标行为。
感兴趣的参数:
lokaqttq3#
我相信随机森林会为每个观察值生成一个比例,它代表森林对每个类的投票数。默认情况下,类是基于多数票分配的。如果你想让你的模型偏向于减少误报或漏报,你可以调整预测每个类的阈值。在R中的
randomForest
中,使用cutoff
参数。我发现这篇文章很有帮助:
https://stats.stackexchange.com/questions/112388/how-to-change-threshold-for-classification-in-r-randomforests