워드 군집법의 원리와 구현: 기준식·알고리즘·소프트웨어 비교
초록
워드(Ward) 군집법은 군집 내 제곱합(ESS)을 최소화하는 병합 기준을 사용해 계층적 군집을 형성한다. 본 논문은 원 논문(1963)에서 제시된 수학적 정의를 재검토하고, 이후 제안된 일반화·변형을 정리한다. 특히, R, SAS, SPSS, Python(scikit‑learn) 등 주요 통계·머신러닝 패키지에서 구현된 워드 알고리즘이 사용하는 거리·업데이트 식이 어떻게 다른지 비교한다. 실험 사례를 통해 동일 데이터에 대해 구현 차이가 군집 구조에 미치는 영향을 보여주며, 개발자와 사용자가 알고리즘 선택 시 고려해야 할 실무적 가이드를 제공한다.
상세 분석
워드 군집법은 “최소 제곱 오차 합(ESS) 증가량”을 병합 기준으로 삼는다. 원 논문에서는 두 군집 A와 B를 병합했을 때 전체 ESS가 얼마나 증가하는지를 ΔESS = \frac{|A||B|}{|A|+|B|} d^{2}(A,B) 로 정의했으며, 여기서 d는 군집 중심 간 유클리드 거리이다. 이 식은 군집 크기와 거리의 곱으로 표현돼, 큰 군집을 병합할 경우 비용이 크게 부과된다. 이후 연구에서는 거리 행렬을 사전 계산한 뒤, 병합 후 새로운 중심을 재계산하지 않고 거리 업데이트만으로 효율성을 높이는 Lance‑Williams 업데이트 공식이 도입되었다. 그러나 구현마다 “거리”를 원 데이터 공간의 유클리드 거리로 할지, 이미 변환된 거리(예: Mahalanobis, Manhattan)로 할지, 혹은 “분산” 대신 “표준편차”를 사용해 식을 변형할지에 차이가 있다. R의 hclust(method="ward.D")와 ward.D2는 각각 ΔESS를 d와 d² 형태로 적용해 결과가 미세하게 다르며, SAS와 SPSS는 내부적으로 평균 제곱 오차(MSE)를 최소화하는 방식으로 구현한다. Python scikit‑learn은 Ward의 “variance minimization”을 그대로 따르지만, 거리 행렬을 사전 계산하지 않고 직접 데이터 행렬을 이용해 병합 비용을 계산한다. 이러한 차이는 특히 고차원·대규모 데이터에서 군집 수가 변할 때 병합 순서와 최종 트리 구조에 눈에 띄는 변이를 만든다. 논문은 또한 Ward 방법을 일반화한 “Ward‑like” 알고리즘을 소개한다. 예를 들어, 가중치가 부여된 데이터 포인트를 고려하거나, 비유클리드 거리 공간에서 적용하기 위해 ΔESS 식에 가중치 행렬을 삽입하는 방식이다. 이러한 변형은 기존 Ward 기준이 갖는 “분산 최소화” 특성을 유지하면서도, 데이터의 특수 구조(예: 군집 내 이질성, 결측치)에 더 유연하게 대응한다. 마지막으로, 구현 차이를 정량적으로 평가하기 위해 동일 데이터셋에 대해 5개 소프트웨어의 결과를 비교한 케이스 스터디를 제시한다. 결과는 동일한 초기 거리 행렬을 사용하더라도, 업데이트 식의 미세한 차이가 트리 높이, 병합 순서, 최종 군집 수에 영향을 미쳐, 연구자가 결과를 해석할 때 알고리즘 선택이 중요한 변수임을 강조한다.
댓글 및 학술 토론
Loading comments...
의견 남기기