V-측도(V-measure)란? AI에서 군집의 동질성과 완전성을 함께 평가하는 지표
TL;DR
V-측도는 정답 클래스와 예측 군집을 비교해 동질성과 완전성을 함께 보는 점수입니다. 한 클래스를 여러 군집으로 과하게 쪼개거나 서로 다른 클래스를 한데 섞으면 두 구성 점수 중 하나가 떨어집니다. 다만 우연한 일치를 보정하지 않으므로, 군집 수와 표본 수가 바뀌는 실험에서는 점수 하나만 보고 우열을 확정하지 않습니다.
핵심 3줄 요약
- 핵심 1
동질성은 섞임을 봅니다. 하나의 군집에 서로 다른 정답 클래스가 얼마나 섞였는지 확인합니다. - 핵심 2
완전성은 쪼개짐을 봅니다. 같은 정답 클래스의 표본이 여러 군집에 흩어졌는지 확인합니다. - 핵심 3
두 값을 함께 읽습니다. V-측도는 두 점수의 조화평균이며 우연한 일치를 보정하지 않습니다.
이 글에서 다룰 내용
- V-측도의 한 문장 정의와 네 건의 문의 예시
- 정답 클래스와 예측 군집을 함께 보는 이유
- 동질성·완전성·조화평균의 작동 방식
- ARI·실루엣·정규화 상호정보량과의 차이
- 문서 군집화와 모델 비교에서의 사용처
- 라벨 정렬, 군집 수, 우연 보정을 확인하는 순서
- 자주 묻는 질문과 출처
V-측도를 한 문장으로 정의하면 무엇인가요?
V-측도(V-measure)는 같은 표본의 정답 클래스와 예측 군집을 대조하여 동질성과 완전성을 각각 구한 뒤, 두 점수의 조화평균으로 합치는 외부 군집 평가 지표입니다. 원 논문은 조건부 엔트로피를 써서 두 기준을 정의합니다.
군집화 모델은 정답을 입력받지 않고 데이터를 묶을 수 있습니다. 그러나 평가할 때는 표본별 정답 클래스가 별도로 있어야 V-측도를 계산할 수 있습니다. 예측한 군집 번호 자체가 정답 번호와 똑같을 필요는 없습니다. 번호만 바뀐 같은 분할이라면 점수도 같습니다.
값은 0에서 1 사이이며 1이면 두 분할이 완전히 일치합니다. 0에서 1 사이의 중간 점수를 무조건 정확도나 확률처럼 해석해서는 안 됩니다. 점수는 표본에 붙인 두 라벨 분할의 관계를 나타내며, 실제 업무의 품질은 별도의 확인이 필요합니다.
한 줄 정리: V-측도는 군집이 정답 클래스를 얼마나 덜 섞고 덜 쪼개는지를 한 점수로 묶어 보여줍니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 배송 문의 두 건과 환불 문의 두 건을 주제별로 묶는다고 생각해 보겠습니다. 평가를 위한 정답 클래스는 배송·배송·환불·환불 순서입니다. 이 네 건에 같은 순서로 예측 군집 번호를 붙여 두 목록을 비교합니다.
- 정답: 배송, 배송, 환불, 환불. 예측: A, A, B, B라면 두 그룹이 정답과 같은 분할입니다.
- 쪼갠 결과: A, A, B, C라면 각 군집은 한 클래스만 담지만 환불 문의가 둘로 갈라집니다.
- 합친 결과: A, A, A, A라면 같은 클래스는 흩어지지 않지만 한 군집에 두 클래스가 섞입니다.
첫 결과는 A와 B라는 이름을 배송과 환불로 바꿔도 V-측도 1입니다. 둘째 결과에서는 동질성이 유지되고 완전성이 떨어집니다. 셋째 결과는 완전성만으로는 좋게 보일 수 있지만 동질성이 낮아 V-측도가 이를 반영합니다. 이 차이를 알아야 단일 숫자가 놓치는 실패 형태를 찾습니다.
쉬운 예시: 같은 주제의 문의를 두 서랍에 나눠 넣으면 쪼개짐이 문제이고, 서로 다른 주제를 한 서랍에 몰아넣으면 섞임이 문제입니다.
왜 AI에서 V-측도가 중요한가요?
정답이 있는 군집 평가에서 오류 유형을 구분합니다
데이터의 실제 주제나 품목 라벨을 알고 있을 때 군집화가 얼마나 가까운 분할을 만드는지 비교할 수 있습니다. 정답 클래스별 분포와 군집별 분포를 함께 놓으면 섞임과 쪼개짐 가운데 어느 쪽이 문제인지 진단하기 쉽습니다. V-측도 하나뿐 아니라 두 구성 점수도 함께 기록하는 이유입니다.
원 논문은 문서 군집과 음성의 피치 액센트 유형 군집을 적용 사례로 제시합니다. 실무에서도 정답 라벨을 평가에만 사용하고, 실제 군집을 만드는 입력과 구분해야 합니다. 모델에 평가 정답이 새어 들어갔다면 높은 점수는 모델의 일반화 성능을 설명하지 못합니다.
군집 번호가 달라도 분할을 비교합니다
군집 A와 B를 숫자 1과 0으로 바꿔 표시하는 일은 결과의 의미를 바꾸지 않습니다. scikit-learn의 V-측도는 라벨의 절대값에 영향받지 않습니다. 그래서 번호를 임의로 부여하는 K-means와 다른 군집화 결과를 정답 분할에 대조할 수 있습니다.
반면 표본의 순서는 중요합니다. 정답의 첫 라벨과 예측의 첫 라벨이 같은 표본을 가리켜야 합니다. 데이터 프레임을 따로 정렬하다가 예측 배열의 순서만 바뀌면, 정상적인 군집이라도 엉뚱한 짝을 비교하게 됩니다.
핵심 인사이트: 높은 V-측도는 두 분할의 일치가 높다는 뜻이지, 새 데이터에서도 언제나 같은 점수가 나오거나 군집에 쓸모 있는 이름이 자동으로 붙는다는 뜻은 아닙니다.
동질성과 완전성은 어떻게 작동하나요?
동질성은 한 군집 안의 정답 클래스를 봅니다
동질성은 각 예측 군집에 서로 다른 정답 클래스가 섞이지 않을수록 높습니다. 배송 문의만 든 군집과 환불 문의만 든 군집이면 이 조건을 만족합니다. 같은 배송 문의를 두 개의 배송 전용 군집으로 나눠도 동질성만은 높게 나올 수 있습니다.
원 논문과 scikit-learn 가이드는 정답 클래스의 엔트로피를 군집을 알고 난 뒤의 조건부 엔트로피와 비교합니다. 어려운 수식을 외우기보다 군집 번호를 알면 그 안의 정답 클래스를 얼마나 좁혀 알 수 있는지로 읽으면 됩니다. 정답이 섞인 군집에서는 불확실성이 남습니다.
완전성은 한 클래스의 표본이 흩어지는지 봅니다
완전성은 동일한 정답 클래스의 표본이 한 예측 군집에 모이면 높습니다. 배송 문의가 두 군집으로 나뉘면 낮아집니다. 모든 표본을 하나로 합치면 정답 클래스 각각은 흩어지지 않으므로 완전성만 높게 보일 수 있습니다. 이때 동질성은 떨어지므로 두 값을 반드시 함께 봐야 합니다.
완전성 계산은 군집 라벨의 불확실성을 정답 클래스를 알 때 얼마나 줄일 수 있는지 살핍니다. 동질성과 완전성은 방향이 있는 별도 지표입니다. 두 배열의 순서를 뒤집으면 일반적으로 각각의 의미가 바뀝니다.
조화평균으로 한쪽의 낮은 값을 반영합니다
기본 설정의 V-측도는 동질성과 완전성의 조화평균입니다. 하나만 높고 다른 하나가 낮으면 두 값의 산술평균보다 낮은 쪽의 영향을 강하게 받습니다. scikit-learn 문서의 네 표본 예시에서도 일부 클래스를 불필요하게 쪼갠 경우 V-측도는 완전한 일치의 1보다 낮습니다.
scikit-learn 함수의
beta=1.0
은 기본 설정입니다. 1보다 큰 베타는 완전성의 비중을, 1보다 작은 베타는 동질성의 비중을 높입니다. 비교 실험에서는 베타 값을 고정하고 함께 기록해야 서로 다른 설정에서 나온 숫자를 같은 잣대로 읽는 오류를 막습니다.
계산을 읽는 법: 정답 클래스 분포에서 동질성을, 예측 군집의 분할에서 완전성을 확인한 뒤 두 점수를 함께 적으세요. 하나의 합산 점수만으로 실패 원인을 설명하지 마세요.
V-측도와 헷갈리는 용어는 무엇이 다른가요?
동질성·완전성 각각과 V-측도의 차이
동질성은 서로 다른 클래스를 섞는지, 완전성은 같은 클래스를 흩뜨리는지에 초점을 맞춥니다. V-측도는 두 기준을 결합합니다. 한 기준만 충족하는 극단적인 결과를 좋은 군집으로 오해하지 않게 돕지만, 두 구성 점수를 삭제하고 하나로 대체하라는 뜻은 아닙니다.
조정 랜드 지수(ARI)와의 차이
ARI도 정답 분할과 예측 분할을 비교하지만 표본 쌍이 같은 군집에 묶였는지 등을 보고 우연한 일치를 보정합니다. V-측도는 엔트로피를 바탕으로 동질성과 완전성을 묶고, 우연 보정은 하지 않습니다. 표본이 적거나 군집을 많이 늘린 실험이라면 ARI를 함께 확인하는 편이 안전합니다.
기존 Glossary의 ARI 글은 표본 쌍의 일치와 우연 보정에 답합니다. 여기서 다루는 질문은 하나의 클래스가 여러 군집으로 흩어졌는지와 군집 안에서 클래스가 섞였는지를 분리해 해석하는 방법입니다. 결과가 비슷해 보여도 주된 계산 관점과 진단 질문이 다릅니다.
실루엣 점수와의 차이
실루엣 점수는 정답 클래스 없이도 표본 간 거리와 군집 내외의 가까움을 바탕으로 군집의 응집과 분리를 평가합니다. V-측도는 정답 라벨이 있어야 합니다. 정답 라벨에 잘 맞는 군집과 특징 공간에서 멀리 떨어지는 군집은 같은 의미가 아니므로 두 점수가 엇갈릴 수 있습니다.
정규화 상호정보량(NMI)과의 차이
scikit-learn 문서에 따르면 기본 V-측도는 정규화 상호정보량을 산술평균 방식으로 정규화한 경우와 수치가 같습니다. 따라서 해당 설정의 NMI를 전혀 다른 독립적인 검증 증거처럼 두 번 합산하면 안 됩니다. 정규화 옵션과 가중치 설정을 밝히고, 조정 상호정보량(AMI)처럼 우연 보정 여부가 다른 지표와 혼동하지 마세요.
비교 정리: V-측도는 동질성과 완전성의 균형, ARI는 우연을 보정한 쌍 일치, 실루엣은 정답 없는 거리 기반 군집 구조에 초점을 맞춥니다.
실전에서는 어디에 쓰이나요?
주제별 문서 군집의 분할을 점검합니다
사람이 일부 문서에 주제 라벨을 붙인 검증 세트가 있으면 모델이 만든 문서 그룹과 대조합니다. 서로 다른 주제가 한 그룹에 섞이면 동질성, 하나의 주제가 여러 그룹에 퍼지면 완전성을 먼저 봅니다. 문서 수가 늘어도 평가용 라벨과 예측 라벨이 같은 문서를 가리켜야 합니다.
서로 다른 군집 설정을 같은 세트에서 비교합니다
같은 평가 표본과 동일한 정답 라벨을 유지한 채 군집 수나 특징 표현을 바꿔 비교할 수 있습니다. 지표가 올랐더라도 불필요하게 많은 군집을 만든 건 아닌지 군집 크기와 동질성·완전성의 변화를 같이 기록합니다. 군집 수를 무조건 늘리면 좋은 점수라는 식으로 읽지 않습니다.
다른 외부 평가 지표와 결과를 나란히 읽습니다
ARI처럼 우연을 보정한 점수와 V-측도를 나란히 적으면 같은 분할에서 서로 다른 측면을 볼 수 있습니다. 그러나 두 지표의 숫자 범위와 기준이 다르므로 절댓값만 비교해 어느 점수가 더 좋다고 말하지 않습니다. 각 지표에서 같은 실험 간 상대적 변화와 실패 유형을 확인합니다.
실전 팁: 평가 표에는 표본 수, 정답 클래스 수, 예측 군집 수, 동질성, 완전성, V-측도와 ARI를 함께 적어 해석 조건을 남기세요.
어떤 순서로 V-측도를 확인하나요?
1. 평가용 정답과 예측의 표본을 맞춥니다
같은 표본에 대한 정답 라벨과 예측 군집 라벨을 같은 순서로 준비합니다. 결측 라벨이나 제외된 표본이 있다면 두 배열에서 같은 대상을 제외했는지 먼저 확인합니다. 배열의 길이만 같다고 정렬이 맞는 것은 아닙니다.
학습할 때 쓰지 않은 평가 세트를 따로 두면 라벨 누수 위험을 줄일 수 있습니다. 문서 ID처럼 안정적인 키로 두 목록을 병합한 뒤 순서를 확정하고 점수를 계산하세요.
2. 동질성과 완전성을 따로 봅니다
서로 다른 클래스가 섞인 군집과 한 클래스가 여러 군집으로 나뉜 사례를 세어 봅니다. 한쪽이 높고 다른 쪽이 낮으면 전체 V-측도가 비슷해도 수정할 지점은 달라집니다.
군집별 클래스 구성표를 표본 수와 함께 확인하세요. 작은 군집 몇 개가 아주 순수해 보인다는 이유로 나머지 큰 군집의 섞임을 가려서는 안 됩니다.
3. 같은 조건의 점수만 비교합니다
scikit-learn에서는
v_measure_score(labels_true, labels_pred, beta=1.0)
형태로 계산합니다. 정답과 예측의 배열 방향을 유지하고, 베타와 라벨 처리 기준을 실험마다 동일하게 둡니다.
같은 점수라도 표본 수와 정답 클래스 분포, 예측 군집 수가 달라지면 해석은 달라집니다. 결과 숫자만 보고 모델의 일반적인 우수성을 단정하지 않습니다.
4. 우연 보정과 업무 기준을 덧붙입니다
V-측도는 우연한 일치를 보정하지 않습니다. 특히 표본이 적거나 군집을 잘게 나누는 설정에서는 ARI 같은 조정 지표와 비교하고, 일부 문서를 직접 읽어 의미상 자연스러운 묶음인지 확인합니다.
정답 클래스가 아예 없다면 V-측도의 높은 값도 계산할 수 없습니다. 그때는 실루엣 같은 내부 지표와 사례 검토를 별도로 사용하되 정답 일치 점수로 이름 붙이지 마세요.
한 줄 정리: 같은 표본 정렬을 확인하고, 두 구성 점수를 읽고, 고정된 설정에서 비교한 뒤 우연 보정 지표와 실제 사례로 결과를 점검합니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 정답 라벨이 필요한 외부 지표임을 잊지 않습니다. 평가 세트에 정답 클래스가 없다면 V-측도로 군집의 정답 일치도를 구할 수 없습니다. 임의로 만든 군집 번호를 정답이라고 부르면 검증 의미가 사라집니다.
둘째, 우연 보정을 했다고 말하지 않습니다. scikit-learn 사용자 가이드는 무작위 라벨에서도 점수가 항상 0이 되지는 않으며 군집 수가 많으면 문제가 두드러질 수 있다고 설명합니다. ARI나 AMI와 구분하여 보고합니다.
셋째, 한 점수로 모델 전체를 판단하지 않습니다. 같은 V-측도라도 동질성과 완전성의 조합이 다를 수 있습니다. 라벨 품질이 들쭉날쭉하거나 드문 클래스를 검증 세트에서 누락했다면 점수는 그 빈틈을 말해 주지 않습니다.
넷째, 설정과 표본 구성을 고정합니다. 베타 값, 군집 수, 제외한 노이즈 표본과 평가 데이터가 바뀌면 어떤 변화가 점수에 영향을 주었는지 분리하기 어렵습니다. 노이즈를 하나의 군집으로 볼지 제외할지도 비교 전에 정합니다.
다섯째, 동일 표본의 라벨을 정확히 짝짓습니다. 셔플이나 필터링 뒤 정답과 예측의 순서가 달라지면 지표는 잘못된 쌍을 평가합니다. 입력 배열의 표본 식별자를 보존하고 샘플을 직접 대조합니다.
주의: V-측도 1은 사용한 평가 라벨과 군집 분할의 일치를 뜻합니다. 데이터 라벨이 잘못되었거나 새 데이터의 분포가 다르면 그 문제까지 보증하지 않습니다.
자주 묻는 질문
Q1. V-측도는 정답 라벨이 없어도 계산할 수 있나요?
정답으로 쓸 분할이 필요합니다. 두 독립된 라벨 분할의 일치를 비교할 수도 있지만, 어떤 쪽도 정답이라고 보증하지 않는다면 결과를 정답 정확도로 해석하지 마세요. 정답 없이 데이터의 거리만 평가하려면 실루엣 같은 다른 지표를 봅니다.
Q2. 군집 번호가 정답 클래스 번호와 다르면 감점되나요?
아닙니다. 예측 군집 이름이 바뀌어도 같은 표본끼리 묶인 구조가 같다면 점수는 그대로입니다. 번호 일치보다 각 표본이 어떤 그룹에 속했는지가 중요합니다.
Q3. 동질성만 1이면 좋은 군집인가요?
그렇지 않습니다. 정답 클래스의 표본을 아주 작은 순수한 군집으로 많이 쪼개도 동질성은 높을 수 있습니다. 완전성과 군집 수를 함께 확인해야 합니다.
Q4. 모든 표본을 한 군집으로 합치면 어떻게 되나요?
같은 클래스가 흩어지지 않으므로 완전성은 높지만, 서로 다른 클래스가 한 군집에 섞여 동질성은 낮습니다. V-측도는 두 측면을 결합하여 이 결과를 평가합니다.
Q5. V-측도와 정규화 상호정보량은 완전히 다른가요?
scikit-learn의 기본 V-측도는 산술평균 정규화 옵션의 NMI와 같습니다. 다만 다른 정규화 옵션이나 가중치 설정을 쓰면 숫자를 그대로 같은 것으로 취급하지 마세요.
Q6. ARI보다 V-측도가 항상 나은가요?
아닙니다. V-측도는 동질성과 완전성의 진단에 유용하지만 우연 보정이 없습니다. 작은 표본과 많은 군집에서는 ARI를 함께 보고, 무엇을 평가하려는지에 맞춰 지표를 고릅니다.
출처
마무리
V-측도는 정답 클래스와 예측 군집의 관계를 동질성과 완전성으로 나눠 읽는 군집 평가 지표입니다. 군집 안에 다른 클래스가 섞였는지, 같은 클래스가 여러 곳으로 흩어졌는지를 따로 보면 단일 점수 뒤에 숨은 오류가 드러납니다.
평가용 정답을 같은 표본 순서로 맞추고, 두 구성 점수와 군집 수를 함께 기록하세요. 우연 보정이 필요한 비교에는 ARI 같은 조정 지표를 덧붙이고, 실제 문서나 사례를 확인해야 점수가 설명하는 범위를 넘어서지 않습니다.
