멋쟁이 사자처럼 AI 스쿨 TIL-40

김영민·2022년 11월 24일
0

혼동행렬(Confusion Matrix) 이란?

학습을 통한 예측 성능을 측정하기 위해 예측값과 실제값을 비교하기 위한 표

기계가 얼마나 참과 거짓을 혼동하는지 확인하는 데 사용하기 때문에 ‘혼동’행렬이라 명명

  • T, F, P, N 의미
    • TRUE : 모델이 맞췄을 때
    • FALSE : 모델이 틀림
    • Positive : 모델의 예측 값이 TRUE
    • Negative : 모델의 예측 값이 FALSE
  • 각 표에 속한 값의 의미
    • True Positive(TP, 참긍정) : 실제 값은 Positive, 예측된 값도 Positive
    • False Positive(FP, 거짓긍정) : 실제 값은 Negative, 예측된 값은 Positive
    • False Negative(FN, 거짓부정) : 실제 값은 Positive, 예측된 값은 Negative
    • True Negative(TN, 참부정) : 실제 값은 Negative, 예측된 값도 Negative

분류 성능 평가 지표

Accuracy (정확도)

전체 중 모델이 바르게 분류한 비율

Accuracy=TP+TNTP+FN+FP+TNAccuracy = \cfrac{TP+TN}{TP+FN+FP+TN}

Confusion Matrix에서 대각선 부분

🧐 **`정확도`의 한계?** 현실에서 마주치는 많은 데이터들은 불균형 데이터이다. 다시 말해, “정확도”만으로 얼마나 잘 분류했는지 알 수 없는 문제들이 많다. 예를 들어 과학 출간물 중 노벨상을 예측하는 모델을 만든다고 할 때, 모두 **no**라고 하면 99.99%의 정확도로 맞출 수 있을 것이다.

다음 그림을 보면 정확도가 높은 모델은 B이지만, 비록 4개의 오답이 있더라도 상황에 적절한 모델은 A가 된다.
즉, 단순히 정확도만으로 판단해서는 안 될 문제들이 있고 이를 해결하기 위해 정밀도와 재현율이 필요하게 되는 것이다.

Precision (정밀도)

모델이 Positive라 분류한 것 중 실제 값이 Positive인 비율 (예측 결과가 긍정적일 때 현실도 실제로 긍정일 확률)

  • 양성 예측의 정확도, 다른 모든 양성 샘플을 무시하게 됨

Precision=TPTP+FPPrecision = \cfrac{TP}{TP+FP}

Recall (재현율) = Sensitivity (민감도)

전체의 실제 Positive 중에서 모델이 Positive라고 골라낸 비율

  • 모델이 정확하게 감지한 양성 샘플의 비율 (진짜 양성 비율)

Recall=TPTP+FNRecall = \cfrac{TP}{TP+FN}
  • 정확도와 재현율 예시

```markdown
A병원의 정확도 = (9+60)/(9+60+1+30) = 0.69
B병원의 정확도 = (1+70)/(1+70+9+20) = 0.71

=> **정확도는 B병원이 높지만 암을 기준으로 하면 B가 더 안좋다.**

A모델의 암환자 정밀도 = 9/(9+30) = 0.23
B모델의 암환자 정밀도 = 1/(1+20) = 0.04

=> **정확도는 B모델이 높지만 정밀도는 A모델이 높다.**

A모델의 암환자 재현율 = 9/(9+1) = 0.9
B모델의 암환자 재현율 = 1/(1+9) = 0.1

=> **암환자 재현율을 기준으로 더 나은 모델은 A모델이다.**
```

Specificity (특이도)

전체의 실제 Negative 중에서 모델이 Negative라고 골라낸 비율

  • 모델이 정확하게 감지한 음성 샘플의 비율 (진짜 음성 비율)

Specificity=TNFP+TNSpecificity = \cfrac{TN}{FP+TN}

F beta Score

  • 정밀도와 재현율의 조화평균
  • 한 쪽에 가중치를 두고 싶을 때 사용한다.
  • beta > 1이면 재현율의 비중이 커지고
  • beta < 1이면 정밀도의 비중이 커진다.
Fβ=(1+β2)1β2Recall+1Precision=(1+β2)PrecisionRecall(β2Precision)+RecallF_\beta = (1+\beta^2)\cdot\cfrac{1}{\cfrac{\beta^2}{Recall}+\cfrac{1}{Precision}} = (1+\beta^2)\cdot\cfrac{Precision\cdot Recall}{(\beta^2\cdot Precision)+Recall}

F1 Score

  • 정밀도와 재현율의 조화평균
  • F beta Score에서 beta가 1인 경우 (정밀도와 재현율의 비중이 같다.)
F1=211Recall+1Precision=2PrecisionRecallPrecision+RecallF_1 = 2\cdot\cfrac{1}{\cfrac{1}{Recall}+\cfrac{1}{Precision}}=2\cdot\cfrac{Precision\cdot Recall}{Precision+Recall}

Precision과 Recall : Trade-off

이 둘을 모두 없을 수는 없다. 정밀도를 올리면 재현율이 줄고 그 반대도 마찬가지이다.

  • 1종 오류 발생 확률(α)과 2종 오류 발생 확률(β) 은 서로 트레이드오프 관계
  • 표본의 크기가 동일한 상태에서 α값을 감소시키면 상대적으로 β 값이 증가
  • 1종 오류와 2종 오류 중 어느 것을 중심적으로 볼지에 따라 기준 달라짐

sklearn 코드

from sklearn.metrics import precision_score
from sklearn.metrics import recall_score 
from sklearn.metrics import f1_score
from sklearn.metrics import classification_report

y_true = [1, 1, 1, 1, 0, 0, 0, 1 , 0, 1]
y_predict = [1, 1, 0, 1, 0, 1, 0, 1, 1 ,1]

precision = precision_score(y_true, y_predict)
recall = recall_score(y_true, y_predict)
f1 = f1_score(y_true, y_predict)
print(f"precision_score : {precision}, \nrecall_score : {recall}, \nf1_ : {f1}\n")

print(classification_report(y_true, y_predict))

1종 오류와 2종 오류

1종 오류 FP : 귀무가설이 참임에도 불구하고 귀무가설을 기각하는 오류
				 (실제로 효과가 없는데 효과가 있다고 판단)
2종 오류 FN : 귀무가설이 거짓임에도 불구하고 귀무가설을 채택하는 오류
				 (실제로 효과가 있는데 효과가 없다고 판단)
  • 1종 오류와 2종 오류는 tradeoff관계
  • 한쪽 오류를 강제로 줄이면 다른 오류가 늘어나게 된다.

예시)

  • TN(True Negative, Negative Negative) 실제는 임신이 아니고(0), 임신이 아닌 것(0)으로 잘 예측함.
  • FP(False Positive, Negative Positive) - 1종 오류 실제는 임신이 아닌데(0),  임신(1)로 예측
    • 스팸메일이 아닌데 스팸메일로 예측
    • 무고한 피고인에게 유죄를 선고
  • FN(False Negative, Positive Negative) - 2종 오류 실제는 임신인데(1), 임신이 아닌 것(0)으로 예측
    • 암인데 암이 아닌 것으로 예측
    • 화재가 났는데 화재가 아니라고 예측
  • TP(True Positive, Positive Positive) 실제 임신이고(1), 임신(1)으로 잘 예측함.

참고자료

  • confusion matrix란?

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

  • 머신러닝 분류 - 혼동 행렬(Confusion matrix)

머신러닝 분류 - 혼동 행렬(Confusion matrix)

  • 혼동 행렬

  • 혼동 행렬 Confiusion Matrix

혼동행렬 Confusion Matrix - 토탈 데이터과학 - Total Data Science

  • 가설검정의 1종 오류와 2종 오류

가설검정의 1종 오류와 2종 오류

멋쟁이사자처럼 AI스쿨 박조은강사님

profile
배운걸 다 흡수하는 제로민

0개의 댓글