분류 모델 성능 평가 지표
Linear 모델에 대해서는 R-Square, MSE 등 으로 모델의 성능을 평가한다.
그렇다면 분류 모델에 대해서는 모델의 성능을 어떻게 평가할 수 있을까?
여러가지 방법이 있지만, 대표적으로 사용하는 정확도(Accuracy), 정밀도(Precision), 재현도(Recall), F1 Score 에 대해 알아보고자 한다.
1. Confusion Matrix (오차행렬)
위 네가지 지표를 설명하기 전에 Confusion Matrix를 먼저 설명하고자 한다.
Confusion Matrix란? Training 을 통한 Prediction 성능을 측정하기 위해 예측 value와 실제 value를 비교하기 위한 표
<Confusion Matrix>
여기서 ACTUAL VALUES는 실제값, PREDICTIVE VALUES는 예측값을 의미하며,
T 는 TRUE, F는 FALSE, P는 POSITIVE, N은 NEGATIVE 를 의미한다.
즉, TP와 TN는 실제값을 맞게 예측한 부분이며, FP와 FN은 실제값과 다르게 예측한 부분을 의미한다.
2. Accuracy (정확도)
Accuracy(정확도)란? 전체 중 모델이 바르게 분류한 비율
<정확도>
정확도는 모델이 바르게 분류한 부분의 비율로, Confusion Matrix에서 대각선 부분이다.
* Accuracy (정확도)
$$ 정확도 = \frac{TP+TN}{TP+FN+FP+TN} $$
3. Precision (정밀도)
Precision(정밀도)란? 모델이 Positive라 분류한 것 중 실제값이 Positive인 비율
<정밀도>
정밀도는 Confusion Matrix에서 열방향에 해당하는 부분이다.
* Precision (정밀도)
$$ 정밀도 = \frac{TP}{TP+FP} $$
4. Recall (재현도)
Recall(재현도)란? 실제값이 Positive인 것 중 모델이 Positive라 분류한 비율
<재현도>
재현도는 Confusion Matrix에서 행방향에 해당하는 부분이다.
* Recall (재현도)
$$ 재현도 = \frac{TP}{TP+FN} $$
5. F1 Score
F1 Score란? Precision과 Recall의 조화평균
<F1-Score>
* F1-Score
$$ F1-Score = \frac{2*Presicion*Recall}{Precision+Recall} $$
5_1. F1 Score를 쓰는 이유?
Accuracy가 아닌 F1 Score를 쓰는 경우는 데이터가 불균형할 때 이다.
예를 들어, 다음과 같은 4가지 Class로 이루어져 있으며, A Class에 치우쳐진 불균형한 데이터를 분류하는 두 가지 분류 모델이 있다고 가정하자. A(200) B(10) C(10) D(10)
Model1은 A Class에 대한 예측률은 좀 떨어지지만, B,C,D 에 대해 전반적으로 잘 맞추는 모델이고,
Model2는 오직 A Class만 잘 맞추는 모델이다. 즉, Model2는 거의 모든 예측을 A라 한다고 봐도 무방한 모델이다.
이 때, 각 모델에 대한 정확도를 구해보면
Model1 : (100+9+8+9)/230 = 0.547
Model2 : (198+1+1+1)/230 = 0.87 로 Model2가 Model1에 비해 훨씬 높은 값을 가지고 있다.
즉, 정확도에 의하면 A Class로만 예측하는 Model2가 Model1에 비해 더 잘 맞춘다고 판단할 수 있다.
반대로, F1 Score를 구하면
Model1 : (2∗0.492∗0.775)/(0.492+0.775) = 0.601
Model2 : (2∗0.369∗0.323)/(0.369+0.323) = 0.344 로 Model1의 성능이 더 높을 것을 볼 수 있다.
즉, Data가 Imbalanced 할 때, 정확도가 아닌 F1 Score를 사용한다.
* 다중 Class 에서 F1 Score 구하는 방법
각 Class에 대한 Precision과 Recall을 구한 후, 평균값으로 F1 Score 계산
* F Score
$$ F_\beta = \frac{(1+\beta^2)(Precision*Recall)}{\beta^2*Precision*Recall}$$
* \(\beta\) 가 1 일 때 F1-Score
'AI > 기초통계' 카테고리의 다른 글
[기초통계] 모평균 비교 :: 짝비교 :: 독립이 아닌 모집단에서 :: t.test() in r (paired = T) (0) | 2019.12.15 |
---|---|
[기초통계] 모평균 비교 :: 독립인 모집단에서 표본의 크기가 작을 때 (2) :: t.test() in R (0) | 2019.11.27 |
[기초통계] 모평균 비교 :: 독립인 모집단에서 표본의 크기가 작을 때 (1) :: t.test() in R (0) | 2019.11.26 |
[기초통계] 모평균 비교 :: 독립인 두 모집단에서 표본의 크기가 클 때 비교 :: R에서 확인하기 :: t.test() in R (0) | 2019.11.25 |
[기초통계] 모평균 비교 :: 두 모집단이 독립일때와 독립이 아닐 때 (0) | 2019.11.24 |