【问题标题】:How to calculate multi class classification AUC with labels?如何计算带有标签的多类分类 AUC?
【发布时间】:2016-05-12 08:08:11
【问题描述】:

我正在使用带有函数 multiclass.roc 的 pROC(在 R 中),正如线程 How to plot ROC curves 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.

【问题讨论】:

  • 请提供一些示例数据和代码
  • 你的 ROC 命令在哪里。
  • 对不起,我也加了

标签: r classification multinomial auc


【解决方案1】:

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

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

AUC = (1 + TP - FP)/2

其中 TP 是 True Positive Rate,FP 是 False Positive Rate(您可以使用基本几何体检查这一点)。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 嗨,假设我使用 randomForest 作为分类,结果是每个类的概率,而不仅仅是预测。计算AUC就够了吗?
    • 如果您了解分类树的所有信息,我认为您可以使用基尼指数计算 AUC,这意味着每个内部节点拆分的概率。我相信叶子的最终概率是不够的,但如果有人说服我,我很乐意了解更多信息并删除这个答案。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2020-09-25
    • 2021-10-07
    • 2018-11-14
    • 2016-08-05
    • 2021-07-19
    • 2018-06-11
    • 2021-04-19
    相关资源
    最近更新 更多