我有一个适合 lme4 pkg 中的 lmer() 函数的 glm。我使用 ROCR pkg 计算 ROC 下的面积(我的最佳模型为 0.899)并指定最佳截止点。我的截止点从 0.47(如果我最小化灵敏度和特异性的总和)到 0.52(如果我最大化准确性)略有不同。两种截止规格的代码如下供参考。
#Minimizes the sum of sensitivity and specificity
> fpr <- prefClass@x.values[[1]]
> tpr <- prefClass@y.values[[1]]
> sum <- tpr + (1-fpr)
> index <- which.max(sum)
> cutoff <- prefClass@alpha.values[[1]][[index]]
> cutoff
[1] 0.4706331
#This code was used to maximize accuracy
> BMacc <- performance(predClass, measure="acc")
> MaxAcc <- max(BMacc@y.values[[1]])
> UnlistXacc <- unlist(BMacc@x.values[[1]])
> CutoffAcc <- UnlistXacc[which.max(BMacc@y.values[[1]])]
> CutoffAcc
112
0.519942
我想看看如何选择一个切点而不是其他效果预测误差,使用 k 折交叉验证来评估每个切点的准确性。但是,查看 cv.glm {boot} 和 CVbinary {DAAG} 函数既没有参数来指定切点值,也没有讨论正在使用什么切点。
如果我了解交叉验证的理论/方法,则需要一个指定的切点来将概率(模型拟合值范围从 0 到 1)转换为离散的 0 和 1。将模型 0 和 1 与观察到的 0 和 1 进行比较,然后提供对模型预测准确性的评估。
由于切割点通常设置为 0.5,这是否是上述功能的默认默认值?
用户如何指定所需的切点来评估模型预测的准确性?
我查看了许多来源,只找到了上面的功能。由于这是一种常见的需求,我要么忽略了某些东西,要么错误地理解了 k-fold CV。
任何想法将不胜感激!