콘텐츠로 이동

혼동 행렬과 분류 지표 (Confusion Matrix & Classification Metrics)

핵심 요약: 혼동 행렬(Confusion Matrix)은 모델의 “성적표”다. 예측 결과를 TP/FP/TN/FN 네 칸으로 나누고, 이 네 칸에서 정밀도(Precision), 재현율(Recall), F1-Score 등 모든 분류 지표가 파생된다. 시험 점수만 보면 어떤 문제를 틀렸는지 모르듯, 정확도(Accuracy)만 보면 모델이 어떤 실수를 하는지 알 수 없다.

분류 모델의 성능을 평가하려면 “얼마나 맞혔는가”를 넘어, 어떤 종류의 실수를 얼마나 했는가를 이해해야 한다. 혼동 행렬(Confusion Matrix)은 모든 분류 지표의 출발점이며, 이 행렬의 네 칸에서 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1-Score, MCC 등 핵심 지표가 파생된다.

이 문서에서는 혼동 행렬의 구조를 먼저 설명한 뒤, 각 분류 지표의 수학적 정의, 직관적 해석, 그리고 실전에서의 사용 지침을 다룬다.


1990년대 의료 진단(Medical Diagnosis) 분야에서는 “정확도 90%“라는 수치가 자주 보고되었지만, 실제 임상 현장에서는 이 숫자가 거의 쓸모없는 경우가 많았다. 예를 들어, 희귀 질환의 유병률이 1%인 상황에서 “모든 환자를 정상이라고 진단”하면 정확도는 99%에 달한다. 하지만 실제 환자는 단 한 명도 발견하지 못한다. 이 문제를 정확도 역설(Accuracy Paradox, 정확도가 높은데 실제로는 쓸모없는 현상)이라 부른다. 의료 연구자들은 “얼마나 맞혔는가”가 아니라 “어떤 종류의 실수를 했는가”를 구분해야 한다는 사실을 깨달았고, 이로부터 혼동 행렬(Confusion Matrix)이 분류 평가의 표준 도구로 자리잡게 되었다. 민감도(Sensitivity)와 특이도(Specificity)라는 용어가 의학에서 먼저 정립된 것도 이런 맥락이다. 이후 정보 검색(Information Retrieval), 사기 탐지(Fraud Detection) 등 다양한 분야로 확산되면서, 정밀도(Precision), 재현율(Recall), F1-Score 등 파생 지표가 체계적으로 정리되었다.


이진 분류에서 모델의 예측 결과는 네 가지 범주로 나뉜다.

1. 혼동 행렬 (Confusion Matrix) 다이어그램

예측: 양성 (Predicted Positive)예측: 음성 (Predicted Negative)
실제: 양성 (Actual Positive)TP (True Positive)FN (False Negative)
실제: 음성 (Actual Negative)FP (False Positive)TN (True Negative)
  • TP (True Positive, 진양성): 실제 양성을 양성으로 올바르게 예측
  • FP (False Positive, 위양성 — Type I Error, 제1종 오류): 실제 음성을 양성으로 잘못 예측 — “거짓 경보”
  • FN (False Negative, 위음성 — Type II Error, 제2종 오류): 실제 양성을 음성으로 잘못 예측 — “놓침”
  • TN (True Negative, 진음성): 실제 음성을 음성으로 올바르게 예측

병원에서 100명의 환자를 검사한다고 하자. 실제 양성(질병 있음)은 30명, 음성(건강)은 70명이다.

모델이 40명을 “양성”으로 예측했다. 결과를 분석하면:

예측: 양성예측: 음성
실제: 양성 (30명)TP = 25FN = 5
실제: 음성 (70명)FP = 15TN = 55
  • Precision = TP / (TP + FP) = 25 / 40 = 62.5% → “양성이라고 한 40명 중 25명만 진짜 양성”
  • Recall = TP / (TP + FN) = 25 / 30 = 83.3% → “실제 양성 30명 중 25명을 찾아냄”
  • Accuracy = (TP + TN) / 전체 = 80 / 100 = 80%
  • F1-Score = 2 x 62.5% x 83.3% / (62.5% + 83.3%) = 71.4%

2. 다중 클래스 확장 (Multi-class Extension)

섹션 제목: “2. 다중 클래스 확장 (Multi-class Extension)”

KK개 클래스가 있을 때, 혼동 행렬은 K×KK \times K 크기가 된다. 행은 실제 클래스, 열은 예측 클래스를 나타낸다.

평균 방식 (Averaging Methods):

방식설명특징
Micro모든 클래스의 TP, FP, FN을 합산 후 지표 계산다수 클래스에 유리
Macro클래스별 지표를 각각 계산 후 단순 평균모든 클래스를 동등하게 취급
Weighted클래스별 지표를 계산 후 클래스 크기(support)로 가중 평균Micro와 Macro의 절충
Samples샘플별로 지표를 계산 후 평균 (다중 라벨용)Multi-label 문제에서 사용

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

전체 샘플 중 올바르게 분류한 비율이다. 가장 직관적이지만, 불균형 데이터에서는 매우 위험한 지표다.

정확도 역설 (Accuracy Paradox): 양성:음성 = 1:99인 데이터에서, “모두 음성”으로 예측하면 99% 정확도를 달성한다. 이 모델은 아무런 분류 능력이 없지만 정확도는 높다.

균형 정확도 (Balanced Accuracy):

Balanced Accuracy=12(TPTP+FN+TNTN+FP)\text{Balanced Accuracy} = \frac{1}{2}\left(\frac{TP}{TP+FN} + \frac{TN}{TN+FP}\right)

각 클래스의 정확도를 평균하여 불균형에 강건하다.


정밀도 (Precision / Positive Predictive Value)

섹션 제목: “정밀도 (Precision / Positive Predictive Value)”

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

“양성이라고 예측한 것 중에서, 실제로 양성인 비율은?” 비유하자면, Precision은 검사(Prosecutor)의 관점이다 — “내가 체포한 사람 중에서 진범이 몇 명인가?”를 묻는 것과 같다.

정밀도가 중요한 경우: 거짓 경보(FP)의 비용이 높을 때

  • 스팸 필터: 정상 메일을 스팸으로 분류하면 중요한 메일을 잃음
  • 법적 판단: 무고한 사람을 유죄로 판단하는 비용

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

섹션 제목: “재현율 / 민감도 (Recall / Sensitivity / True Positive Rate)”

Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

“실제 양성 중에서, 얼마나 많이 잡아냈는가?” 반대로 Recall은 경찰(Police)의 관점이다 — “세상에 있는 전체 범인 중에서 우리가 실제로 체포한 비율이 얼마인가?”를 묻는 것이다.

재현율이 중요한 경우: 놓침(FN)의 비용이 높을 때

  • 암 검진: 암 환자를 놓치면 치료 기회를 잃음
  • 사기 탐지: 사기 거래를 놓치면 금전적 피해 발생

용어 정리: Sensitivity = Recall = TPR — 모두 같은 개념이지만, 의학에서는 민감도(Sensitivity), ML에서는 재현율(Recall), 통계에서는 TPR이라 부른다.


특이도 (Specificity / True Negative Rate)

섹션 제목: “특이도 (Specificity / True Negative Rate)”

Specificity=TNTN+FP\text{Specificity} = \frac{TN}{TN + FP}

“실제 음성 중에서, 얼마나 올바르게 음성으로 판단했는가?”

위양성률(FPR)과의 관계:

FPR=1Specificity=FPFP+TN\text{FPR} = 1 - \text{Specificity} = \frac{FP}{FP + TN}

특이도는 주로 의학/임상 맥락에서 사용되며, ROC 곡선의 x축은 1Specificity1 - \text{Specificity}, 즉 FPR이다.


음성예측도 (Negative Predictive Value, NPV)

섹션 제목: “음성예측도 (Negative Predictive Value, NPV)”

NPV=TNTN+FN\text{NPV} = \frac{TN}{TN + FN}

“음성이라고 예측한 것 중에서, 실제로 음성인 비율은?”

중요: PPV(= Precision)와 NPV는 유병률(Prevalence)에 크게 의존한다. 반면, Sensitivity와 Specificity는 유병률에 독립적이다. 이는 베이즈 정리(Bayes’ Theorem)로 설명된다.


F1=2PrecisionRecallPrecision+Recall=2TP2TP+FP+FNF_1 = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2 \cdot TP}{2 \cdot TP + FP + FN}

정밀도와 재현율의 조화 평균(Harmonic Mean, 두 값의 역수 평균의 역수)이다. 산술 평균 대신 조화 평균을 사용하는 이유는 둘 중 하나가 극단적으로 낮을 때 이를 더 강하게 반영하기 위함이다.

일반화 — FβF_\beta Score:

Fβ=(1+β2)PrecisionRecallβ2Precision+RecallF_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}

  • β<1\beta < 1 (예: F0.5F_{0.5}): 정밀도에 더 큰 가중치
  • β>1\beta > 1 (예: F2F_2): 재현율에 더 큰 가중치
  • β=1\beta = 1: 정밀도와 재현율을 동등하게 취급 → F1F_1

MCC=TPTNFPFN(TP+FP)(TP+FN)(TN+FP)(TN+FN)\text{MCC} = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}

  • 범위: [1,1][-1, 1]
    • +1+1: 완벽한 예측
    • 00: 랜덤 수준
    • 1-1: 완벽하게 반대로 예측
  • 장점: 혼동 행렬의 네 칸 모두를 사용하므로, 불균형 데이터에서도 신뢰할 수 있다
  • 피어슨 상관계수(Phi coefficient)와 동일하며, 카이제곱 통계량과도 관계가 있다

κ=pope1pe\kappa = \frac{p_o - p_e}{1 - p_e}

  • pop_o: 관측된 일치율 (Observed agreement) = Accuracy
  • pep_e: 우연에 의한 기대 일치율 (Expected agreement by chance)

해석 기준 (Landis & Koch):

κ\kappa해석
< 0우연보다 못함
0.00 – 0.20약간의 일치 (Slight)
0.21 – 0.40보통의 일치 (Fair)
0.41 – 0.60중간 수준의 일치 (Moderate)
0.61 – 0.80상당한 일치 (Substantial)
0.81 – 1.00거의 완벽한 일치 (Almost perfect)

랜덤 기준선(chance baseline)과의 비교가 필요할 때, 또는 평가자 간 일치도(inter-rater reliability)를 측정할 때 유용하다.


지표수식 핵심초점불균형 데이터TN 사용
AccuracyTP+TN전체\frac{TP+TN}{전체}전체 정확성취약O
PrecisionTPTP+FP\frac{TP}{TP+FP}양성 예측의 신뢰성보통X
RecallTPTP+FN\frac{TP}{TP+FN}양성 탐지율보통X
F1-Score조화평균(P, R)P-R 균형보통X
MCC4칸 모두 활용전체 상관성강건O
Cohen’s κ\kappa우연 보정우연 대비 성능강건O

언제 사용하는가 다이어그램 실전 예시:

문제우선 지표이유
스팸 탐지Precision 우선정상 메일을 스팸으로 오분류하면 안 됨
암 검진Recall 우선환자를 놓치면 안 됨
사기 탐지F2 또는 Recall사기를 놓치는 비용 > 오탐 비용, 하지만 심한 불균형
제조 불량도메인별 비용함수불량 유형과 비용에 따라 임계값 설정

한 핀테크(Fintech) 스타트업이 신용카드 사기 탐지(Fraud Detection) 모델을 배포했다. 전체 거래 100만 건 중 사기는 약 1,000건(0.1%)이었고, 모델의 정확도(Accuracy)는 99.8%에 달했다. 경영진은 만족했지만, 실제로 모델은 사기 거래의 70%를 놓치고 있었다 — Recall이 겨우 0.30이었다. 더 심각한 문제는 양성으로 예측한 3,200건 중 실제 사기는 300건뿐이어서 Precision도 0.094에 불과했다는 점이다. 즉, 사기라고 경고한 건의 90% 이상이 오탐(False Positive)이었다. 정확도 99.8%라는 숫자는 “모든 거래를 정상이라고 예측”하는 것(정확도 99.9%)과 거의 차이가 없었던 셈이다. 이 팀은 결국 Precision-Recall 기반 평가로 전환하고, F2F_2 Score를 주 지표로 채택한 뒤에야 실질적인 성능 개선을 이뤄냈다.


  1. “정확도가 높으면 좋은 모델이다” — 불균형 데이터에서는 정확도가 무의미할 수 있다 (정확도 역설)
  2. “정밀도가 높으면 재현율도 높다” — 정밀도와 재현율은 대체로 트레이드오프 관계다. 자세한 내용은 정밀도-재현율 트레이드오프 참조
  3. “F1이 항상 최선의 균형 지표다” — F1은 TN을 무시한다. 불균형 데이터에서는 MCC가 더 신뢰할 만하다
  4. “훈련 데이터에서 계산한 지표로 모델을 평가할 수 있다” — 훈련 데이터 성능은 과적합을 반영할 수 있어 무의미하다. 교차 검증을 사용해야 한다
  5. “PPV/NPV는 항상 안정적이다” — PPV와 NPV는 유병률에 따라 크게 변한다. Sensitivity/Specificity는 유병률에 독립적이다
  6. “F1은 P = R = 0일 때도 정의된다” — 양성 예측이 하나도 없고 실제 양성도 없으면 F1은 정의되지 않는다 (0/0)