如何用标签计算多级分类AUC?

时间:2016-02-03 08:18:46

标签: r classification multinomial auc

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

所指出的那样

但是,当我申请我的数据时,出现错误:

  

预测变量必须为数字或有序

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

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

中计算此混淆矩阵的AUC

UPDATE1:

假设我有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.

2 个答案:

答案 0 :(得分:3)

无论您尝试标记多少个类,混淆矩阵永远不会足以计算AUC。通过选择确定特异性和灵敏度的参数来确定混淆矩阵。它仅代表ROC曲线上的一个点。 ROC包含的信息比混淆矩阵要多得多。 AUC是ROC曲线的积分,我不知道如何在没有ROC的情况下计算这个积分。

答案 1 :(得分:0)

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

相关联

ROC curve with just one point

如果你这样做,产生的AUC是

AUC =(1 + TP-FP)/ 2

其中TP是真阳性率,FP是误差率(您可以使用基本几何体检查)。

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