Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

데이터 마이닝 K-Means 알고리즘의 주요 문제점과 해결 방법

K-Means 알고리즘은 널리 사용되는 군집화 기법이지만, 실제 적용 과정에서 여러 가지 문제에 직면할 수 있습니다. 대표적인 문제점인 빈 클러스터 처리, 이상치의 영향, 그리고 후처리를 통한 SSE 최적화 방법을 자세히 살펴보겠습니다.

1. 빈 클러스터(Empty Clusters) 처리

기본 K-Means 알고리즘의 첫 번째 문제는 할당 단계에서 어떤 데이터 포인트도 특정 클러스터에 배정되지 않아 빈 클러스터가 발생할 수 있다는 점입니다. 이런 상황이 생기면 제곱 오차(SSE)가 불필요하게 커지므로, 새로운 중심점(centroid)을 대체 선택하는 방법이 반드시 필요합니다.

한 가지 방법은 현재 중심점들로부터 가장 멀리 떨어진 데이터 포인트를 새로운 중심점으로 선택하는 것입니다. 이렇게 하면 전체 제곱 오차에 크게 기여하던 점을 제거하는 효과를 얻을 수 있습니다. 또 다른 방법은 SSE가 가장 큰 클러스터에서 대체 중심점을 선택하는 것입니다. 이는 일반적으로 해당 클러스터를 분할하여 전체 클러스터링의 SSE를 낮추는 결과를 가져옵니다. 만약 빈 클러스터가 여러 개라면, 이 과정을 필요한 횟수만큼 반복 수행하면 됩니다.

2. 이상치(Outliers) 문제

제곱 오차 최소화 방식을 사용할 때, 이상치(outlier)는 발견되는 클러스터에 부정적인 영향을 미칠 수 있습니다. 이상치가 존재하면 결과적으로 생성된 클러스터 중심점(프로토타입)이 데이터를 충분히 대표하지 못하게 되며, 그 결과 SSE 역시 높아지게 됩니다.

따라서 사전에 이상치를 탐지하고 제거하는 것이 유용합니다. 다만, 모든 경우에 이상치를 제거해야 하는 것은 아니라는 점을 이해하는 것이 중요합니다. 예를 들어 데이터 압축 목적으로 군집화를 수행할 때는 모든 데이터 포인트가 클러스터에 배정되어야 합니다. 또한 금융 분석과 같은 일부 분야에서는 비정상적으로 높은 수익을 내는 고객처럼 겉보기에 이상치로 보이는 데이터가 오히려 가장 흥미로운 분석 대상이 될 수 있습니다.

3. 후처리(Postprocessing)를 통한 SSE 감소

SSE를 줄이는 가장 직관적인 방법은 클러스터 수(K)를 늘리는 것입니다. 하지만 클러스터 수를 늘리지 않고도 SSE를 개선할 수 있는데, 이는 K-Means가 일반적으로 지역 최솟값(local minimum)에 수렴하기 때문입니다.

다양한 후처리 기법을 통해 결과 클러스터를 '보완'하면 더 낮은 SSE를 가진 군집화 결과를 얻을 수 있습니다. 전체 SSE는 각 클러스터가 기여하는 SSE의 합으로 쉽게 계산할 수 있으므로, 개별 클러스터에 초점을 맞추어 클러스터 분할(splitting)이나 병합(merging) 같은 연산을 수행함으로써 전체 SSE를 조정할 수 있습니다.

클러스터 분할과 병합을 교대로 수행하는 방식을 활용하면 지역 최솟값에서 벗어나, 지정된 클러스터 수를 유지하면서도 더 우수한 군집화 솔루션을 도출할 수 있습니다. 분할 및 병합 단계에서 활용되는 구체적인 기법들은 다음과 같습니다.