AI/기초통계

분류 모델 성능 평가 지표 - Confusion Matrix란? :: 정확도(Accuracy), 정밀도(Precision), 재현도(Recall), F1 Score

슈퍼짱짱 2020. 4. 7. 10:24
반응형

분류 모델 성능 평가 지표


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


반응형