Confusion Matrix
혼동 행렬이 분류 성능을 평가하는 방식을 알아보세요. 더 나은 정확도를 위해 TP, FP, TN 및 FN을 살펴보고 Ultralytics YOLO26 모델을 최적화해보세요.
혼동 행렬은 출력이 두 개 이상의 클래스일 수 있는 머신 러닝 분류 문제에서 성능을 측정하는 도구입니다. 혼동 행렬은 예측값과 실제값의 네 가지 조합으로 구성된 표이며, 모델 평가에서 데이터 시각화의 기반 요소로 사용됩니다. 데이터셋의 클래스 분포가 불균형한 경우 단순 정확도는 오해를 불러일으킬 수 있지만, 혼동 행렬은 컴퓨터 비전 (CV) 모델이 어느 부분에서 오류를 발생시키는지 세부적으로 보여줍니다. 예측 결과를 ground truth 라벨과 비교하면 개발자는 시스템이 특정 두 클래스를 혼동하는지 또는 객체를 전혀 감지하지 못하는지 확인할 수 있습니다.
행렬의 핵심 구성 요소#
혼동 행렬은 일반적으로 이진 분류에서 네 개의 사분면으로 나뉘지만, Ultralytics YOLO26과 같은 다중 클래스 문제에서는 그 구조가 확장됩니다. 이 네 가지 구성 요소는 모델이 예측한 내용과 이미지에 실제로 존재하는 내용의 교차 관계를 나타냅니다.
- 참양성 (TP): 모델이 양성 클래스를 올바르게 예측한 경우입니다. 예를 들어 객체 감지 작업에서 모델이 실제로 프레임 안에 있는 사람 주위에 bounding box를 성공적으로 그리는 경우입니다.
- 참음성 (TN): 모델이 음성 클래스를 올바르게 예측한 경우입니다. 이는 이상 감지와 같은 시나리오에서 중요합니다. 예를 들어 시스템이 제조 부품에 결함이 없음을 올바르게 식별하는 경우입니다.
- 거짓 양성 (FP): 모델이 양성 클래스를 잘못 예측한 경우입니다. 흔히 "제1종 오류"라고 하며, 보안 카메라가 그림자를 침입자로 경고하는 것처럼 시스템이 실제로 존재하지 않는 객체를 감지할 때 발생합니다.
- 거짓 음성 (FN): 모델이 음성 클래스를 잘못 예측한 경우입니다. "제2종 오류"라고도 하며, 모델이 실제로 존재하는 객체를 감지하지 못해 대상 객체를 사실상 "놓치는" 경우에 발생합니다.
파생 지표 및 중요성#
혼동 행렬의 원시 수치는 모델 성능을 설명하는 고급 지표를 계산하는 데 사용됩니다. 이러한 파생 지표를 이해하는 것은 신경망을 최적화하는 데 필수적입니다.
- 정밀도: TP / (TP + FP)로 계산되며, 양성 예측이 얼마나 정확한지를 보여주는 지표입니다. 정밀도가 높으면 오탐이 줄어듭니다.
- 재현율 (Sensitivity): TP / (TP + FN)으로 계산되며, 모든 양성 사례를 찾아내는 모델의 능력을 측정합니다. 객체를 놓쳤을 때 심각한 결과가 발생할 수 있는 경우에는 높은 재현율이 매우 중요합니다.
- F1 점수: 정밀도와 재현율의 조화 평균입니다. 두 지표 간의 상충 관계를 균형 있게 반영하는 단일 점수를 제공하므로, 서로 다른 YOLO26 모델을 비교하는 데 유용합니다.
실제 적용 사례#
혼동 행렬로 정의되는 오류의 구체적인 비용에 따라 모델을 다양한 산업 분야에 맞게 조정하는 방식이 결정됩니다.
**의료 분야의 AI**에서는 혼동 행렬이 안전과 직결됩니다. 종양을 감지하기 위해 의료 영상 분석용 모델을 학습할 때는 거짓 음성(종양을 놓치는 경우)이 거짓 양성(양성 병변을 의사의 검토 대상으로 표시하는 경우)보다 훨씬 심각합니다. 따라서 엔지니어는 잠재적인 건강 위험을 놓치지 않도록 이러한 행렬에서 정밀도보다 재현율을 우선합니다.
반대로 **제조 품질 관리**에서는 효율성이 핵심입니다. 조립 라인 부품을 분류하는 시스템에서 거짓 양성(정상 부품을 결함으로 표시하는 경우)이 너무 많이 발생하면 불필요한 폐기물이 생기고 생산 속도가 느려집니다. 이 경우 혼동 행렬은 엔지니어가 정밀도를 극대화하도록 모델을 조정하는 데 도움을 줍니다. 이를 통해 불량으로 분류된 제품이 실제로 결함이 있는지 확인하고 자동화된 머신 러닝 워크플로를 효율화할 수 있습니다.
Ultralytics YOLO26으로 혼동 행렬 생성하기#
최신 프레임워크를 사용할 때 혼동 행렬 생성은 표준 검증 파이프라인의 일부인 경우가 많습니다. 아래 예제에서는 ultralytics 패키지를 사용하여 YOLO26 모델을 검증하고 혼동 행렬 데이터에 액세스하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Validate the model on the COCO8 dataset
# This automatically generates and plots the confusion matrix
metrics = model.val(data="coco8.yaml")
# Access the confusion matrix object directly
print(metrics.confusion_matrix.matrix)관련 개념 구분#
혼동 행렬을 유사한 평가 용어와 구분하는 것이 중요합니다.
- 정확도와 비교: 정확도는 전체 예측 수 대비 올바른 예측 수의 비율입니다. 정확도는 유용하지만 불균형 데이터셋에서는 크게 오해를 불러일으킬 수 있습니다. 예를 들어 이메일의 95%가 스팸이 아닌 경우, 모든 이메일을 스팸 아님으로 예측하는 모델은 정확도가 95%이지만 쓸모가 없습니다. 혼동 행렬은 스팸 클래스의 참양성이 0임을 보여주어 이러한 문제를 드러냅니다.
- ROC 곡선과 비교: 혼동 행렬은 하나의 특정 confidence threshold에서의 성능을 보여주는 스냅샷입니다. 반면 수신자 조작 특성 (ROC) 곡선은 해당 임계값을 변경할 때 참양성률과 거짓 양성률이 어떻게 변하는지 시각화합니다. Ultralytics Platform과 같은 도구를 사용하면 두 시각화를 모두 살펴보고 배포에 적합한 최적의 운영 지점을 선택할 수 있습니다.









