조정 상호정보량(Adjusted Mutual Information, AMI)이란? AI에서 군집 일치도의 우연을 보정하는 지표
TL;DR
조정 상호정보량(AMI)은 두 군집 분할이 공유하는 정보에서 우연히 생길 몫을 보정한 외부 평가 지표입니다. 같은 표본을 묶은 두 결과의 일치도를 비교하며, 이름만 다른 동일한 분할은 1점입니다. 무작위 분할은 평균적으로 0 부근이고 음수가 나올 수도 있습니다. 정답 라벨이 없더라도 두 분할은 비교할 수 있지만, 점수 하나만으로 군집의 실용성은 판정할 수 없습니다.
핵심 3줄 요약
- 핵심 1
두 분할의 공유 정보를 비교합니다. 표본마다 두 라벨이 있어야 하며 라벨 숫자 자체는 점수의 뜻이 아닙니다. - 핵심 2
우연한 일치를 보정합니다. 군집이 많다는 이유만으로 상호정보량이 높아지는 문제를 줄입니다. - 핵심 3
1은 완전 일치, 무작위는 평균 0 근처입니다. 음수도 가능하고 표본·군집 수·설정을 맞춰 비교해야 합니다.
이 글에서 다룰 내용
- AMI의 한 문장 정의
- 같은 문서들을 서로 다르게 묶은 쉬운 예시
- 공유 정보와 우연 보정의 작동 방식
- MI·NMI·V-측도·ARI와의 차이
- 문서 군집과 모델 비교에서 쓰는 방법
- 라벨·표본·군집 수와 계산 비용의 주의점
- AI 초보자가 자주 묻는 질문
조정 상호정보량을 한 문장으로 정의하면 무엇인가요?
조정 상호정보량(Adjusted Mutual Information, AMI)은 같은 표본에 부여한 두 군집 라벨 사이의 상호정보량에서 우연한 일치의 기대값을 반영해 일치도를 비교하는 지표입니다. 정답 클래스와 예측 군집을 비교할 수도 있고, 같은 데이터에 적용한 두 군집화 결과를 비교할 수도 있습니다.
상호정보량은 첫 번째 분할을 알았을 때 두 번째 분할에 대해 얼마나 더 알게 되는지 나타냅니다. 두 분할이 표본을 비슷하게 묶었다면 공유 정보가 큽니다. 다만 군집 수가 많아지면 실제로 더 의미 있게 묶지 않아도 상호정보량이 커질 수 있어, AMI는 무작위 일치에 해당하는 기대값을 고려합니다.
scikit-learn의 adjusted_mutual_info_score는 두 라벨 배열을 입력받습니다. adjusted는 백분율 변환이 아니라 우연한 일치에 대한 보정을 뜻합니다.
한 줄 정리: AMI는 같은 표본을 두 번 나눈 결과에서 우연히 겹칠 몫을 감안해 공유된 정보를 비교합니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 고객 문의를 배송, 환불, 결제 관련 묶음으로 나눴다고 가정해 보겠습니다. 상담원이 붙인 주제 라벨과 군집 모델의 예측 라벨을 문의 ID별로 나란히 놓습니다. 모델이 배송 문의를 한 묶음에, 환불 문의를 다른 묶음에 모았다면 두 분할 사이의 공유 정보가 커집니다.
상담원이 배송을 1번, 모델이 같은 묶음을 7번이라고 불러도 표본의 묶음 관계가 같으면 일치도는 완전합니다. 라벨 번호를 먼저 맞출 필요는 없습니다.
반대로 모델이 거의 모든 문의를 따로 떼어 많은 작은 군집을 만들었다고 상상해 보세요. 단순한 공유 정보만 보면 우연히 겹치는 부분도 점수에 들어갈 수 있습니다. AMI는 두 분할의 군집 크기를 고려한 무작위 일치의 기대값을 빼고 비교하므로, 이런 상황에서 점수를 읽는 기준이 달라집니다.
쉬운 예시: 답의 번호가 달라도 같은 문의들이 함께 묶였는지를 보고, 무작위로 나눠도 생겼을 겹침은 따로 감안합니다.
왜 AI에서 조정 상호정보량이 중요한가요?
군집 수가 달라질 때 무작위 일치의 영향을 살핍니다
모델 두 개를 비교할 때 한쪽은 소수의 큰 군집을 만들고 다른 쪽은 많은 작은 군집을 만들 수 있습니다. 정규화 상호정보량(NMI)은 값의 척도를 맞추지만 우연한 일치를 보정하지 않습니다. scikit-learn의 평가 예제는 표본 수에 비해 군집이 많으면 무작위로 만든 라벨에도 MI나 NMI의 기대 점수가 0보다 커질 수 있음을 보여 줍니다.
AMI는 이러한 무작위 기준을 반영합니다. 따라서 군집 수가 다른 후보를 비교할 때 MI나 NMI의 값만 보고 품질이 올랐다고 단정하는 위험을 줄입니다. 그렇다고 AMI가 군집 수 자체를 고르는 만능 규칙은 아닙니다. 너무 작은 군집과 도메인에 쓸모없는 분할은 별도로 확인해야 합니다.
정답이 있는 외부 평가와 두 모델 비교에 씁니다
문서에 사람이 분류한 주제 라벨이 있다면 그 라벨과 모델의 군집 배정을 비교합니다. 참조 라벨이 없다면 같은 표본에 대해 다른 알고리즘이나 설정이 만든 두 분할을 비교할 수도 있습니다. 어느 경우든 입력은 동일한 표본 순서로 정렬된 두 라벨 배열이어야 합니다.
모델 간 AMI가 높아도 묶음의 정답 여부나 업무 효용은 알 수 없습니다. 정답 라벨과 비교했는지 모델끼리 비교했는지 기록하세요.
군집 번호가 바뀌어도 일치도를 유지합니다
클러스터링은 실행할 때마다 동일한 묶음에 다른 번호를 줄 수 있습니다. AMI는 두 라벨의 값 자체가 아니라 각 표본의 소속 관계를 사용하므로 라벨 이름을 서로 바꿔도 점수가 달라지지 않습니다. 두 입력 분할을 맞바꿔도 점수가 같습니다.
반복 실험에서 군집 ID가 달라도 비교할 수 있습니다. 다만 양쪽 배열의 표본 순서가 어긋난 실수는 자동으로 알아채지 못합니다. 행 ID를 먼저 확인하세요.
핵심 인사이트: AMI는 우연 보정이 필요한 외부 비교에 유용하지만, 두 분할이 같은 데이터를 어떤 순서로 담았는지 확인하는 과정까지 대신하지는 않습니다.
AMI 점수는 어떻게 계산하고 해석하나요?
먼저 두 분할의 상호정보량을 구합니다
같은 표본을 두 가지 방식으로 나누고, 각 군집 쌍에 함께 속한 표본이 얼마나 되는지 집계합니다. 이 교차표에서 두 분할이 공유하는 정보인 MI를 계산합니다. 첫 번째 분할만 보았을 때의 정보와 두 번째 분할까지 알았을 때의 정보를 비교하는 셈입니다.
라벨 번호를 맞추는 대신 같은 표본이 두 분할에서 어느 묶음에 들어갔는지 살펴봅니다. 원본 벡터 간 거리를 다시 재는 과정과도 구분해야 합니다.
무작위로도 생길 상호정보량의 기대값을 뺍니다
scikit-learn 문서의 AMI 식은 MI에서 기대 MI를 빼고, 정규화에 쓰는 두 분할의 엔트로피 평균에서도 같은 기대 MI를 뺀 비율입니다. 이때 우연에 대한 기대값은 주어진 분할 크기를 고려하는 무작위 기준과 연결됩니다. 아무 데이터에나 고정된 보정 상수를 더하고 빼는 방식은 아닙니다.
Vinh, Epps, Bailey의 논문은 군집 수가 표본 수에 비해 많은 상황에서 정보 이론 지표의 우연 보정이 중요하다고 강조합니다. 기대값 보정이 있으므로 무작위 분할의 점수는 평균적으로 0 근처지만, 개별 무작위 실험의 점수를 반드시 0으로 고정한다는 뜻은 아닙니다.
1과 0과 음수의 의미를 구분합니다
동일한 분할은 군집 번호만 바뀌어도 AMI 1입니다. 독립적인 무작위 라벨의 기대 AMI는 0 부근이고, 우연 기준보다 낮으면 음수가 나올 수도 있습니다. 따라서 모든 결과를 0과 1 사이의 확률이라고 해석하면 틀립니다.
scikit-learn API는 AMI가 위쪽으로 1에 제한된다고 설명합니다. 실제 점수의 작은 차이를 곧바로 업무 성과의 크기나 분류 정확도 차이로 옮기지 마세요. 같은 데이터셋, 같은 평가 절차, 같은 정규화 옵션을 놓고 비교할 때 의미가 큽니다.
점수 읽기: 1은 분할의 완전 일치, 무작위의 기대값은 0 부근입니다. 음수는 오류 코드가 아니라 우연 기준보다 낮은 일치를 뜻할 수 있습니다.
AMI와 헷갈리는 용어는 무엇이 다른가요?
상호정보량(MI)과 AMI의 차이
MI는 두 분할 사이에 공유된 정보량입니다. AMI는 MI에서 우연한 공유 정보의 기대값을 반영해 정규화합니다. 따라서 MI가 크다는 사실만으로 두 군집화가 우연보다 더 잘 맞는다고 결론 내릴 수 없습니다. 특히 군집 수가 크게 다르면 두 값의 질문 자체가 다릅니다.
정규화 상호정보량(NMI)과 AMI의 차이
NMI는 MI를 두 분할의 엔트로피로 정규화해 일반적으로 0에서 1 사이의 값으로 표현합니다. 그러나 scikit-learn 문서는 NMI가 우연에 대한 보정은 하지 않는다고 명시합니다. AMI는 이 우연 기준을 반영하므로 음수가 가능하다는 점도 다릅니다.
정규화에 어떤 평균을 쓰는지에 따라서도 점수가 달라질 수 있습니다. scikit-learn의 AMI와 NMI API에는 average_method 옵션이 있고 기본값은 arithmetic입니다. 서로 다른 실험의 결과를 숫자만 보고 비교하지 말고 정규화 방식도 함께 적습니다.
V-측도(V-measure)와 AMI의 차이
V-측도는 동질성과 완전성의 조화평균으로 두 분할의 일치도를 봅니다. scikit-learn 문서는 V-측도가 산술평균 방식으로 정규화한 NMI와 수치가 같다고 설명합니다. 따라서 그 설정에서 V-측도와 NMI를 서로 독립된 두 근거로 취급하면 안 됩니다.
AMI는 공유 정보의 우연한 몫까지 보정하는 지표입니다. V-측도를 알고 싶다면 군집마다 클래스가 얼마나 섞였는지와 하나의 클래스가 얼마나 흩어졌는지를 먼저 봅니다. AMI를 알고 싶다면 그 일치도가 무작위 기준을 고려하고도 남는지를 봅니다.
조정 랜드 지수(ARI)와 AMI의 차이
ARI도 무작위 일치를 보정하지만 표본 두 개가 같은 군집에 속하는지에 관한 쌍 관계를 바탕으로 합니다. AMI는 두 분할이 공유한 정보량과 엔트로피를 바탕으로 합니다. 보정된 점수라는 공통점만으로 계산 근거나 서로 다른 모델의 순위가 언제나 같다고 생각해서는 안 됩니다.
참조 라벨이 있고 군집의 구조를 다각도로 평가하려면 두 지표를 함께 볼 수 있습니다. 다만 어느 지표든 표본 순서가 어긋나거나 참조 라벨의 품질이 나쁘면 숫자가 멀쩡해 보여도 해석이 무너집니다.
비교 정리: MI는 공유 정보, NMI는 그 척도의 정규화, AMI는 우연 보정을 더한 정보 기반 일치도입니다. ARI는 표본 쌍을 기준으로 우연을 보정합니다.
실전에서는 어디에 쓰이나요?
문서 군집화의 주제 라벨 비교
주제별로 검수된 문서가 있다면 그 라벨과 모델이 만든 군집 라벨을 같은 문서 ID 순서로 비교합니다. 제목 몇 개만 보고 군집의 좋고 나쁨을 정하지 말고 실제로 함께 묶인 문서를 열어 보세요. 하나의 주제가 서로 다른 표현으로 여러 군집에 갈라졌다면 결과 해석이 필요합니다.
군집 수가 다른 후보 모델 평가
K-means에서 K를 바꾸거나 여러 군집화 알고리즘을 시험할 때 후보들의 AMI를 같은 참조 라벨에 대해 계산합니다. 군집 수만 늘어난 결과의 NMI가 높게 나올 가능성을 의식하되, AMI 최고점이 업무상 적절한 군집 수라고 자동 확정하지 않습니다. 작은 군집의 사례와 쓰임새를 함께 살핍니다.
서로 다른 라벨러나 실험 결과 비교
두 사람이 같은 표본에 붙인 라벨을 두 분할로 보고 비교할 수 있습니다. 정답이 없는 상황에서 모델 A와 모델 B가 같은 표본을 비슷하게 묶었는지도 확인합니다. 높은 일치도가 두 사람이나 두 모델 모두 옳다는 결론은 아닙니다. 견해가 갈린 표본을 다시 검토할 실마리로 씁니다.
실전 팁: 점수 옆에 비교 대상 두 개, 표본 수, 각 분할의 군집 수, 사용한 라이브러리와 average_method를 함께 기록하면 나중에 같은 실험을 읽기 쉽습니다.
AMI를 계산할 때 어떤 순서로 확인하나요?
1. 같은 표본의 두 라벨 배열을 준비합니다
원본 표본 ID를 기준으로 두 라벨을 결합합니다. 길이만 같은 배열은 안전하지 않습니다. 한쪽에서 빠진 문서가 있다면 다른 문서의 라벨과 잘못 짝지어집니다. 두 열을 표본 ID별로 확인하고 결측 라벨을 어떻게 다룰지 정한 뒤 비교하세요.
2. 비교 대상이 정답인지 다른 모델인지 적습니다
사람이 검수한 라벨이면 정답에 대한 외부 평가라는 해석이 가능합니다. 두 자동 모델만 놓았다면 두 결과 사이의 합치도를 본 것입니다. 후자에서 점수가 높다고 정확도라고 부르지 않습니다. 참조 라벨 자체의 기준과 불일치 사례도 함께 남깁니다.
3. 군집 수와 군집 크기를 함께 읽습니다
각 분할이 만든 군집의 개수와 너무 작은 군집이 몰린 정도를 확인합니다. 거의 모든 표본이 따로 분리됐거나 한 군집에만 들어간 경우, 점수 하나로 유용성을 말하기 어렵습니다. 실제 예시를 살펴보고 군집을 만든 목적과 맞는지도 점검합니다.
4. 옵션과 계산 시간을 고정해 비교합니다
scikit-learn의 adjusted_mutual_info_score에서 average_method는 정규화 분모에 쓰이는 평균을 정합니다. 기본값은 arithmetic이며 다른 방식도 선택할 수 있습니다. 같은 실험끼리 방법을 통일합니다. 공식 API는 AMI 계산이 ARI 같은 일부 다른 지표보다 상당히 느릴 수 있다고 경고합니다.
5. 점수와 실제 표본 사례를 같이 남깁니다
AMI 옆에 데이터 범위와 라벨 기준을 함께 적습니다. 높은 점수에도 중요한 소수 클래스가 흩어진다면 해당 사례를 살핍니다. 새 데이터가 들어오면 평가 집합부터 확인합니다.
한 줄 정리: 같은 표본 확인, 비교 목적 명시, 군집 분포 확인, 옵션 고정, 실제 사례 검토 순서로 점수를 읽습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 표본 순서를 섞지 않습니다. AMI는 두 배열의 같은 위치가 동일한 표본이라고 가정합니다. 표본 ID로 먼저 정렬하거나 결합하지 않으면 점수가 낮아져도 모델 문제인지 입력 문제인지 구분하기 어렵습니다.
둘째, 참조 라벨이 없는 모델 간 일치를 정확도라고 부르지 않습니다. 두 모델이 똑같이 부적절한 묶음을 만들 수도 있습니다. 품질을 판단하려면 실제 문서와 평가 목적을 함께 확인하세요.
셋째, 0을 확률 0퍼센트나 무조건 실패로 읽지 않습니다. 무작위 분할의 기대 AMI가 0 부근이라는 설명과 개별 점수가 정확히 0이라는 주장은 다릅니다. 음수도 계산 오류라는 뜻은 아닙니다.
넷째, 정규화 설정을 섞지 않습니다. average_method가 다른 결과나 표본 구성이 달라진 실험의 숫자를 같은 선에서 비교하지 마세요. 라이브러리와 설정, 평가 데이터의 범위를 함께 기록합니다.
다섯째, 계산 비용을 무시하지 않습니다. 공식 scikit-learn API는 AMI가 ARI보다 상당히 느릴 수 있다고 안내합니다. 표본과 군집이 큰 반복 평가라면 측정 시간을 확인하고, 빠른 예비 검토와 최종 정보 기반 평가의 순서를 정하는 편이 좋습니다.
주의: AMI는 군집 일치도를 읽는 도구입니다. 개인정보의 안전, 문서 내용의 타당성, 소수 집단의 오류를 자동 검증하지는 않습니다.
자주 묻는 질문
Q1. AMI는 정답 라벨이 있어야만 계산하나요?
아닙니다. 같은 표본을 두 번 나눈 라벨 배열이면 계산할 수 있습니다. 다만 참조 정답과 비교한 점수인지, 두 모델의 합치도를 본 점수인지는 구분해야 합니다. 정답이 없을 때 두 모델의 높은 일치도는 정확도를 보증하지 않습니다.
Q2. 군집 번호가 서로 달라도 점수가 같나요?
네. 한 결과의 0번 군집을 다른 결과에서 7번이라고 불러도 표본이 같은 방식으로 묶였으면 일치도는 변하지 않습니다. 단, 배열의 같은 위치에는 반드시 같은 표본이 있어야 합니다.
Q3. AMI가 음수면 프로그램 오류인가요?
그렇지 않습니다. scikit-learn 문서는 무작위 분할의 기대 점수가 0 부근이며 AMI가 음수가 될 수 있다고 설명합니다. 먼저 표본 순서와 라벨 구성을 점검하고, 우연 기준보다 낮은 일치가 나온 상황인지 해석하세요.
Q4. NMI와 AMI 중 어느 점수를 보고해야 하나요?
우연한 일치 보정이 평가 목적에 중요하다면 AMI를 고려하세요. NMI는 정규화하지만 우연 보정은 하지 않습니다. 둘 다 제시한다면 계산 옵션과 군집 수, 평가 데이터까지 명시해야 숫자의 차이를 읽을 수 있습니다.
Q5. AMI 1이면 모델이 언제나 좋은 군집을 만든 건가요?
아닙니다. 두 분할이 완전히 같다는 뜻입니다. 참조 라벨 자체가 잘못됐거나 두 모델이 똑같이 쓸모없는 분할을 만들었다면 1점도 업무 품질을 보증하지 않습니다.
Q6. ARI와 AMI는 왜 다른 숫자가 나오나요?
ARI는 표본 쌍의 일치 관계를, AMI는 두 분할이 공유한 정보를 기준으로 우연을 보정합니다. 계산 기준이 다르므로 수치나 모델 순위가 항상 같을 필요는 없습니다.
출처
- scikit-learn, adjusted_mutual_info_score API
- scikit-learn, normalized_mutual_info_score API
- scikit-learn, Clustering performance evaluation
- scikit-learn, Adjustment for chance in clustering performance evaluation
- Vinh, Epps and Bailey (2010), Information Theoretic Measures for Clusterings Comparison, JMLR
마무리
조정 상호정보량은 같은 표본의 두 군집 분할 사이에서 공유된 정보를 비교하되 우연히 생긴 겹침을 보정한 지표입니다. 완전히 같은 분할은 1이고 무작위 일치의 기대값은 0 부근입니다. NMI나 V-측도와 달리 우연 보정을 포함하며, ARI와는 계산에 쓰는 정보가 다릅니다.
처음 AMI를 사용한다면 점수부터 계산하기보다 표본 ID를 맞추고 비교 대상이 정답인지 다른 모델인지 적어 두세요. 군집 수와 크기, 정규화 방식, 실제 문서 사례까지 함께 보면 숫자 하나로는 놓치기 쉬운 문제를 찾을 수 있습니다.
