【发布时间】:2019-12-20 14:33:02
【问题描述】:
我想在使用 caret 包进行交叉验证后从我的二元分类器中获取曲线下面积 (AUC)。
对于标准混淆矩阵,我在caret::confusionMatrix 中使用average 参数。
例子:
controls = trainControl(method="repeatedcv"
, number=5
, repeats=10
, selectionFunction = "oneSE"
, classProbs = T
, summaryFunction = twoClassSummary
)
svm_5k = train(veracity ~ .
, data = training_data
, method = "svmLinear"
, trControl = controls
, verbose = FALSE
, metric = 'ROC'
)
然后混淆矩阵用于准确率、F1等
confmat = caret::confusionMatrix(svm_5k
, 'average')
现在我正在与 AUC 斗争:我现在正在检索类概率并将它们作为列附加到测试数据中,例如 testing_data$prob = predict(svm_5k, testing_data, type='prob')[,2]
如果我然后使用pROC 包来获取AUC,就像
roc(response = testing_data$veracity, predictor = testing_data$prob) ...
...我没有使用controls 中指出的交叉验证,而只是分类器的快照。
有什么方法可以使用 CV 的平均概率来获得 AUC?
【问题讨论】: