No Story, No Ecstasy

[ADP 실기 with R] 8. 성과 분석: Confusion Matrix, ROC Curve, AUROC 본문

Data Science Series

[ADP 실기 with R] 8. 성과 분석: Confusion Matrix, ROC Curve, AUROC

heave_17 2020. 12. 12. 17:21

1. Confusion Matrix

https://images.app.goo.gl/UvJiyJbTkRD6er4r9

  - F1 score: 2 x Precision x Recall / (Precision + Recall) = 2 / (1/Precision + 1/Recall)

    - Accuracy는 imbalanced data에서 부정확한 판단을 하게 될 수 있다

    - Imbalanced data에 대한 성과 분석을 위해 precision과 Recall을 사용하는 것이 F1 score다.

    - F1 score는 두 지표의 조화평균을 사용하여 모델을 평가한다. (조화평균은 두 값이 비슷할 경우 높은 값을 가짐)

  - 잘 정리된 링크: 89douner.tistory.com/174

 

12. Precision, Recall, F1 score (Feat. TP, FP, FN, TN)

안녕하세요 이번글에서는 CNN 모델을 평가하는 또 다른 지표인 F1 score에 대해서 알아보도록 할거에요. 앞서 "5.CNN 성능은 어떻게 평가하게 되나요?"라는 글에서 봤듯이 CNN은 accuracy 기반을 하여 CNN

89douner.tistory.com

  - R 코드 예제

# 0. package import
library(caret)
library(ROCR)

# 1. confusion matrix 그리기
cm = confusionMatrix(predicted_data, reference_data, positive = "1")
cm

# 2. 분할표 그리기
xtabs(~predicted + reference)

# 3. 성과 확인
cm$byClass["Precision"]
cm$byClass["Recall"]
cm$byClass["F1"]

 

2. ROC (Receiver Operating Characteristic) Curve, AU (Area Under) ROC

  - ROC Curve: 가로축을 FPR (1 - Specifity), 세로축을 TPR (Sensitivity)로 두어 시각화한 그래프 (2진 분류에만 적용됨)

  - AUROC: ROC Curve 아래 면적 (0.6: Fail / 0.7: Poor / 0.8: Fair / 0.9: Good / 1.0: Excellent)

https://commons.wikimedia.org/wiki/File:Roc-draft-xkcd-style.svg
https://commons.wikimedia.org/wiki/File:ROC_curves_colors.svg

  - R 코드 예제

# 0. package import
library(caret)
library(ROCR)

# 1. ROC curve 그리기
roc.pred = prediction(as.numeric(predicted), as.numeric(reference))
plot(performance(roc.pred, "tpr", "fpr")
# plot(performance(pred, "prec", "rec")) > precision - recall curve
abline(a = 0, b = 1, lty = 2, col = "black")

# 2. AUROC 구하기
performance(roc.pred, "auc")@y.values