如何解决ROC曲线倒置,AUC小和截止的问题?

时间:2019-04-30 02:13:03

标签: r machine-learning svm roc auc

我正在从我的SVM模型构建此ROC曲线,但该曲线是倒置的。同样,尽管我的SVM预测具有很高的准确度(〜93%),但我的ROC曲线表明,曲线下的面积仅为2.7%。而且,它告诉我最佳截止值是无穷大,这不是我从模型拟合中得出的期望值。

我已经使用内置的SVM函数对我的SVM模型进行了拟合,就像下面显示的代码一样,然后我使用了函数Forecast()进行了预测。然后,我计算了Forecast()并计算了性能(),截止值和AUC(下面显示的所有代码)

svm.fit <-  svm(label ~ NDAI + SD + CORR, data = trainSet, scale = FALSE, kernel = "radial", cost = 2, probability=TRUE)
svm.pred <- predict(svm.fit, testSet, probability=TRUE)
mean(svm.pred== testSet$label)*100
prediction.svm <- prediction(attr(svm.pred, "probabilities")[,2], testSet$label)
eval.svm <- performance(prediction.svm, "acc")
roc.svm <- performance(prediction.svm, "tpr", "fpr")

#identify best values and cutoff
max_index.svm <- which.max(slot(eval.svm, "y.values")[[1]])
max.acc_svm <- (slot(eval.svm, "y.values")[[1]])[max_index.svm]
opt.cutoff_svm <- (slot(eval.svm, "x.values")[[1]])[max_index.svm][[1]]
#AUC
auc.svm <- performance(prediction.svm, "auc")
auc.svm <- unlist(slot(auc.svm, "y.values"))
auc.svm <- round(auc.svm, 4)

plot(roc.svm,colorize=TRUE)
points(0.072, 0.93, pch= 20)
legend(.6,.2, auc.svm, title = "AUC", cex = 0.8)
legend(.8,.2, round(opt.cutoff_svm,4), title = "cutoff", cex = 0.8)

我希望输出的AUC接近1,并且有一个接近于0.5的小截止点,曲线的AUC接近1。有人遇到过类似的问题吗?如果是,我应该如何修正我的代码?

0 个答案:

没有答案