[ADP 실기 with R] 8. 성과 분석: Confusion Matrix, ROC Curve, AUROC
1. Confusion Matrix
- 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)
- 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