如何解决有没有办法改变插入符号R中模型内分类的阈值?
我想更改模型的阈值,并且遇到交叉验证线程How to change threshold for classification in R randomForests?
中的帖子如果更改阈值后创建模型,则意味着我将不得不再次调整测试数据或新数据的内容。
R&caret
中是否有一种方法可以更改模型中的阈值,以便我可以对新数据或测试数据运行具有相同阈值的相同模型?
解决方法
在概率分类器中,例如随机森林,在模型拟合期间没有任何阈值涉及,也没有与拟合模型相关联的阈值;因此,实际上没有任何更改。正如CV线程Reduce Classification Probability Threshold中正确指出的那样:
选择一个阈值,将新的观察值分类为1 vs. 0,这不再是统计的一部分。它是决定组件的一部分。
引用我在Change threshold value for Random Forest classifier中的回答:
在模型训练期间根本没有没有阈值;随机森林是概率分类器,它仅输出类概率。确实需要阈值的“硬”类(即0/1)在模型训练的任何阶段都不会生成或使用-仅在预测期间,甚至只有在我们确实需要硬分类的情况下(并非总是如此)案子)。有关更多详细信息,请参见Predict classes or class probabilities?。
因此,如果您从拟合模型中生成预测,请使用参数rf
说type = "prob"
,如您链接到的CV线程所示:
pred <- predict(rf,mydata,type = "prob")
这些预测将是[0,1]
中的概率值,而不是硬类0/1
中的概率值。从这里,您可以自由选择阈值,如答案所示:
thresh <- 0.6 # any desired value in [0,1]
class_pred <- c()
class_pred[pred <= thresh] <- 0
class_pred[pred > thresh] <- 1
或者当然可以使用不同的阈值进行实验,而无需更改模型本身中的任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。