본문 바로가기

Machine learning/Unsupervised Learning

[클러스터링] CH-index

지도 학습은 정확도나 지표를 통해서 모델의 성능을 확인할 수 있지만, 비지도 학습인 군집 분석은 객관적인 성능을 확인할 명확한 지표가 없다. 그렇다면, 군집 분석이 잘 되었는지 어떻게 확인할까?

그래서, '거리' 개념을 통해 클러스터링이 잘 되었는지 확인한다.

 

WSS(Total Within Sum of Squares)

 

c: cluster, n: 데이터 개수

WSS = 한 클러스터 내에서 중심과 각 데이터 포인트 거리 제곱의 평균의 합 

→ 이 값이 작을수록 데이터 포인트들이 각 군집의 중심에 가까워지며, 군집화가 잘 이루어졌음을 의미한다.

따라서, WSS는 군집의 응집도를 측정하는 지표로 볼 수 있다.

 

그러나, WSS에는 한 가지의 맹점이 있다. 바로, k가 증가할수록 WSS는 무조건 감소한다는 점이다.

(예를 들어, k가 샘플의 수와 같게 된다면 각 샘플들이 곧 중심이 되기 때문에, WSS는 0이 된다..!)

만약, 서로 k의 수가 같고 다른 군집 알고리즘을 쓰는 경우라면 비교가 가능하겠지만, k의 개수가 변할 수 있는 상황이라면 비교가 어렵다.  k를 무수히 늘려버리면 WSS는 계속 작아지기 때문에.ㅠ

 

따라서, k의 영향을 보정하는 CH-index가 제안되었다.

CH-index(Calinski-Harabasz index)

TSS(Total Sum of Squares)

하나의 중심에서 모든 데이터까지의 거리 제곱합으로  이다.

TSS는 변하지 않는다!

BSS(Between Sum of Squares)

d: 각각의 데이터, c:클러스터

        * BSS(k) = TSS - WSS(k)( = 전체 variance - 클러스터 내 variance)

        * 클러스터 간 얼마나 떨어져 있는지 나타내는 지표 → 높을수록 군집화가 잘 된 것!

k가 커지면 WSS(k)는 작아지므로, BSS(k)는 커진다. (TSS는 고정된 값이기 때문에) 

k의 영향을 보완하기 위해 BSS에는 k-1을, WSS에는 n-k를 나눠주게 된다

 

따라서, CH-index 수식은 아래와 같이 표현된다.

 

n: 데이터 개수, k: 클러스터 개수

 

분모: k가 커지면 WSS(k)가 작아지지만, n-k 도 작아지기 때문에 보정이 된다.

분자: k가 커지면 BSS(k)도 커지지만, k-1로 나눠주기 때문에 보정이 된다.