2

我正在使用带有函数 multiclass.roc 的 pROC(在 R 中),正如线程How to plot ROC curve in multiclass classification?

但是,当我应用到我的数据时,出现了错误:

预测器必须是数字或有序的

显然我的数据标签是无序的,在这种情况下,我该如何计算 AUC?

P/S:这个想法是,我有一个混淆矩阵作为多类分类器的结果。如何在 R 中计算此混淆矩阵的 AUC?

更新1:

假设我有 4 个没有顺序的 A、B、C、D 类(即,并不意味着 A > B 或 B > A)

正确的值:

A A A B B C D A B C D A B C ...

预测值:

A B A B B B C D ...

我应该如何计算这些数据的 AUC?

更新 2

生成示例数据的代码:

x = c(rep("A",50),rep("B",50),rep("C",50),rep("D",50))
x = as.factor(x)
x_true = sample(x)
x_predict = sample (x)

然后我尝试了

library (pROC)
multiclass.roc(x_true, x_predict)
Error in roc.default(response, predictor, levels = X, percent = percent,  : 
  Predictor must be numeric or ordered.
4

2 回答 2

3

无论您尝试标记多少类,混淆矩阵都不足以计算 AUC。混淆矩阵是通过选择确定特异性和灵敏度的参数来确定的。它只代表 ROC 曲线上的一个点。ROC 包含比混淆矩阵更多的信息。AUC 是 ROC 曲线的积分,如果没有 ROC,我看不出如何计算这个积分。

于 2016-02-03T09:01:34.567 回答
-1

请注意,有一种方法可以近似只有曲线的一个点的 AUC。它基于考虑点与点 (0,0) 和 (1,1) 相连:

ROC曲线只有一点

如果你这样做,得到的 AUC 是

AUC = (1 + TP - FP)/2

其中 TP 是真阳性率,FP 是假阳性率(您可以使用基本几何检查这一点)。

当然,如何计算多类 AUC 是另一回事。

于 2017-06-21T09:41:44.450 回答