AUC-ROCは0〜0.5の間ですか?


16

AUC-ROC値は0〜0.5の間ですか?モデルは0〜0.5の値を出力しますか?

回答:


19

完全な予測子はAUC-ROCスコアが1であり、ランダムな推測を行う予測子はAUC-ROCスコアが0.5です。

スコアが0の場合、分類子が完全に間違っていることを意味し、100%の確率で誤った選択を予測しています。この分類子の予測を反対の選択に変更した場合、完全に予測でき、AUC-ROCスコアは1になります。

そのため、実際には、0〜0.5のAUC-ROCスコアを取得した場合、分類子ターゲットにラベルを付ける方法に誤りがあるか、トレーニングアルゴリズムに問題がある可能性があります。0.2のスコアを取得した場合、これはデータに0.8のスコアを取得するのに十分な情報が含まれているが、何らかの問題が発生したことを示しています。


この答えは、たとえば、トレーニングデータでは0.8のAUCを、ホールドアウトデータでは0.35のAUCを取得するなど、モデルがオーバーフィットする可能性をスキップすると思います。
Sycoraxは、Reinstate Monicaを

1
@Sycorax:うーん、過剰適合は明らかにAUCを偶然のレベルに追いやることができます(実際のモデルから遠く離れていて、予測が単なるゴミである場合) ?
ルーベンファンベルゲン

1
あるセットのランキングが正しいよりも後方に近い場合、AUCは0.5未満になります。他のコンテキストでの過剰適合と違いはありません。
シコラックスは、モニカを

14

分析しているシステムが偶然のレベルを下回った場合、彼らはできます。単純に、常にAUCとは反対の答えをさせることで、AUCが0の分類子を簡単に構築できます。

もちろん実際にはいくつかのデータで分類器をトレーニングするため、通常、0.5よりも非常に小さい値は、アルゴリズム、データラベル、またはトレーニング/テストデータの選択のエラーを示します。たとえば、列車データのクラスラベルを誤って切り替えた場合、予想されるAUCは1から「真の」AUCを引いたものになります(正しいラベルが与えられます)。また、分類するパターンが体系的に異なるようにデータをトレインパーティションとテストパーティションに分割した場合、AUCは0.5未満になる可能性があります。これは、たとえば、1つのクラスがトレインとテストセットでより一般的だった場合、または各セットのパターンが修正しなかった体系的に異なるインターセプトを持っている場合に発生する可能性があります。

最後に、分類器は長期的には偶然のレベルにあるが、テストサンプルで "不運"になった(つまり、成功よりもエラーが少し多い)ため、ランダムに発生する可能性もあります。ただし、その場合、値は依然として0.5に比較的近いはずです(どれだけ近いかは、データポイントの数によって異なります)。


0

申し訳ありませんが、これらの答えは危険なほど間違っています。いいえ、データを見た後にAUCを反転させることはできません。あなたが株を買っていて、いつも間違った株を買ったと想像してみてください。しかし、あなたは自分に言いました、それは大丈夫です。

問題は、結果に偏りがあり、一貫して平均以下のパフォーマンスを得る方法は、多くの場合、非自明な理由があることです。AUCをひっくり返すと、データに信号がまったくなかったとしても、あなたは世界一のモデラーだと思うかもしれません。

シミュレーションの例を次に示します。予測子は、ターゲットと関係のない単なるランダム変数であることに注意してください。また、平均AUCは約0.3であることに注意してください。

library(MLmetrics)
aucs <- list()
for (sim in seq_len(100)){
  n <- 100
  df <- data.frame(x=rnorm(n),
               y=c(rep(0, n/2), rep(1, n/2)))

  predictions <- list()
  for(i in seq_len(n)){
    train <- df[-i,]
    test <- df[i,]

    glm_fit <- glm(y ~ x, family = 'binomial', data = train)
    predictions[[i]] <- predict(glm_fit, newdata = test, type = 'response')
  }
  predictions <- unlist(predictions)
  aucs[[sim]] <- MLmetrics::AUC(predictions, df$y)
}
aucs <- unlist(aucs)
plot(aucs); abline(h=mean(aucs), col='red')

結果

ここに画像の説明を入力してください

もちろん、データはランダムであるため、分類器がデータから何かを学習する方法はありません。LOOCVが偏った、不均衡なトレーニングセットを作成するため、ベローズチャンスAUCがあります。ただし、LOOCVを使用しない場合、安全であるという意味ではありません。このストーリーのポイントは、データに何もない場合でも結果が平均以下のパフォーマンスになる可能性がある方法がたくさんあるということです。したがって、何をしているのかわからない限り、予測を反転しないでください。そして、あなたは平均以下のパフォーマンスを持っているので、あなたは何をしているのかわかりません:)

この問題に触れた論文はいくつかありますが、他の論文も同様でした。

Jamalabadi et al 2016 https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.23140

Snoek et al 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.