ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Confusion Matrix의 손쉬운 이해
    Statistics 2020. 4. 12. 17:23

    안녕하세요. 이번엔 봐도봐도 항상 헷갈릴 수 있는 Confusion Matrix 부터 AUC, ROC Curve에 대해서 설명해드리고자 합니다.

     

    저희는 어떤 미지의 값을 예측할 때 예측에 대한 성능을 다양한 척도(Metric)로 평가하고 있습니다.

    간략하게 소개하자면,

    Regression

    • RMSE
    • MSE
    • logloss

    Classification

    • Accuracy
    • f1-score

    이러한 방법들이 있습니다.

     

    다시 본론으로 돌아와서 지금부터 설명해드릴 부분은 분류문제에서 주로 사용하고 있는

    • Accuracy(정확도)
    • Sensitivity(민감도, 재현도)
    • Precision(정밀도)
    • Specificity(특이도)
    • AUC
    • F1-score

    위의 평가척도들을 설명해보도록 하겠습니다.

     

    1. Confusion Matrix

     

    먼저 다음의 그림을 보겠습니다.

    보시는 그림은 Confusion Matrix라고 불리는 행렬입니다. 저희는 간단해보이면서 간단하지 않은 이 혼돈행렬을 통해서 여러 지표들을 검증해볼 것입니다.

    먼저 표 내부에 있는 단어들에 대한 설명을 드리겠습니다.(설명의 편의성을 위해서 환자다 / 환자가 아니다 로 설명드리겠습니다.)

    • Actual(Positive) : 실제 환자
    • Actual(Negative) : 실제 환자가 아님
    • Predict(Positive) : 실제 환자로 예측
    • Predict(Negative) : 환자가 아닌 것으로 예측

    이번엔 각각의 교차된 지표에 대해서 설명드리겠습니다. 이 부분은 앞의 단어를 성공/실패 뒤의 단어를 긍정예측/부정예측 이라고 생각하시면 생각하시기 쉬울겁니다!

    • TP(True Positive) : 긍정예측을 성공 즉, 환자라고 예측해서 실제 환자임을 맞춤
    • TN(True Negative) : 부정예측을 성공 즉, 비환자라고 예측하여 실제 비환자임을 맞춤
    • FP(False Positive) : 긍정예측을 실패 즉, 환자라고 예측했지만 비환자임
    • FN(False Negative) : 부정예측을 실패 즉, 비환자라고 예측했지만 실제 환자임

    좀 더 직관적으로 다가오시지 않나요? 이렇게 생각하는 훈련은 꾸준히 필요할 것입니다!

     

    그럼 다음으로 넘어가 여러 Metric에 대하여 탐색해보겠습니다.

     

    2. Metric

    지표의 종류는 위에서 언급한 것처럼 꽤 많으니 지금부터는 잘 따라오셔야 합니다.

     

    2-1. Accuracy

    Accuracy는 정확도로 전체 예측한 것 중에 올바른 예측을 얼마나 했는지를 지표로 구하는 것입니다.

    따라서 수식으로 나타내면

    이와 같이 Accuracy값을 구할 수 있고 Accuracy값이 높을수록 예측 정확도가 높다고 할 수 있습니다. 

    여기서 좀 더 파생하여 전체 예측중에 잘 예측한 지표를 구했다면 (1 - 잘 예측한 것) = 잘 못 예측한 것 인 것을 알 수 있습니다.

     

    그래서 Error Rate를 도출할 수 있는데요 에러율을 도출하는 공식은

     

    Error Rate = 1 - Accuracy로 나타낼 수 있습니다.

     

    하지만 Accuracy는 편향의 함정에 빠질 수 있습니다. 무엇을 뜻하냐면 만일 단일 모델이 실제로 긍정인 것만 예측을 잘하고 부정인 것은 예측을 잘하지 못한다면 좋은 모델이라고 할 수 있을까요?

    단편적으로 Accuracy만 봤을 때 좋은 값이 도출될 수 있지만 실제로 부정인 것은 예측을 잘 못하기 때문에 좋은 모델이라고 선언하기는 힘들 것 같습니다.

    이러한 결과가 도출되는 것은 데이터가 불균형(imbalanced)하기 때문에 벌어지는 상황인데요. 이렇게 데이터가 불균형하다면 측정할 수 있는 방법은 없을까요?

    있습니다. 바로 F1 Score로 측정하는 것인데요. 이따 밑에서 확인해보겠습니다. 여러분들이 기억하실 내용은 Accuracy를 평가 척도로 사용한다면 균형(Balanced) 데이터에서 사용하시길 권유드립니다.

    2-2. Sensitivity

    Sensitivity는 민감도(Recall)로 True Positive Rate로 실제 Positive를 얼마나 잘 예측했는지를 나타내는 지표입니다. 그리고 보통 행방향으로 Input class에 대하여 분류기가 어떻게 class로 예측했는지를 나타냅니다.

    그래서 수식을 살펴보면

    실제 환자에 대해서 환자라고 예측하고, 환자가 아니다라고 예측한 것에 대한 실제 환자를 예측한 비율을 나타냅니다.

    정확도랑 마찬가지로 실제 환자를 환자로 예측하는 비율로 민감도가 높을수록 좋은 척도라고 할 수 있습니다.

    민감도는 후에 AUC를 구할 때 중요한 척도로써 사용되니 꼭 기억해주시길 바랍니다.

     

     

    2-3. Precision

    Precision은 정밀도로 긍정으로 예측한 것 중 실제로 맞춘 비율을 보여줍니다. 즉, 환자가 맞다고 예측하여 실제로 환자인 경우와 환자가 아닌 경우에 대비한 실제로 환자임을 맞춘 것을 나타냅니다.

    또한 정밀도는 열방향으로써 예측한 값들 중에서 얼마나 잘 예측했는지를 나타내는 척도입니다.

    수식을 살펴보자면

    이와 같이 정밀도는 Positive로 예측한 것 중 실제로 Positive가 얼마나 되는지를 보여주는 지표로써 후에 얼마나 정밀한 지표측정인지를 나타낼 수 있습니다.

     

    2-4. Specificity

    Specificity는 특이도로 실제 Negative를 얼마나 잘 예측했는지를 나타내는 지표입니다. 즉, 환자가 아닌 사람을 환자가 아니다라고 얼마나 잘 예측하는지 보여주는 척도로써 수식은 다음과 같습니다.

     

    특이도를 통해서 False Positive Rate를 구할 수 있는데 이는 환자가 아닌데 환자라고 예측하는 경우로써 

    False Positive Rate = 1 - Specificity 로 나타낼 수 있습니다. 1 - 특이도도 또한 AUC를 산출하는 과정에서 중요한 지표로써 작용하니 참고해주시길 바랍니다.

     

    2-5. F1 Score

    F1 Score는 보통 불균형 분류문제에서 평가척도로 주로 사용됩니다. 데이터가 불균형한 상태에서 Accuracy로 성능을 평가하기엔 데이터 편향성이 너무 크게 나타나 올바르게 성능을 측정하기 힘들게 됩니다. 그렇기 때문에 F1 Score를 평가척도로 사용합니다.

     

    그렇다면 왜 불균형 데이터 상태에서는 F1 Score를 이용할까요?

     

    위에서 설명한 SensitivityPrecision을 이용하여 조화평균을 구하여 평가 척도를 구성했기 때문인데요.

    다음의 그림을 보겠습니다. 

    두개 값의 크기가 서로 다른 형태를 나타내고 있는 불균형 상태이지만 이를 조화평균 함으로써 큰 값의 크기에 대한 가중치를 낮추고 작은 값에 더 맞춰주는 과정을 거쳐서 불균형 데이터일지라도 값의 크기 차이가 어느정도 상쇄되기 때문에 F1 Score는 불균형 데이터에서의 주요 척도로써 사용되고 있습니다.

     

    수식은 다음과 같습니다.(헷갈리시면 안되는게 Sensitiviy는 Recall(재현도)와 같습니다.)

     

    따라서 아무리 input class가 Positive에 맞춰져 있어 모델이 긍정에 대한 예측이 강한 분류기로 만들어질지라도 F1 Score로 평가 척도를 구해서 올바르게 분류가 되었는지 성능을 측정할 수 있습니다.

     

    지금까지는 Confusion Matrix(혼돈행렬)에 대해서 살펴보고 데이터의 균형도에 따라서 측정 Metric가 다를 수 있다는 점에 대해서도 배웠습니다. 다음은 이를 통해서 Roc Curve는 어떻게 그리는지, AUC면적은 무엇이고 값이 어떤 것을 뜻하는지 알아보겠습니다. 감사합니다!

     


    'Statistics' 카테고리의 다른 글

    Machine Learning Imbalanced Data(불균형 데이터)  (1) 2020.07.25
    Classification Evaluation Metric  (0) 2020.07.12
    Regression Evaluation Metric  (2) 2020.07.05
    AUC와 ROC Curve  (0) 2020.04.15

    댓글

Designed by Tistory.