K중심값

K중심값 (K-means) #

K-means는 데이터마이닝과 기계학습에서 가장 널리 사용되는 클러스터링(군집화) 알고리즘 중 하나다. 영어 원어인 “K-means"는 한국어로 K중심값 또는 K평균 등으로 번역되기도 하지만, 현업에서는 주로 “케이민즈"라고 원어 그대로 부르는 경우가 많다. 본 문서에서도 혼동을 피하기 위해 K-means로 표기한다.

여기서 “K"는 사용자가 미리 정하는 군집(클러스터)의 개수를 의미하며, “means"는 각 군집의 중심값(평균값, 대푯값)을 의미한다. 다만, K-means에서의 “mean"은 통계적 의미의 평균이라기보다는, 각 군집을 대표하는 중심점(centroid)이라는 개념에 더 가깝다.

K-means의 핵심은 데이터를 K개의 그룹으로 나누되, 각 그룹 내의 데이터들이 서로 최대한 비슷하도록(즉, 중심점과의 거리가 최소가 되도록) 군집을 형성하는 것이다. 이 알고리즘은 간단하면서도 효과적이어서, 고객 세분화, 이미지 분할, 이상치 탐지 등 다양한 분야에서 널리 활용된다.

K-means의 의미 #

  • K: 군집(클러스터)의 개수. 사용자가 직접 지정해야 하며, 알고리즘이 자동으로 결정하지 않는다.
  • means: 각 군집의 중심값(centroid, 대푯값). 각 군집 내 데이터의 평균 위치를 의미한다.

K의 값은 문제의 특성, 데이터의 분포, 분석 목적 등에 따라 사용자가 실험적으로 결정해야 한다. 엘보우(Elbow) 방법, 실루엣(Silhouette) 계수 등 K값을 선택하는 데 도움이 되는 기법도 존재하지만, 최종 결정은 분석가의 판단에 달려 있다.

K-means 알고리즘의 원리와 과정 #

K-means 알고리즘은 다음과 같은 단계로 진행된다.

  1. 데이터 전처리: 모든 데이터를 연속형 수치 벡터(예: n차원 벡터)로 변환한다.
  2. 초기 중심점 설정: 전체 데이터 공간에서 K개의 중심점(centroid)을 임의로 선택한다. 이때 무작위(random)로 선택하거나, 특정 기준에 따라 선택할 수 있다.
  3. 군집 할당: 각 데이터를 가장 가까운 중심점에 할당하여 K개의 군집으로 나눈다.
  4. 중심점 재계산: 각 군집에 속한 데이터들의 평균값을 계산하여 새로운 중심점으로 갱신한다.
  5. 반복: 중심점이 더 이상 이동하지 않거나(수렴), 또는 미리 정한 반복 횟수에 도달할 때까지 3~4단계를 반복한다.
  6. 결과 도출: 최종적으로 K개의 군집과 각 군집의 중심점(centroid)이 산출된다.

이 과정을 통해 데이터의 숨겨진 구조를 파악하고, 각 군집의 특성을 분석할 수 있다.

K-means 알고리즘의 수식 #

K-means 알고리즘에서 각 데이터 포인트 \(\mathbf{x}_i\)를 가장 가까운 군집 중심(centroid) \(\boldsymbol{\mu}_k\)에 할당하고, 군집 중심을 반복적으로 갱신합니다. 이 과정은 다음의 목적함수(오차 제곱합, SSE: Sum of Squared Errors)를 최소화하는 방향으로 진행된다.

$$ J = \sum_{k=1}^{K} \sum_{i \in C_k} \|\mathbf{x}_i - \boldsymbol{\mu}_k\|^2 $$
  • \(K\): 군집(클러스터)의 개수
  • \(C_k\): \(k\)번째 군집에 속한 데이터 인덱스 집합
  • \(\mathbf{x}_i\): \(i\)번째 데이터 포인트 (벡터)
  • \(\boldsymbol{\mu}_k\): \(k\)번째 군집의 중심(centroid)
  • \(|\cdot|\): 유클리드 거리(보통 L2 노름)

중심점(centroid) 계산 #

각 군집 \(k\)의 중심점은 해당 군집에 속한 모든 데이터의 평균으로 계산한다.

$$ \boldsymbol{\mu}_k = \frac{1}{|C_k|} \sum_{i \in C_k} \mathbf{x}_i $$

군집 할당 #

각 데이터 포인트 \(\mathbf{x}_i\)는 모든 중심점 \(\boldsymbol{\mu}_k\)와의 거리를 계산하여, 가장 가까운 군집에 할당한다.

$$ \text{Assign } \mathbf{x}_i \text{ to cluster } k^* = \underset{k}{\arg\min} \; \|\mathbf{x}_i - \boldsymbol{\mu}_k\|^2 $$

이러한 과정을 반복하여, 전체 데이터의 군집 내 거리 제곱합(\(J\))이 최소가 되도록 군집을 형성한다.

장점과 단점 #

장점 #

  • 알고리즘이 매우 쉽고 직관적이며, 구현이 간단하다.
  • 대용량 데이터에도 빠르게 적용할 수 있다.
  • 결과가 명확하여 해석이 쉽고, 다양한 분야에 응용이 가능하다.

단점 #

  • K(군집의 개수)를 사전에 지정해야 하므로, 적절한 K값을 찾는 것이 쉽지 않을 수 있다.
  • 군집의 크기와 모양이 비슷하지 않거나, 이상치(outlier)가 많을 경우 성능이 저하될 수 있다.
  • 연산량이 많아 대규모 데이터에서는 계산 비용이 커질 수 있다.
  • 결과를 바로 활용하기보다는, 군집의 특성을 해석하고 추가 분석에 활용하는 것이 일반적이다.

K-means는 간단하지만 강력한 클러스터링 도구로, 데이터의 구조를 이해하고 인사이트를 도출하는 데 매우 유용하다. 그러나 한계점도 분명하므로, 데이터의 특성과 분석 목적에 따라 적절히 활용하는 것이 중요하다.