brunch

You can make anything
by writing

C.S.Lewis

by 마인즈앤컴퍼니 Dec 15. 2020

[ML101] #5. Confusion matrix

최근 인공지능에 대한 뜨거운 관심을 뒷받침하듯 기업, 나라에서 앞다투어 인공지능 해커톤, 경진대회, AI Challenge를 주체하고 있습니다. 대회에선 우수한 문제 해결 알고리즘을 개발한 팀에게 상금/보상을 부여하죠. 그렇다면 "우수한 알고리즘" 은 어떻게 선정되는 걸까요? 


보통 인공지능 경진대회에선 문제별 평가지표를 함께 공개하며, 평가지표에 따라 높은 예측도를 가진 모델을 우수한 알고리즘으로 선정합니다. 인공지능을 활용하여 해결할 수 있는 문제가 무궁무진하듯 성능 역시 다양한 척도로 평가되어야 합니다. 그렇다면 평가 척도는 어떤 유형이 있으며, 어떻게 계산되는 걸까요?  


모델을 평가하기 위한 평가 척도 (Evaluation Metric)에는 크게 분류(Classification) 척도와 예측(Regression) 평가 척도가 있습니다. 우선 이 게시물에서는 분류 평가척도에서 활용하는 대표 척도인 정확도(Accuracy), 정밀도(Precision), 재현도(Recall), F1 score에 대해 설명드리겠습니다. 




1. Confusion Matrix (혼돈 행렬)


혼돈 행렬이란 단어에서 알 수 있듯, 시스템이 두 개의 클래스를 얼마나 헷갈려하는지를 쉽게 알 수 있는 지표입니다. 즉 지도 학습으로 훈련된 분류 알고리즘의 prediction 성능을 측정하기 위해 예측 value와 실제 value를 시각화할 수 있는 표입니다. 

이 표에서 Actual 은 실제값, Predictive는 예측값을 의미하며, T는 TRUE, F는 FALSE, P는 POSITIVE, N은 NEGATIVE를 의미합니다. TP와 TN은 실제값을 맞게 예측한 부분이며, FP와 FN은 실제값과 다르게 예측한 것을 의미합니다. 


True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)

False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답) 

False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답) 

True Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)



2. 정확도 (Accuracy)


(TP + TN) / (TP+TN+FP+FN)

전체 중 정답 비율을 계산해주는 방법입니다. 정확도의 값이 높을수록 예측 정확도가 높다고 할 수 있습니다. 하지만 정확도 측정은 자칫하면 편향의 함정에 빠질 수 있습니다. 정확도는 전체 예측에서 정답을 맞힌 건수의 비율로, 정답이 Positive든 Negative와 상관없이 맞히기만 하면 된다고 보기 때문입니다.  


예를 들어, 이상징후에 따라 대한민국 4월에 눈이 내릴지 여부에 대한 예측을 한다고 합니다. 이럴 때는 머신러닝을 사용할 필요도 없이 무조건 Negative를 예측한다면 99.9% 정도의 정확도가 나올 것입니다. 4월에 눈이 내릴 일은 거의 없으니까요. 


따라서 정확도를 측정할 땐 데이터가 imbalanced 할 시엔 적합하지 않은 평가지표로, balanced 된 데이터에서 사용하는 것이 적합합니다.


2020 인공지능 온라인 경진대회, 정보통신산업진흥원 주관

실제 인공지능 경진대회에서 나왔던 문제입니다. 흉부 CT 이미지를 기반으로 대상자의 코로나 음성/양성 여부를 분류하는 문제입니다. 음/양성이라는 Binary classification에서 balanced 된 데이터를 활용한 문제로 정확도를 활용하여 예측도를 판별한 것을 볼 수 있습니다. 


3. 재현율  (Recall)


TP/(TP+FN)

앞서 설명드린 정확도 측정 시 나타날 수 있는 상황의 보안법으로, 실제 데이터에 Negative 비율이 너무 높아 희박한 가능성으로 발생할 상황에 대해 제대로 된 분류를 해주는지 평가할 수 있는 지표입니다. 따라서 애초에 True가 발생하는 확률이 낮을 때 사용하면 적합합니다.  


위에서 예시 들었던 대한민국에 4월에 눈이 내릴지 여부에 대한 예측의 경우 recall을 계산하여 실제로 눈이 내린 날짜 중 몇 개나 맞히는지 확인할 수 있습니다. 단순히 accuracy를 계산할 때 False로 예측하였다면 99%가 되겠지만, recall 방식대로 계산하면 True Positive는 계산할 수 없으니 recall이 0이 됩니다. 


그렇다면 정확도를 계산하였을 때 빠졌던 편향과는 반대로, 언제나 True만 답하는 분류기가 있다면 Recall 문제를 잘 맞힐 수 있지 않을까요? 맞습니다. 이런 경우 accuracy는 낮지만, 눈이 내렸던 날만큼은 정확하게 맞추어 recall이 1이 될 것입니다. 따라서 안타깝게도 Recall 측정방법도 완벽하지는 않습니다. 



4. 정밀도 (Precision)

TP/(TP+FP)

Precision은 Positive 예측 중 정답 비율을 계산합니다. YES라고 예측할 때, 얼마나 정확한가?를 측정하여 긍정으로 예측한 것 중 실제 맞춘 비율을 보여줍니다. 


4월에 눈이 내리는 여부에 대해 언제나 True만 답하는 분류기의 결함을 나타내는 지표로 정밀도 (Precision)을 활용하여 측정할 수 있습니다. Precision 지표를 활용한다면 분류기가 눈이 올 것이라고 예측한 날 중에 실제로 눈이 내린 날의 비율을 구합니다. 따라서 언제나 True를 답하는 분류기가 있다면 Recall은 1이 나오지만 Precision은 0에 가까이 나올 것입니다. 


측정 방법을 보시면 아시겠지만, Recall과 Precision은 서로 반대되는 개념의 지표로 서로 트레이드오프의 관계입니다. 이 두 가지 중 어느 것을 우선순위에 둘 지를 염두해주며 한쪽의 수치를 낮추거나 두 수치의 균형점을 찾아주어야 합니다. 만약 경진대회에서 높은 수준의 정밀도를 요구할 시 반드시 최소 재현율의 기준을 물어보아 맞추어야 합니다. Recall과 Precision 두 방법 모두 유용한 지표이지만 두 가지를 모두 고려한 분류 평가 수치도 존재합니다. 이 수치를 F1 Score라고 합니다. 



5. F1 Score

(2*Recall*Precision)/(Precision+Recall) 


F1 score은 Precision과 Recall의 harmonic mean으로 두 가지의 조화 평균을 구하는 방법입니다. 

두 가지 지표를 모두 균형 있게 반영하여 모델의 성능을 확인하기 위함입니다. 


처음 Accuracy에 대해 설명드리면서 균형(Balanced)된 데이터에 적합한 메트릭이라 설명드렸습니다. 이와 반대로 F1 Score는 보통 불균형(Imbalanced) 분류 문제에서 평가척도로 주로 사용됩니다. 데이터가 불균형한 상태에서 Accuracy로 성능을 평가하기엔 데이터 편향성이 너무 크게 나타나 올바르게 성능을 측정하기 힘들게 됩니다. 불균형 상태에서 조화 평균 함으로써 큰 값의 가중치를 낮추고 작은 값에 더 맞추는 과정을 거치며 값의 크기가 상쇄되기 때문에 F1 Score를 평가척도로 사용합니다.


2020 인공지능 온라인 경진대회, 정보통신산업진흥원 주관


그 외 평가지표

민감도(Sensitivity) = TP / actual_yes               실제로 yes일 때, 얼마나 자주 yes를 예측하는지?    

특이도(Specificity) = TN / actual_no                실제로 no일 때, 얼마나 자주 no를 예측하는지?    

발생률(Prevalence) = actual_yes / total             샘플에서 yes 조건이 실제로 얼마나 자주 발생하는지?




지금까지 Confusion Matrix에 대해 살펴보고 데이터의 균형도에 따라서 적합한 측정 Metric을 선정해야 한다는 점과 대표 평가척도 4가지에 대해 배웠습니다. 다음은 모델링할 때 주의해야 할 항목인 Overfitting에 대해 알아보겠습니다. 감사합니다! 


작가의 이전글 [ML101] #4. Gradient descent
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari