마이크로소프트/Azure

[Azure] 분류 모델 평가지표 confusion metrics, Recall, sensitivity, Precision, TPR, FPR, Specificity, roc curve, F1 score

Olivia-BlackCherry 2023. 6. 15. 15:20

목차

     

     

    머신러닝에서 분류는 지도학습의 일종이다. 정해진 레이블값이 있고, 설계된 모델에 따라 레이블값을 기준으로 학습을 해서 모델을 만든다. 그리고 이 모델이 잘 만들어진 모델인지 검사해야하는데, 이때 척도로서 중요하게 여겨지는 것이 confusion metrics이다. 

     

     

    1. confusion metrics

    confusion metrics는 한국에서는 혼동 메트리스라고 불린다. 

    처음에는 이해하기가 어렵지만, 여러번 시간차를 두고 개념을 여러번 익혀나간다면 누구라도 결국엔 이해할 수 있다. 

    우선 confusion metrics를 배우고나면, 이것을 왜 하는지에 대한 의문이 든다.

     

    예를 들어보자. 

    인공지능 모델 중 분류에 대한 모델을 만든다. 여러 모델이 있다. 

    어떤 모델은 특정 메일을 보고 이것이 스팸인지 아닌지 분류하는 모델 A이고, 

    어떤 모델은 특정 환자가 어떤 질병이 있는지 없는지를 분류하는 모델 B이다. 

     

    가지고 있는 데이터로 분류 모델 A, B를 만들었다. 

    이 두 모델이 잘 작동하는지 궁금하다. 그래서 score점수도 매기고, 유효성 검사도 한다. 

    그런데 A, B에 투입되는 데이터셋이 다른데

    이 둘에게 같은 기준으로 평가를 내리는 것은 올바를까?

    효율적이라고 볼 수 있을까?

    올바른 판단을 내릴 수 있을까?

     

    그러한 측면에서 confusion metrics를 접근해보자. 

    A모델 

    실제 스팸 -> 스팸(True) 맞다고 예측 (Positive) --->TP

    실제 스팸 -> 스팸X(False) 아니라고 예측 (Negative)--->FN

     

    스팸 X -> 스팸(False) 맞다고 예측 (Positive) ---> FP

    스팸 X -> 스팸X(True) 아니라고 예측 (Nagative) ----> TN

     

    여기서 위의 네 가지 중에서 가장 주목해야하는 값이 무엇일까?

    만약에 내가 당첨메일을 기다리고 있는데, 그게 스팸으로 분류되어 누락된다면...

    그것은 정말 큰 일이 된다!!!!

     

    이 같은 데이터셋에서는 스팸이 아닌데, 스팸이라고 예측하는 경우가 낮아야 한다. 

    즉 FP 값이 낮아야 좋은 모델이 되는 것이다!

     

     

    B모델 

    반대로 B의 모델을 생각해보자. 

    실제 코로나 -> 코로나(True) 맞다고 예측 (Positive) --->TP

    실제 코로나 -> 코로나X(False) 아니라고 예측 (Negative)--->FN

     

    코로나 X -> 코로나(False) 맞다고 예측 (Positive) ---> FP

    코로나 X -> 코로나X(True) 아니라고 예측 (Nagative) ----> TN

     

    이 경우에는 무엇이 가장 예민한 요인이 될까?

    셀제 코로나가 맞는데, 아니라고 예측하는게 치명적일것이다. 

    나는 코로나가 걸린지도 모르고, 도서관도 가고 백화점도 가고, 사우나도 간다면..

    다른 사람들에게 엄청난 피해를 줄 수 있고 

    나의 건강에도 치명적인 영향을 줄 수 있기 때문이다. 

    즉, FN 값이 낮아야 좋은 모델이 되는 것이다. 

     

     

     

    2. 모델 성능평가: Recall, Precision

    이제 confusion metrics를 가지고 model evaluation을 할 수 있는 방법을 이야기해보자. 

    모델 성능평가에서 주로 쓰이는 값은 precision, recall, accuracy, sensitivity 등이 있다. 

     

    A모델의 경우 FP  값이 작은 것이 좋은 모델이라고 했다. 

    그러면 위의 모델에서 FP값이 작아질 수록 값이 커지는 Precision 값을 성능평가의 중요한 척도로 쓸 거다.

    Precision= 정밀도=양성 예측도

     

    B모델의 경우 FN 값이 작을 수록 좋은 모델이라 했다. 

    따라서 FN 값이 작을 수록 값이 1에 수렴하는 Recall 값을 쓰는게 좋겠다. 

    Recall= Sensitivity = TPR(True Positive Rate) = 재현율= 민감도

     

     

     

    3. 모델 성능평가: F1 Score

    또 다른 성능평가 지표로 F1 Score가 있다. 

    Precision과 Recall의 조화평균이다.

    조화평균이라는 것은 역수를 취한 값과 관련되었다. 

    이것 같은 경우에는 Precision과 Recall 값을 모두 고려해야 할 때 유용하다. 

     

     

     

    4. 모델 성능 평가: Specificity

    Precision, Recall 처럼 confusion metrics를 이용한 평가 지표 중의 하나로 

    실제 false인 데이터 중에서 모델이 true라고 예측한 비율을 specificity라고 한다. 

    specificity =  FPR = 1- 특이성= 1- TNR

     

     

    5. 모델 성능 평가: ROC curve

    ROC curve 곡선과 AOU score는 이진 분류의 성능 측정에서 자주 쓰인다.

    ROC curve는 FPR이 변할 때, TPR이 어떻게 변하는지 나타내는 곡선이다.

    다시 풀어 설명하자면, 

    positive라고 예측한 결과가 틀린 -> 즉 specificity가 변할 때 

    positive라고 예측한 결과가 맞은 -> 즉 recall이 어떻게 변하느냐를

    2차 평면에 그래프로 나타낸 것이다. 

    ROC 곡선이 가운데 직선에 가까울수록 성능이 떨어지고, 멀어질수록 성능이 뛰어나다. 

    ROC 곡선 자체는 FPR과 TPR의 변화값을 보는 데 이용한다. 

     

     

    6. 모델 성능 평가: AUC 값

    ROC 곡선 면적에 기반하는데, ROC 곡선 밑의 면적을 구한다. 

    최대값 1이 좋은 모델이다. 

     

    인공지능 교육, 인공지능 강의, 데이터 교육, 초중등 코딩교육