2

R で 3 クラス ROC 分析の問題に遭遇し、非常に厄介な結果が得られました (こちらを参照)。今、私はそれを解決するために別の方法を使用しようとしています。データはあり、分類子はパッケージ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.roc
Hand & Till(2001)元の論文: http://link.springer.com/article/10.1023%2FA%3A1010920819831

4

2 に答える 2

2

この質問が比較的古いことは理解していますが、解決策があります。

# Starting validation code
library(HandTill2001)

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

残念ながら、pROC パッケージを使用していないため、プロットは実際にはサポートされていません。しかし、パッケージ pROC をどのように使用すればよいかもわかりません。

于 2016-01-08T19:15:53.097 に答える
1

3 つのマルチクラス AUC の平均をとっています。これは、それ自体が 3 つの ROC 曲線の AUC の平均です。つまり、これは 9 AUC の平均のようなものです。これは、実際の質問によっては、問題に対する正しい答えである場合とそうでない場合がありますが、尋ねたことがないため、答えるのは非常に困難です。私が言えるのは、それはあなたが言及したHand & Till(2001)の論文に記載されているものではないということだけです。

于 2013-12-29T10:16:40.107 に答える