군집 교차 집계표(Contingency Matrix)란? AI에서 기준 그룹과 예측 군집의 겹침을 읽는 표
TL;DR
군집 교차 집계표는 기준 그룹과 예측 군집이 서로 겹치는 표본 수를 칸마다 보여 주는 행렬입니다. 행은 기준 그룹, 열은 예측 군집으로 읽습니다. 한 기준 그룹이 여러 열에 퍼지면 쪼개진 상태이고, 한 예측 열에 여러 기준 그룹이 몰리면 합쳐진 상태입니다. 표 자체는 점수나 정답률이 아니므로 라벨 순서와 평가 목적을 함께 확인해야 합니다.
핵심 3줄 요약
- 핵심 1
한 칸은 두 그룹의 교집합입니다. 같은 표본이 기준 행과 예측 열에 동시에 속한 개수를 셉니다. - 핵심 2
쪼개짐과 합쳐짐을 눈으로 찾습니다. 행의 분산과 열의 섞임을 따로 읽어 오류 유형을 구분합니다. - 핵심 3
표와 지표는 다릅니다. 표는 집계 결과이고 MI·AMI 같은 점수는 이 집계를 바탕으로 계산됩니다.
이 글에서 다룰 내용
- 군집 교차 집계표의 한 문장 정의
- 문서 여섯 건을 행과 열에 배치한 쉬운 예시
- 기준 그룹의 쪼개짐과 예측 군집의 합쳐짐
- 혼동 행렬·쌍 혼동 행렬·MI와의 차이
- 문서 및 이미지 군집 평가의 실제 사용처
- 표본 ID·군집 번호·희소 행렬 점검 순서
- 자주 묻는 질문 다섯 가지
군집 교차 집계표를 한 문장으로 정의하면 무엇인가요?
군집 교차 집계표는 동일한 표본의 두 라벨 분할을 교차해 기준 그룹마다 예측 군집에 속한 표본 수를 기록한 행렬입니다.
scikit-learn의 contingency_matrix 문서는 행을 기준 라벨, 열을 예측 군집 라벨로 설명합니다. 한 칸의 값은 기준 그룹에도 속하고 해당 예측 군집에도 속하는 표본의 수입니다. 행의 개수와 열의 개수는 서로 같을 필요가 없습니다. 사람이 정한 범주가 둘이어도 알고리즘이 셋이나 넷으로 나눌 수 있기 때문입니다.
이 행렬을 만들려면 두 배열이 같은 표본을 같은 순서로 가리켜야 합니다. 첫 배열의 첫 문서와 두 번째 배열의 첫 문서가 다른 자료라면 겉으로 그럴듯한 숫자가 나와도 교집합의 뜻이 사라집니다. 기준이 사람의 정답이 아니라 다른 모델 결과라면 표는 두 분할의 차이를 보여 줄 뿐, 어느 쪽이 옳은지는 알려 주지 않습니다.
한 줄 정리: 교차 집계표는 표본별 라벨을 겹쳐 세는 표이며, 군집의 질을 한 숫자로 확정하는 점수가 아닙니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 문의 문서 여섯 건을 분류한다고 가정해 보겠습니다. 사람이 확인한 기준은 배송 A·B·C와 환불 D·E·F입니다. 모델은 예측 군집 0에 A·B, 군집 1에 C·D, 군집 2에 E·F를 넣었습니다. 예측 번호 0·1·2는 주제명이 아니라 모델이 붙인 식별자일 뿐입니다.
- 배송 행: 예측 0에 A·B 두 건, 예측 1에 C 한 건, 예측 2에 0건입니다. 행을 따라 보면 배송 문서가 두 군집으로 갈라졌습니다.
- 환불 행: 예측 0에 0건, 예측 1에 D 한 건, 예측 2에 E·F 두 건입니다. 환불 문서도 두 군집에 퍼졌습니다.
- 예측 1 열: 배송 C와 환불 D가 함께 있습니다. 한 열에 서로 다른 기준 그룹이 섞였으므로 합쳐진 부분도 보입니다.
각 행의 합은 기준 그룹별 문서 수인 세 건입니다. 각 열의 합은 예측 군집별 문서 수로 각각 두 건이며, 모든 칸을 더하면 원본 여섯 건입니다. 행과 열의 합계가 원본에서 집계한 표본 수와 다른 경우에는 빠진 문서, 중복된 ID 또는 서로 다른 평가 목록을 의심해야 합니다.
가장 큰 칸만 보고 모델이 네 건을 맞혔다고 말하면 안 됩니다. 기준 라벨과 예측 군집의 번호는 직접 대응하지 않으며, 예측 1 열에는 두 주제가 섞여 있습니다. 교차표는 이런 구조를 보게 해 주지만 정답률이나 최적의 이름 대응을 자동으로 확정하지 않습니다.
쉬운 예시: 가로로 읽으면 한 기준 그룹이 여러 군집으로 갈라지는지, 세로로 읽으면 하나의 예측 군집에 여러 기준 그룹이 섞이는지 볼 수 있습니다.
왜 AI에서 교차 집계표가 중요한가요?
숫자 하나가 숨기는 분할 오류를 드러냅니다
군집 평가 지표가 같은 값으로 나와도 어느 기준 그룹이 흩어졌는지, 어느 예측 군집에 서로 다른 사례가 섞였는지는 다를 수 있습니다. 교차표의 행과 열을 살피면 잘게 쪼개진 주제와 한데 뭉친 주제를 각각 찾아 실제 표본으로 내려가 검수할 수 있습니다.
고객 상담 기록이나 이미지 임베딩 군집처럼 사람이 지정한 그룹이 있는 작업에서는 큰 행의 표본이 몇 개 열에 흩어졌는지가 중요합니다. 반대로 위험한 사례가 다른 기준 그룹과 한 예측 열에 섞였다면 전체 점수와 별도로 그 칸의 표본을 확인해야 합니다.
군집 간 정보 공유를 계산할 바탕이 됩니다
scikit-learn의 mutual_info_score 문서는 교차 집계 행렬을 입력할 수 있으며, 따로 주지 않으면 라벨에서 계산한다고 명시합니다. 두 분할의 그룹별 교집합과 주변 합계를 알면 어떤 분할이 다른 분할의 정보를 얼마나 담는지 평가할 출발점이 생깁니다.
최근 발행된 AMI 글은 공유 정보에서 우연에 따른 기대값을 보정하는 점수의 해석을 설명합니다. 이 글의 대상은 그 계산에 쓰이는 원본 교차 집계표를 만들고 읽는 법입니다. 표를 만든 사실만으로 우연 보정이나 최적 군집이라는 결론을 내리지 않습니다.
핵심 인사이트: 지표가 결론을 요약한다면 교차 집계표는 어느 기준 그룹과 예측 군집이 겹쳤는지 추적할 근거를 남깁니다.
교차 집계표는 어떻게 만드나요?
같은 표본을 두 번 라벨링합니다
첫 번째 배열에는 기준 그룹을, 두 번째 배열에는 예측 군집을 입력합니다. 두 배열의 길이와 표본 ID 순서를 먼저 고정합니다. 파일에서 각기 다른 정렬을 적용했다면 길이가 같다는 사실만으로는 대응 관계가 보장되지 않습니다.
기준 라벨은 사람이 검수한 정답일 수도 있고, 같은 데이터에 적용한 다른 군집 결과일 수도 있습니다. 후자의 경우 두 분할의 구조를 비교하는 것이므로 한쪽을 검증된 정답처럼 소개하지 않습니다.
각 표본의 교집합 칸에 하나씩 셉니다
한 표본의 기준 그룹이 배송이고 예측 군집이 1이면 배송 행과 1 열이 만나는 칸에 하나를 더합니다. 모든 표본을 한 번씩 처리하면 행과 열마다 실제 표본 수를 확인할 수 있습니다. 서로 다른 라벨 번호라도 교차표에는 두 분할의 관계가 그대로 남습니다.
scikit-learn 문서의 기본 반환값은 정수 행렬입니다. 이 구현에서
eps=None
이면 각 칸에 보정값을 더하지 않습니다.
eps
에 수치를 주면 모든 칸에 같은 값을 더하므로 화면의 숫자가 더는 원래의 순수 표본 수가 아닙니다.
행과 열의 합을 원본과 대조합니다
예측 군집이 기준 그룹보다 많으면 열도 많아져 직사각형 표가 됩니다. 한 행의 값은 그 기준 그룹이 각 예측 군집에 어떻게 나뉘었는지 나타냅니다. 한 열의 값은 그 예측 군집에 어떤 기준 그룹이 모였는지 나타냅니다.
행과 열의 총합이 모두 입력 표본 수와 일치하는지 확인한 뒤 작은 칸의 사례를 추적합니다. 노이즈로 표시된 표본도 라벨 배열에 넣어 계산했다면 그 이름의 별도 행이나 열로 취급될 수 있습니다. 제외하거나 포함하는 정책을 표를 만들기 전에 정해야 합니다.
교차 집계표와 헷갈리는 용어는 무엇이 다른가요?
분류 혼동 행렬과 군집 교차 집계표의 차이
두 표 모두 기준 라벨과 예측 라벨을 교차해 사례를 셉니다. 그러나 분류 혼동 행렬은 보통 정해진 클래스 목록의 행과 열을 일치시키므로 대각선의 정분류를 해석할 수 있습니다. 군집 교차표는 기준 그룹의 수와 예측 군집의 수가 달라도 만들 수 있고, 군집 번호 자체에는 정답 클래스와의 의미상 대응이 없습니다.
기존 혼동 행렬 글은 분류의 TP·FP·FN·TN을 읽는 질문에 답합니다. 군집 교차표에서 위치가 같은 숫자의 행과 열을 무조건 정답 칸으로 처리하면 잘못된 해석입니다. 한 군집의 이름을 바꾸면 숫자가 놓인 열은 바뀌어도 표본 사이의 그룹 관계는 바뀌지 않습니다.
쌍 혼동 행렬과 교차 집계표의 차이
쌍 혼동 행렬은 두 표본이 같은 군집인지 아닌지를 기준과 예측에서 각각 판단해 두 분할의 표본 쌍을 셉니다. 군집 교차표의 각 칸은 특정 기준 그룹과 예측 군집에 동시에 속하는 개별 표본을 셉니다. 집계 단위가 쌍과 개별 사례로 다릅니다.
최근 FMI 글에서 다룬 쌍별 정밀도와 재현율을 교차표의 대각선 값에 그대로 적용하면 안 됩니다. 쌍 계산에는 각 그룹 안의 여러 표본 사이 관계를 다시 세는 과정이 필요합니다. 먼저 무엇을 셌는지 확인해야 숫자가 같은 이름처럼 보여도 혼동하지 않습니다.
AMI·MI 같은 점수와 원본 표의 차이
MI는 두 분할이 공유하는 정보를 한 수치로 나타냅니다. AMI는 우연에 의한 기대 일치를 보정합니다. 교차 집계표는 정규화나 우연 보정 결과가 아니라 그 전의 그룹 교집합 기록입니다. 두 방식은 목적과 출력의 단위가 다릅니다.
따라서 교차표만 보고 AMI가 얼마나 나올지 직감으로 확정하지 않습니다. 기준 그룹이 아주 크거나 예측 군집 수가 바뀌면 표의 크기와 각 칸의 분포도 달라지므로 같은 표본 집합과 같은 평가 조건에서 별도로 점수를 계산해야 합니다.
비교 정리: 교차 집계표는 사례별 겹침, 쌍 혼동 행렬은 표본 쌍의 같은-군집 여부, 분류 혼동 행렬은 클래스 정답 비교, AMI는 보정된 정보량 점수입니다.
실전에서는 어디에 쓰이나요?
문의·문서 군집의 섞인 주제를 찾습니다
사람이 분류한 문의 주제와 AI가 묶은 문서의 군집 번호를 같은 문서 ID로 연결합니다. 행에서 배송 문의가 여러 군집으로 나뉘었다면 표현의 차이인지, 모델이 놓친 공통 특징인지 해당 문서를 엽니다. 예측 열에서 환불과 배송이 함께 많다면 주제 간 경계가 흐린 표본을 확인합니다.
표본의 양이 많아 교차표가 커지면 모든 칸을 훑는 대신 중요한 기준 그룹의 행과 여러 그룹이 섞인 예측 열을 고릅니다. scikit-learn 사용자 안내도 군집이 많아지면 행렬의 해석이 어려워지고 표 자체가 최적화할 단일 점수는 아니라고 명시합니다.
이미지 군집의 라벨 불일치를 검사합니다
이미지 임베딩을 묶은 뒤 사람이 확인한 이미지 종류와 군집 라벨을 교차합니다. 중복 이미지가 한 종류를 지나치게 크게 만드는지, 소수 클래스가 큰 예측 군집 안에 흡수됐는지 표와 사례를 함께 살핍니다.
검수된 클래스가 없다면 두 모델의 군집 결과를 교차해 재현성을 살펴볼 수 있습니다. 다만 두 결과가 비슷하다는 사실만으로 실제 사진 분류가 정확하다는 보장은 없으며, 군집별 이미지 표본을 직접 확인해야 합니다.
표를 확인할 때 어떤 순서로 점검하나요?
1. 표본 ID와 포함 정책을 고정합니다
기준 라벨과 예측 라벨을 원본 표본 ID로 결합합니다. 빠진 문서, 중복 문서, 검수 미완료 문서가 어느 배열에 있는지 확인한 뒤 비교할 공통 집합을 정합니다. 이 단계에서 두 배열의 같은 위치가 같은 사례인지 다시 검사합니다.
미배정 표본을 제외할지 하나의 라벨로 넣을지도 미리 정합니다. 서로 다른 모델이 노이즈를 다르게 표시할 수 있으므로 같은 정책을 쓰지 않으면 표의 행과 열을 비교하기 어렵습니다.
2. 합계와 쪼개짐·섞임을 따로 봅니다
모든 칸의 합이 비교 대상 표본 수와 같아야 합니다. 기준 그룹별 행 합계와 예측 군집별 열 합계도 각각 원본에서 센 사례 수와 대조합니다. 숫자가 어긋나면 모델 성능을 평가하기 전에 자료 결합부터 바로잡습니다.
행이 여러 열에 퍼졌는지와 열에 여러 행이 모였는지를 각각 확인합니다. 하나의 큰 칸에 시선이 쏠려 드문 그룹의 오류가 묻히지 않도록 작은 행과 열의 사례도 따로 열어 봅니다.
3. 점수와 실제 사례로 돌아갑니다
교차표의 구조를 확인한 뒤 같은 자료에서 MI·AMI 같은 평가 지표가 필요한지 결정합니다. 임의로 기준 그룹 이름과 군집 번호를 같은 이름으로 맞춰 대각선 합계를 정확도라고 부르지 않습니다. 점수와 표는 서로 보완하되 하나가 다른 하나를 대체하지 않습니다.
같은 군집이 다른 실행에서 새 번호를 받았을 수 있으니 열의 위치보다 어떤 표본들이 함께 들어갔는지 보세요. 마지막에는 섞인 칸에서 실제 문서를 추출해 사람이 확인해야 오류 원인을 알 수 있습니다.
실전 팁: 표본 ID·포함 정책·행열 합계·실제 사례를 기록하면 점수 하나만 남긴 보고보다 재현 가능한 검수가 됩니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 같은 번호를 정답으로 생각하지 않습니다. 기준 그룹 0과 예측 군집 0은 이름만 같을 수 있습니다. 예측 군집 번호를 바꾸면 행렬의 열 순서는 바뀌어도 실제 군집 구성은 그대로입니다. 대각선에만 의미를 부여하지 마세요.
둘째, 집계 단위를 혼동하지 않습니다. 한 칸의 값은 표본 수입니다. 쌍 혼동 행렬의 셀은 표본 두 개의 관계를 세므로 같은 숫자라도 TP·FP로 바로 옮겨 읽을 수 없습니다. 필요한 질문에 맞는 표를 골라야 합니다.
셋째, 보정값을 넣은 표를 원본 건수라고 부르지 않습니다. scikit-learn의
eps
옵션은 모든 칸에 값을 더합니다. 이 설정으로 나온 부동소수점 칸을 실제 문서 건수라고 소개하지 말고, 원래 정수 집계와 구분해 보관하세요.
넷째, 희소 옵션과 보정 옵션을 동시에 쓰지 않습니다. 같은 API 문서는
sparse=True
와
eps
를 함께 쓰면 오류가 난다고 명시합니다. 군집 수가 많아 희소 행렬을 원할 때는 입력과 옵션을 확인해야 합니다.
다섯째, 표를 단일 성능 지표로 쓰지 않습니다. 작은 군집이 많아지면 사람이 전체 행렬을 읽기 어려워집니다. 같은 평가 표본에서 적절한 지표와 주요 오류 사례를 같이 두고, 비교 집합이 달라졌다면 과거 표의 숫자와 직접 겨루지 않습니다.
주의: 라벨 번호, 표본 순서, 집계 단위와 보정 옵션이 달라지면 같은 이름의 표도 다른 질문에 답할 수 있습니다.
자주 묻는 질문
Q1. 군집 교차 집계표가 혼동 행렬과 같은가요?
두 표 모두 두 라벨의 교차 빈도를 세지만 군집 교차표는 두 분할의 군집 수가 달라도 만들 수 있습니다. 분류 혼동 행렬처럼 같은 번호의 행과 열을 자동으로 정답 칸으로 읽지 않습니다.
Q2. 정답 라벨이 없으면 만들 수 없나요?
같은 표본에 대한 두 가지 군집 결과를 교차해 만들 수 있습니다. 이때는 둘 사이의 일치 구조만 보여 주며 어느 결과가 옳은지는 알려 주지 않습니다.
Q3. 행과 열의 숫자를 모두 더하면 무엇이 나오나요?
각 표본을 한 번씩 세고 제외된 사례가 없다면 비교에 사용한 표본 수가 나옵니다. 합계가 다르면 배열 순서나 표본 누락·중복·보정 옵션을 확인합니다.
Q4. 예측 군집 번호를 바꾸면 평가가 달라지나요?
같은 사례를 같은 묶음에 두고 번호만 바꾸면 열의 배치만 달라집니다. MI처럼 라벨 값의 순열에 영향을 받지 않는 지표의 점수는 변하지 않습니다.
Q5. 이 표만으로 가장 좋은 군집 수를 고를 수 있나요?
표에는 겹침의 분포가 있지만 최적 군집 수를 알려 주는 단일 점수는 없습니다. 그룹별 실패 사례와 작업 목적을 보고 별도의 평가 지표도 함께 확인하세요.
출처
마무리
군집 교차 집계표는 같은 표본의 기준 그룹과 예측 군집을 교차해 각 겹침의 표본 수를 기록합니다. 행을 읽으면 한 기준 그룹이 얼마나 갈라졌는지, 열을 읽으면 여러 기준 그룹이 하나의 예측 군집에 얼마나 섞였는지 알 수 있습니다.
가장 먼저 표본 ID와 라벨 순서를 맞추고 행·열의 합계를 원본과 대조하세요. 이후 실제 사례를 확인하고 필요한 점수를 따로 계산하면 표가 보여 주는 오류 구조와 성능 지표를 혼동하지 않을 수 있습니다.
