4. 군집화(Clustering) > 4-6. 군집화 평가하기
군집화 평가하기
지금까지 군집화의 종류와 각 종류에 해당하는 기법들을 살펴보았습니다. 군집화를 진행할 때는 군집화 분석의 목적과 사용하는 데이터의 특성을 파악하여 적절한 종류를 선택하야 합니다. 예를들어, 데이터가 수백만의 대규모 데이터인데 서버 하나를 사용한다면 GMM이나 계층 클러스터링은 연산량이 너무 많아서 사용하기 어렵습니다. 또한 문장간의 유사도를 측정하는 방식이면 평균으로 구하는 K-Means나 GMM은 사용할 수 없습니다.
군집화는 분석 수행의 결과 평가가 다른 머신러닝 기법에 비해 명확하지 않습니다. 그 이유는 군집화는 '비지도 학습'이기 때문에 정답(label)이 있는 데이터로 test를 할 수 없기 때문입니다. 따라서 군집간의 거리, 군집의 지름, 군집의 분산 등 다양한 방법으로 구한 값을 종합적으로 고려하여 적절한 파라미터를 선택하고 군집화의 타당성을 고려해야 합니다.
대표적인 평가 기법으로는 Elbow Method, Silhouette coefficient, Dunn Index 등이 있습니다. Elbow Method와 Silhouette Coefficient는 앞서 5-3에서 최적의 K를 찾을 때 사용했던 내용을 참고해보세요.
전체 실루엣 계수의 평균 값이 높을 수록 (1에 가까울 수록) 좋은 군집화이며, 각 군집의 실루엣 계수 평균도 전체 실루엣 계수 평균과 큰 차이가 없어야 합니다. 일반적으로 전체 실루엣 계수의 평균이 0.5 이상이면 타당성을 갖는다고 평가한다.
from sklearn.metrics import silhouette_score
silhouette_score(df_scale, labels, metric='euclidean')
군집 내 데이터 간의 거리의 최댓값을 기반으로 군집 간의 거리의 최솟값을 비교하여 이 군집화가 얼마나 타당성이 있는지를 확인하는 지표입니다. (분자는 군집 간 거리의 최소값, 분모는 군집 내 요소간 거리의 최대값) Dunn Index는 값이 클수록 군집화가 잘 되었다고 평가합니다. 군집 간 거리는 멀수록, 군집 내 거리는 가까울 수록 좋은 군집화이기 때문입니다.
참고자료: Dunn Index_wikipedia, 클러스터링 평가 지표 Dunn Index with Python