R 中的 3 类 AUC 计算(pROC 包)

Posted

技术标签:

【中文标题】R 中的 3 类 AUC 计算(pROC 包)【英文标题】:3-class AUC calculation in R (pROC package) 【发布时间】:2013-12-29 22:22:14 【问题描述】:

我在 R 中遇到了一个 3-class ROC 分析的问题,得到了一个非常烦人的结果(见 here)。 现在我尝试使用不同的方法来解决它。数据为iris,分类器为多项逻辑回归,位于nnet 包中。代码如下:

# iris data (3-class ROC)
library(nnet)
library(pROC) # should be installed first: install.packages('pROC')
data(iris)
# 3-class logistic regression
model = multinom(Species~., data = iris, trace = F)
# confusion matrix (z1) & accuracy (E1)
z1 = table(iris[, 5], predict(model, data = iris))
E1 = sum(diag(z1)) / sum(z1)
z1;E1
#             setosa versicolor virginica
#  setosa         50          0         0
#  versicolor      0         49         1
#  virginica       0          1        49
#[1] 0.9866667

# prediction model (still training data set)
pre = predict(model, data = iris, type='probs')
# AUC measure
modelroc = mean(
    c(as.numeric(multiclass.roc(iris$Species, pre[,1])$auc),
        as.numeric(multiclass.roc(iris$Species, pre[,2])$auc),
        as.numeric(multiclass.roc(iris$Species, pre[,3])$auc)
    )
)
modelroc
## RESULT ##
# [1] 0.9803556

我的问题是:这是使用pROC 包的正确方法吗? 非常感谢!!! 一些相关参考:pROC包:http://www.inside-r.org/packages/cran/pROC/docs/multiclass.rocHand & Till(2001)原论文:http://link.springer.com/article/10.1023%2FA%3A1010920819831

【问题讨论】:

【参考方案1】:

您正在取三个多类 AUC 的平均值,它们本身就是三个 ROC 曲线的 AUC 的平均值。这就是 9 AUC 的平均值。这可能是也可能不是您问题的正确答案,具体取决于您的实际问题,但由于您从未问过,因此很难回答。我只能说,这不是你提到的 Hand & Till(2001) 论文中描述的内容。

【讨论】:

【参考方案2】:

我知道这个问题比较老,但我有一个解决方案:

# Starting validation code
library(HandTill2001)

auc(multcap(
  response = iris$Species,
  predicted = as.matrix(pre)
))

不幸的是,这给了我 0.9990667 的 AUC,因为我没有使用 pROC 包,所以并不真正支持绘图。但我也不确定应该如何使用包 pROC。

【讨论】:

以上是关于R 中的 3 类 AUC 计算(pROC 包)的主要内容,如果未能解决你的问题,请参考以下文章

R语言基于h2o包构建二分类模型:使用h2o.gbm构建梯度提升机模型GBM使用h2o.auc计算模型的AUC值

R语言基于h2o包构建二分类模型:使用h2o.randomForest构建随机森林模型使用h2o.auc计算模型的AUC值

R语言基于h2o包构建二分类模型:使用h2o.glm构建正则化的逻辑回归模型使用h2o.auc计算模型的AUC值

偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度敏感度角度

R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线

R语言使用timeROC包计算存在竞争风险情况下的生存资料多时间AUC值R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线