如何解决应用交叉验证时如何获得灵敏度?
让我们考虑数据
set.seed(20)
y <- sample(0:1,100,replace = T)
x <- data.frame(rnorm(100),rexp(100))
我想执行交叉验证和输出敏感性和特异性。我发现我可以为训练函数“度量”提供额外的输入来指定我想要的度量。所以:
# train the model on training set
library(caret)
cross <- train(as.factor(y) ~ .,data = cbind(y,x),metric = 'Sensitivity',trControl = trainControl(method = "cv",number = 5),method = "glm",family = binomial()
)
但是我看到了问题:
The metric "Sensitivity" was not in the result set. Accuracy will be used instead.
是否有任何解决方案如何在交叉验证中使用灵敏度和特异性?
解决方法
由于您使用的是 caret
,因此您可以在此软件包的文档中找到一些答案。它指出 metric
参数是 ...
一个字符串,它指定将使用什么汇总指标来选择 最优模型。默认情况下,可能的值为“RMSE”和“Rsquared” 用于回归,“准确度”和“Kappa”用于分类。如果 使用自定义性能指标(通过 summaryFunction 参数 在 trainControl 中,metric 的值应与以下值之一匹配 论据。如果不是,则会发出警告,第一个指标 使用由 summaryFunction 给出。 (注意:如果给出,这个参数 必须命名。)
因此,默认情况下,“敏感度”指标不存在。但是您可以自己定义这样的指标。一种方法是使用 trainControl
函数传递计算灵敏度的自定义函数。例如,参见 Optimising caret for sensitivity still seems to optimise for ROC。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。