AI 기초
혼동 행렬이란 무엇인가?
혼동 행렬은 분류기의 예측이 실제 레이블과 얼마나 일치하거나 차이 나는지를 횟수로 표시한 표입니다. 어떤 클래스가 서로 혼동되는지를 드러내며, 정밀도, 재현율, 특이도, F1 점수와 같은 지표를 계산하는 데 사용되는 횟수를 제공합니다. 이는 지도 학습 분류 문제의 핵심 진단 도구 중 하나입니다.
행렬 자체가 단일 성능 점수는 아닙니다. 특정 결정 임계값, 데이터셋, 클래스 정의에 따른 결과를 구조적으로 보여줍니다.
핵심 요점
- 이진 분류의 경우 네 가지 결과는 진양성, 위양성, 위음성, 진음성입니다.
- 축 레이블을 반드시 표시하세요: 라이브러리와 문헌마다 실제 클래스와 예측 클래스를 같은 방향에 두지 않을 수 있습니다.
- 클래스 불균형이 심할 때 정확도는 심각한 오류를 숨길 수 있습니다.
- 분류 임계값을 변경하면 혼동 행렬과 정밀도-재현율 사이의 트레이드오프가 바뀝니다.

네 가지 이진 분류 결과
- 진양성 (TP): 실제로 양성인 경우이며 모델이 양성으로 예측한 경우.
- 위양성 (FP): 실제는 음성인데 모델이 양성으로 예측한 경우.
- 위음성 (FN): 실제는 양성인데 모델이 음성으로 예측한 경우.
- 진음성 (TN): 실제로 음성이며 모델이 음성으로 예측한 경우.
scikit-learn의 관례에 따르면 행은 실제 클래스, 열은 예측 클래스를 나타냅니다. 다른 시각화에서는 이 배열이 전치될 수 있으므로, 코너 위치가 아니라 레이블을 기준으로 해석해야 합니다.
혼동 행렬에서 파생되는 지표
정밀도
Precision = TP / (TP + FP)
정밀도는 다음과 같이 묻습니다: 양성으로 예측된 사례 중 실제 양성인 비율은 얼마인가?
재현율 또는 민감도
Recall = TP / (TP + FN)
재현율은 다음과 같이 묻습니다: 실제 양성 사례 전체 중 모델이 찾아낸 비율은 얼마인가? 이진 분류에서는 양성 클래스 재현율을 민감도 또는 진양성 비율이라고도 합니다.
특이도
Specificity = TN / (TN + FP)
특이도는 음성 클래스에 대한 재현율이며, 실제 음성 중 모델이 올바르게 거부한 비율을 나타냅니다.
정확도
Accuracy = (TP + TN) / (TP + TN + FP + FN)
정확도는 클래스와 오류 비용이 비교적 균형을 이룰 때 유용합니다. 한 클래스가 지배적일 경우 오해를 불러일으킬 수 있습니다.
F1 점수
F1 = 2 × (Precision × Recall) / (Precision + Recall)
F1 점수는 정밀도와 재현율을 조화 평균으로 요약합니다. 진음성을 무시하므로 모든 작업에 적합한 요약은 아닙니다.
작업 예시
테스트 세트에 1,000건의 거래가 있다고 가정합니다. 그 중 50건이 사기 거래입니다. 모델이 사기 거래 40건을 찾아내고 정상 거래 30건을 잘못 사기로 표시했습니다:
- TP = 40
- FN = 10
- FP = 30
- TN = 920
모델의 정확도는 96%이지만 정밀도는 약 57%, 재현율은 80%입니다. 높은 정확도는 다수의 정상 거래에 의해 주도됩니다. 이 모델이 허용 가능한지는 놓친 사기의 비용, 조사 역량, 위험 점수의 보정 정도에 따라 달라집니다.
임계값에 따른 행렬 변화
많은 분류기는 예/아니오의 확정 답변 대신 점수를 출력합니다. 양성 임계값을 낮추면 일반적으로 재현율과 위양성이 증가하고, 임계값을 높이면 정밀도 또는 특이도가 증가하면서 양성을 더 많이 놓치게 됩니다. 임계값은 검증 데이터와 실제 오류 비용을 고려해 선택해야 하며, 자동으로 0.5에 고정해서는 안 됩니다.
정밀도-재현율 곡선과 ROC 곡선은 임계값 전반에 걸친 성능을 요약합니다. 양성 클래스가 희귀할 경우 정밀도-재현율 곡선이 더 유용한 정보를 제공합니다.
다중 클래스 혼동 행렬
클래스가 K개이면 행렬은 K × K 형태가 됩니다. 정답 예측은 대각선에 위치하고, 비대각선 셀은 어떤 클래스 쌍이 혼동되는지를 보여줍니다. 클래스별 지표는 다음과 같은 방식으로 평균을 낼 수 있습니다:
- Macro 평균: 각 클래스를 동등하게 가중합니다.
- Weighted 평균: 각 클래스를 해당 예제 수에 비례해 가중합니다.
- Micro 평균: 지표를 계산하기 전에 전체 결과 횟수를 합산합니다.
단일 평균만 보고하면 소수 클래스의 성능이 숨겨질 수 있습니다. 지원 수와 클래스별 결과를 함께 제시해 차이가 중요한 경우를 강조하세요.
흔히 하는 실수
- 축 레이블을 확인하지 않고 전치된 행렬을 읽는 경우.
- 훈련 데이터에서 지표를 계산하고 적절한 검증 세트를 사용하지 않는 경우.
- 클래스 비율, 샘플링 전략, 또는 분할 간 중복 데이터를 무시하는 경우.
- 임계값이 다른 행렬을 비교하면서 그 변화를 명시하지 않는 경우.
- 모든 위양성과 위음성을 동일한 비용으로 취급하는 경우.
따라서 혼동 행렬은 진단 도구일 뿐, 전체 평가를 대체하지는 못합니다. 보정, 하위 그룹 분석, 강건성, 그리고 downstream 결과 역시 분류 검토에 포함되어야 합니다.
모든 셀을 읽고 유용한 지표 도출하기
이진 분류에서는 선택한 양성 클래스와 임계값에 따라 혼동 행렬이 진양성, 위양성, 위음성, 진음성의 개수를 셉니다. 정확도는 전체 사례 중 올바른 예측 비율을, 정밀도는 예측된 양성 중 실제 양성 비율을, 재현율은 실제 양성 중 찾아낸 비율을, 특이도는 실제 음성 중 올바르게 배제된 비율을, F1은 정밀도와 재현율의 조화 평균을 의미합니다. 어느 하나가 절대적으로 우수한 것은 아니며, 사기 탐지, 의료 트리아지, 스팸 필터링 등은 동일한 셀에 서로 다른 의미와 비용을 부여합니다.
다중 클래스 문제에서는 행이 실제 클래스를, 열이 예측 클래스를 나타내는 경우가 일반적이지만 관례가 다를 수 있으므로 레이블을 명시해야 합니다. One‑vs‑Rest 방식은 클래스별 정밀도와 재현율을 제공합니다. Macro 평균은 각 클래스를 동등하게 가중하고, Micro 평균은 전체 결정을 집계해 다수 클래스에 유리하게 작용하며, Weighted 평균은 클래스 지원 수에 비례해 가중합니다. 다중 라벨 작업은 아이템당 여러 라벨이 존재하므로 라벨별 또는 샘플별 정의가 필요합니다. 행별 정규화를 통해 재현율 패턴을, 열별 정규화를 통해 예측 구성을 살펴볼 수 있지만, 희귀 그룹이 시각적으로 과장되지 않도록 원시 카운트를 유지해야 합니다.
임계값, 불확실성, 운영 의사결정
혼동 행렬은 단일 임계값에서의 경성 결정을 요약합니다. 정밀도‑재현율 또는 ROC 곡선을 활용해 임계값을 비교하고, 용량, 유병률, 오류 비용을 고려해 운영 지점을 선택합니다. 보정은 예측 확률이 관측 빈도와 일치하는지를 평가하는 별도 절차이며, 순위와는 구분됩니다. 유병률이 변하면 정밀도는 변동할 수 있지만, 민감도와 특이도는 안정적일 수 있습니다. 신뢰 구간이나 부트스트랩 변동성을 보고하고, 소규모 하위 그룹에서 소수 오류만으로 결론을 내리는 것을 피하세요.
시간, 위치, 디바이스, 언어, 영향을 받는 그룹별로 행렬을 감사해 집중 오류를 찾아냅니다. 기존 의사결정 프로세스(예: 인간 검토)와 모델을 비교하고, 단계별 오류(검색, 분류, 임계값 적용, 행동)를 기록합니다. 실시간 라벨링 결과와 지연·보정 프로세스를 모니터링합니다. 개선된 F1 점수가 더 많은 해로운 위음성을 초래하거나 검토 용량을 초과할 수 있음을 인지하세요. 혼동 행렬은 의사결정 원장과도 같으며, 각 셀을 경험하는 사람과 그에 따른 대응을 연결해야 합니다.
작업 예시: 의료 스크리닝 임계값 선택
머신러닝 스크리닝 모델이 낮은 유병률을 가진 상태에 대한 위험 점수를 출력합니다. 팀은 여러 임계값에 걸쳐 혼동 행렬을 작성하고, 민감도, 특이도, 정밀도, 위양성, 놓친 사례에 대한 신뢰 구간을 보고합니다. 양성 예측값은 유병률에 따라 달라지므로, 단일 데이터셋의 정밀도만 인용하지 않고 대상 인구에 맞춰 모델링합니다. 결과는 디바이스, 현장, 연령, 성별, 기타 임상적으로 정당화된 그룹별로 구분됩니다.
임상의는 필요한 민감도를 유지하면서 확인 검사를 과도하게 발생시키지 않는 운영 지점을 선택합니다. 행렬은 10,000명 스크리닝 대상당 기대 횟수로 변환되어 결과가 직관적으로 이해되도록 합니다. 검증된 조건을 벗어난 점수는 자동 결론을 내리지 않습니다. 모니터링은 예측을 지연된 확정 진단과 비교하고, 용량과 보정을 추적하며, 유병률이나 데이터 수집 방식이 변하면 검토를 트리거합니다. 혼동 행렬은 정확한 모델, 임계값, 인구와 연결된 상태를 유지합니다.
구현 증거와 운영 준비성
프로덕션 의사결정은 성공적인 시연만으로는 부족합니다. 대상 사용자, 운영 환경, 입력·출력, 의존성, 책임자, 각 주요 실패에 대한 결과를 정의하세요. 튜닝 전에 재현 가능한 기준선과 버전 관리된 평가 세트를 구축합니다. 일반 케이스, 경계 조건, 손상·누락 입력, 데이터 분포 변동, 의존성 장애, 오용, 그리고 소외될 가능성이 높은 그룹·환경을 테스트합니다. 작업 품질을 보정·불확실성, 지연, 처리량, 자원 비용, 접근성, 프라이버시, 보안과 함께 측정합니다. 모든 변환과 임계값을 기록해 독립 검토자가 결과를 재현하고, 매력적인 프로토타입과 증거를 구분할 수 있게 합니다.
출시 전에는 배포, 예외, 변경, 롤백, 은퇴에 대한 권한을 지정합니다. 단계적 롤아웃을 사용하고 안전한 폴백을 유지하며, 고의로 주입한 실패를 통해 모니터링을 검증합니다. 운영 텔레메트리는 입력 품질, 출력 행동, 모델·규칙 버전, 의존성 상태, 인간 개입, 확인된 결과를 불필요한 민감 데이터 수집 없이 드러내야 합니다. 알림 임계값과 대응 담당자를 정의하고, 배포 후 실제 증거를 검토해 오프라인 성능이 지속된다고 가정하지 마세요. 데이터 소스, 사용자, 모델, 벤더, 정책, 하드웨어, 목표가 변하면 재평가합니다. 유지되는 시스템은 복구, 사고 학습, 삭제·보존 절차, 그리고 비활성화·교체 시점을 명확히 문서화해야 합니다.
자주 묻는 질문
정규화된 혼동 행렬이란?
정규화는 횟수를 실제 클래스 총계, 예측 클래스 총계, 또는 전체 관측치로 나누는 작업을 말합니다. 이는 클래스 간 비율을 비교하기 쉽게 하지만, 보고서에는 원시 지원 수를 함께 유지해 작은 그룹이 동일하게 큰 그룹처럼 오해되지 않도록 해야 합니다.
혼동 행렬이 회귀를 평가할 수 있나요?
직접적으로는 불가능합니다. 혼동 행렬은 이산 클래스가 필요합니다. 연속형 타깃을 구간화하면 정보가 손실되며, 회귀는 일반적으로 잔차 분석 및 MAE, RMSE와 같은 연속값 전용 지표를 사용합니다.












