폴크스-맬로스 지수(Fowlkes-Mallows Index, FMI)란? AI에서 군집의 표본 쌍 일치를 평가하는 지표
TL;DR
폴크스-맬로스 지수(FMI)는 두 군집 결과가 같은 표본 쌍을 얼마나 비슷하게 묶는지 보는 지표입니다. 같은 군집으로 묶은 쌍의 정밀도와 재현율을 기하평균으로 합칩니다. 0에서 1 사이 값을 내지만 우연에 대한 보정값은 아닙니다. 정답 라벨이나 비교할 다른 군집 결과가 있는지부터 확인해야 합니다.
핵심 3줄 요약
- 핵심 1
표본 하나가 아니라 표본 쌍을 셉니다. 양쪽에서 함께 묶인 쌍이 TP이며 잘못 묶은 쌍과 놓친 쌍도 계산합니다. - 핵심 2
정밀도와 재현율을 함께 봅니다. FMI는 두 값의 기하평균으로, 한쪽만 높고 다른 쪽이 낮으면 점수가 제한됩니다. - 핵심 3
우연 보정 지표는 아닙니다. ARI와 계산 취지가 다르므로 군집 수와 크기가 다른 실험의 원점수를 무작정 비교하지 않습니다.
이 글에서 다룰 내용
- FMI의 한 문장 정의와 평가에 필요한 라벨
- 작은 표본 쌍 예시로 보는 TP·FP·FN
- 정밀도와 재현율의 기하평균을 구하는 순서
- ARI·V-측도·실루엣 점수와의 차이
- 실전 평가 사례와 점검 순서
- 우연 일치·표본 정렬·드문 군집의 주의점
- 자주 묻는 질문 다섯 가지
폴크스-맬로스 지수를 한 문장으로 정의하면 무엇인가요?
폴크스-맬로스 지수(Fowlkes-Mallows Index, FMI)는 두 분할에서 함께 묶인 표본 쌍의 정밀도와 재현율을 기하평균으로 결합한 군집 비교 점수입니다.
scikit-learn의 fowlkes_mallows_score는 같은 표본에 대한 두 라벨 배열을 받습니다. 한쪽에는 정답 클래스를, 다른 쪽에는 모델이 만든 군집 라벨을 넣어 결과를 비교할 수 있습니다. 원래 지수는 두 군집 결과 자체의 유사도를 비교하려는 취지였으므로, 반드시 학습 때 사용한 정답을 요구하는 군집 알고리즘이라는 뜻은 아닙니다.
각 라벨의 숫자는 이름일 뿐입니다. 정답 그룹이 0과 1이고 예측 그룹이 9와 4라도 구성원이 같으면 완전 일치로 평가합니다. 같은 위치에 놓인 두 라벨이 같은 표본을 가리키는지가 핵심이며, 숫자 이름의 일치는 조건이 아닙니다.
한 줄 정리: FMI는 두 분할의 같은-군집 표본 쌍을 비교합니다. 점수가 높을수록 함께 묶는 결정이 비슷합니다.
쉬운 예시로 이해해 볼까요?
네 개의 문서 A·B·C·D를 묶는다고 가정해 보겠습니다. 사람이 정한 그룹은 A와 B, C와 D입니다. AI의 결과는 A와 B를 함께 묶지만 C는 혼자 두고 D도 혼자 둡니다. 총 몇 개의 군집이 나왔는지보다 어떤 문서 쌍이 실제로 함께 묶였는지 세어 봅니다.
- A–B: 정답과 예측이 모두 같은 군집으로 묶었습니다. 진짜 양성(TP) 한 쌍입니다.
- C–D: 정답에서는 함께지만 예측에서는 갈라졌습니다. 놓친 양성(FN) 한 쌍입니다.
- A–C와 그 밖의 다른 그룹 쌍: 정답과 예측 모두 함께 묶지 않았습니다. 진짜 음성(TN)으로 보지만 FMI 식에는 직접 들어가지 않습니다.
이 예시에서는 잘못 묶은 양성(FP)이 없습니다. 쌍 정밀도는 1이고 쌍 재현율은 절반입니다. 따라서 FMI는 두 값의 산술평균이 아닌 기하평균이며 약 0.707입니다. 같은 군집으로 묶은 쌍을 모두 맞혔더라도 놓친 쌍이 있으면 만점이 아닙니다.
쉬운 예시: 분류 모델이 문서 하나에 어떤 이름표를 붙였는지보다, 문서 두 개를 함께 둘지 갈라둘지를 비교하는 셈입니다.
왜 AI에서 FMI가 중요한가요?
군집 번호가 달라도 결과를 비교합니다
K-means가 만든 군집 0과 다른 실행의 군집 3이 똑같은 문서 집합이라면 번호가 달라졌다는 이유로 성능을 낮게 평가하면 안 됩니다. FMI는 라벨 이름 대신 두 표본이 같은 그룹인지에 집중하므로 순열로 이름을 바꿔도 점수가 달라지지 않습니다.
고객 문의 주제나 이미지 장면을 묶는 실험에서 사람이 확인한 기준 그룹이 있다면 예측 군집이 기준과 어느 정도 맞는지 살펴볼 수 있습니다. 서로 다른 군집 알고리즘의 두 결과를 비교할 수도 있지만, 기준이 사람이 검증한 정답이 아닐 때는 이를 정확도라고 부르지 않습니다.
잘못 합치기와 지나치게 쪼개기를 함께 봅니다
관련 없는 두 사례를 한 군집으로 합치면 FP가 늘어나고, 실제 한 묶음인 사례를 쪼개면 FN이 늘어납니다. FMI는 이 두 오류가 쌍 정밀도와 쌍 재현율에 각각 나타나도록 합니다.
반대로 모두 다른 군집이라고 내면 잘못 합친 쌍은 없어 보이더라도 기준에서 함께여야 할 쌍을 대부분 놓칩니다. 모든 데이터를 한 군집으로 뭉치면 많은 다른 그룹 쌍을 잘못 합칩니다. 한 종류의 오류만 줄인 결과에 높은 점수를 주지 않는 이유입니다.
핵심 인사이트: FMI가 알려 주는 것은 군집의 모양이나 거리가 아니라 두 라벨 분할의 쌍 일치입니다. 내부 응집도 점수와 질문이 다릅니다.
FMI는 어떻게 계산하나요?
먼저 같은 표본의 라벨을 나란히 놓습니다
labels_true와 labels_pred는 길이가 같아야 하고 같은 인덱스가 같은 표본을 가리켜야 합니다. 분할 파일 두 개를 정렬 없이 연결하면 문서 수는 같아도 다른 문서를 서로 비교하는 오류가 생깁니다.
각 표본 쌍에 대해 기준에서도 같은 군집인지, 예측에서도 같은 군집인지 판정합니다. scikit-learn의 pair_confusion_matrix는 양쪽에서 같은 그룹인지 여부를 행렬로 보여 줍니다. 이 구현의 행렬은 쌍을 양쪽 방향으로 세는 형태이므로 출력 숫자를 고유한 순서 없는 쌍의 개수와 혼동하지 않습니다.
TP·FP·FN으로 정밀도와 재현율을 구합니다
TP는 두 분할 모두 함께 묶은 쌍, FP는 예측에서만 함께 묶은 쌍, FN은 기준에서만 함께 묶은 쌍입니다. 쌍 정밀도는 TP를 TP와 FP의 합으로 나눈 값이며, 쌍 재현율은 TP를 TP와 FN의 합으로 나눈 값입니다.
FMI는 두 비율의 기하평균입니다. 같은 뜻을 한 식으로 쓰면 TP를 (TP+FP)와 (TP+FN)의 곱의 제곱근으로 나눈 값입니다. 둘 가운데 하나가 낮으면 값이 낮아집니다. 분모가 0이 되는 극단적인 입력은 임의 계산 대신 사용 중인 라이브러리의 반환값을 확인합니다.
결과 범위와 만점을 해석합니다
scikit-learn 문서에서 FMI는 0에서 1까지입니다. 1은 같은 표본들을 함께 묶는 방식이 완전히 일치한다는 뜻이며 라벨 번호를 바꿔도 그대로입니다. 0은 양쪽이 동시에 함께 묶은 양성 쌍이 없을 때 나타날 수 있습니다.
중간 점수 하나에 보편적인 합격선을 부여할 수는 없습니다. 기준 라벨을 만든 방법, 표본 구성, 군집 수와 비교 후보가 함께 주어져야 값의 의미를 읽을 수 있습니다.
FMI와 헷갈리는 용어는 무엇이 다른가요?
조정 랜드 지수(ARI)와 FMI의 차이
ARI는 표본 쌍이 함께 묶였는지 또는 각각 다른 군집인지의 일치를 랜드 지수로 계산하고, 무작위 일치의 기대값을 보정합니다. FMI는 함께 묶은 양성 쌍의 정밀도·재현율을 결합하며 ARI와 같은 방식으로 우연을 보정하지 않습니다.
따라서 같은 두 분할에 두 지표를 적용해도 수치가 같아야 할 이유가 없습니다. 음수가 나올 수 있는 ARI와 0에서 1까지인 FMI의 숫자를 같은 척도로 놓고 누가 더 높다고 비교하지 않습니다.
V-측도·상호정보량과 FMI의 차이
V-측도는 각 군집의 동질성과 정답 클래스의 완전성을 엔트로피 기반으로 결합합니다. 조정 상호정보량(AMI)은 두 분할이 공유하는 정보에서 우연에 의한 기대값을 고려합니다. FMI는 정보량보다 표본 쌍을 함께 묶는 결정을 셉니다.
최근 글의 V-측도·AMI와 같은 군집 평가 분야에 있지만 묻는 독자의 질문은 다릅니다. FMI를 찾는 독자는 잘못 합친 쌍과 놓친 쌍을 통해 점수가 어떻게 생기는지 확인하려고 합니다.
실루엣 점수와 FMI의 차이
실루엣은 정답 라벨 없이 표본 사이의 거리와 예측 군집을 이용해 안쪽 응집도와 바깥쪽 분리도를 봅니다. FMI는 비교할 두 번째 라벨 배열이 필요합니다. 같은 군집 결과라도 어떤 기준과 비교하느냐에 따라 FMI가 달라질 수 있습니다.
라벨을 비교할 근거가 없는 데이터에 FMI를 억지로 적용할 수 없습니다. 이때는 실루엣 같은 내부 지표와 사람이 확인한 표본 사례를 함께 살펴보되, 내부 지표가 외부 정답 평가를 대신한다고 단정하지 않습니다.
비교 정리: FMI는 같은 군집으로 묶인 표본 쌍의 정밀도와 재현율, ARI는 우연 보정된 쌍 일치, 실루엣은 표본 거리 기반 내부 평가입니다.
실전에서는 어디에 쓰이나요?
문서·이미지 군집과 검수 라벨 비교
문서 묶음을 사람이 검수해 만든 주제 라벨이 있다면 군집 모델의 예측 라벨과 나란히 두고 FMI를 구합니다. 이 점수만 보고 범주명이 올바른지 판단하지 말고, 잘못 합친 문서와 갈라진 문서 쌍을 함께 검토합니다.
이미지 임베딩을 묶는 실험에도 같은 방법을 적용합니다. 두 배열이 같은 이미지 목록에서 왔는지, 중복 이미지와 누락 샘플은 없는지부터 고정합니다. 표본 선택이 바뀌면 같은 모델에서도 점수가 다른 평가 문제가 됩니다.
군집 알고리즘 결과끼리 비교
같은 표본에 대해 서로 다른 매개변수로 얻은 분할을 비교할 수도 있습니다. 여기서는 어느 쪽을 진실로 두었다는 뜻이 아니라 두 분할이 함께 묶은 쌍이 비슷한지 보려는 것입니다.
군집 수가 크게 다르면 FP와 FN이 달라질 수 있습니다. FMI만 높이는 설정이 실제 사용 목적에 맞는 그룹 크기까지 보장하지는 않으므로 군집별 표본 수와 실패 사례도 기록합니다.
FMI를 확인할 때 어떤 순서로 점검하나요?
1. 기준 라벨과 표본 ID를 고정합니다
정답 라벨이 수작업으로 만들어졌다면 검수 기준과 불일치 사례를 남깁니다. 동일한 문서 ID 순서로 기준·예측 배열을 만들고 표본 수, 누락, 중복을 확인합니다. 이 절차를 건너뛰면 코드가 숫자를 반환해도 다른 데이터를 비교했을 수 있습니다.
2. 한 가지 후보가 아닌 오류 유형을 봅니다
FMI와 함께 표본 쌍에서 TP·FP·FN이 어떤 사례인지 직접 뽑아 봅니다. 부적절하게 합친 사례가 더 위험한지, 갈라진 사례가 더 불편한지 서비스의 목적에 맞춰 판단합니다.
pair_confusion_matrix의 표본 쌍 집계 규칙을 보고 수치를 해석합니다. 고유한 두 표본의 순서 없는 쌍을 직접 세는 계산과 라이브러리 행렬 숫자를 그대로 섞지 않는 것이 좋습니다.
3. 다른 지표와 군집 크기를 함께 남깁니다
동일 평가 표본에서 ARI 또는 AMI처럼 우연을 고려한 지표도 나란히 보고, 군집별 크기와 미배정 표본의 취급을 기록합니다. 평가 데이터의 크기와 레이블 기준이 달라졌다면 이전 FMI 숫자와 바로 순위를 매기지 않습니다.
정답이 없다면 FMI를 계산하려고 임의의 모델 결과를 정답으로 부르지 않습니다. 군집 사이 거리로 평가하는 질문으로 바꿀지, 표본 일부에 사람 라벨을 추가할지를 먼저 결정합니다.
실전 팁: 같은 데이터와 라벨 순서를 고정하고 FMI·우연 보정 지표·실제 오류 쌍을 같이 기록하면 점수만 남길 때보다 문제를 찾기 쉽습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, FMI를 우연 보정 점수로 해석하지 않습니다. ARI와 AMI의 조정값을 FMI에 그대로 대입하면 안 됩니다. 0은 무작위 분할의 보편적인 기대 점수라고 단정하지 말고 평가 표본과 군집 크기를 함께 확인하세요.
둘째, 라벨 배열의 순서를 맞춥니다. 자료를 각각 다른 순서로 불러와 같은 인덱스에 붙이면 사람이 보는 범주가 정확해도 점수는 잘못됩니다. 원본 ID를 기준으로 합치고 누락된 표본을 먼저 처리합니다.
셋째, 군집 크기와 드문 그룹을 살핍니다. 큰 군집의 표본 쌍은 수가 많아 작은 군집의 실수를 가릴 수 있습니다. 드문 주제를 반드시 분리해야 한다면 군집별 사례도 따로 검수해야 합니다.
넷째, FMI를 내부 품질 점수로 착각하지 않습니다. 서로 똑같은 두 분할의 FMI는 높지만 그 분할이 실제로 유용한 군집이라는 보증은 없습니다. 기준 라벨의 타당성과 현장 목표를 별도로 점검합니다.
다섯째, 미배정·노이즈 라벨의 정책을 정합니다. 두 입력이 노이즈 표본을 어떤 값으로 기록하고 제외했는지에 따라 비교 집합이 달라질 수 있습니다. 지표 입력 전에 정책을 고정해 동일 표본으로 비교합니다.
주의: 숫자 하나만 남기면 정답 라벨 오류, 표본 순서 불일치, 우연한 쌍 일치 문제를 확인할 수 없습니다. 입력 배열과 평가 정책도 보관하세요.
자주 묻는 질문
Q1. FMI는 분류 정확도와 같은가요?
아닙니다. 분류 정확도는 개별 표본의 예측 이름이 정답과 맞는지 봅니다. FMI는 두 표본이 같은 군집에 들어갔는지를 비교합니다. 군집 번호의 이름이 바뀌어도 구성원이 같으면 같은 점수입니다.
Q2. 정답 라벨이 없어도 FMI를 쓸 수 있나요?
같은 표본에 대한 다른 분할 결과가 있다면 둘 사이의 유사도를 비교할 수 있습니다. 다만 그중 한쪽이 검증된 정답이 아니면 나온 점수를 모델의 정답률이나 품질 보증으로 부르지 않습니다.
Q3. FMI는 0.5보다 높으면 좋은 점수인가요?
일률적인 합격선은 없습니다. 두 분할이 어떤 표본을 대상으로 만들었고 군집 수와 크기가 어떤지에 따라 해석합니다. 기준 데이터, 군집별 오류 사례, 다른 지표를 함께 보세요.
Q4. ARI와 FMI 중 어떤 점수를 써야 하나요?
쌍 정밀도와 쌍 재현율을 묶어 확인할 때는 FMI가 직관적입니다. 무작위 일치의 기대를 보정한 쌍 일치를 알고 싶다면 ARI를 함께 검토합니다. 두 숫자의 범위와 기준이 달라 직접 크기 비교는 하지 않습니다.
Q5. 군집 번호만 바뀌면 FMI도 바뀌나요?
바뀌지 않습니다. 같은 표본들이 같은 그룹으로 묶여 있으면 0·1로 부른 그룹을 7·9로 다시 이름 붙여도 결과는 같습니다. 다만 표본 배열 자체의 순서가 다르면 계산이 틀어집니다.
출처
마무리
폴크스-맬로스 지수는 같은 표본에 대한 두 군집 결과에서 함께 묶인 쌍을 비교합니다. 쌍 정밀도와 쌍 재현율의 기하평균이므로 잘못 합친 쌍과 놓친 쌍을 모두 돌아보게 합니다. 단순히 군집 라벨 이름이 다른지는 점수에 영향을 주지 않습니다.
실전에서는 표본 ID와 정답 라벨의 기준을 맞춘 뒤 군집 크기와 오류 사례를 함께 보세요. 우연 보정을 원하는 질문에는 ARI 같은 별도 지표를 확인하고, 정답이 없는 군집에서는 FMI를 정확도라고 부르지 않는 것이 좋습니다.
