2016-02-03 162 views
0

我使用PROC(以R)与功能multiclass.roc作为线程How to plot ROC curves in multiclass classification?如何使用标签计算多类别AUC分类?

然而,当我申请我的数据指出,有一个错误:

predictor must be numeric or ordered

显然,我的数据标签是无序的,在这种情况下,我如何计算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. 
+1

请提供一些样品数据和代码 –

+0

您的ROC命令在哪里? –

+0

对不起,我也加了 – mamatv

回答

2

无论你想有多少类的标签,一片混乱矩阵将从来没有足以计算AUC。通过选择确定特异性和灵敏度的参数来确定混淆矩阵。它仅代表ROC曲线上的一个点。 ROC包含比混淆矩阵更多的信息。 AUC是ROC曲线的积分,我没有看到没有ROC的情况下如何计算这个积分。

+0

嗨,所以我们假设我使用randomForest作为分类,结果是每个类的概率,而不仅仅是预测。计算AUC是否足够? – mamatv

+0

我想你可以通过使用基尼指数来计算AUC,如果你知道关于分类树的所有信息,这意味着每个内部节点拆分的概率。我相信叶子的最终概率是不够的,但如果有人说服我,否则我会很乐意学习更多,并删除这个答案。 – RHertel

0

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

ROC curve with just one point

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

AUC =(1 + TP - FP)/ 2

其中TP是真正的正确率,FP是假正率(可以用基本的几何来检查)。

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