K-Means는 대표적인 비지도학습(Unsupervised Learning) 알고리즘입니다. 데이터에 미리 정해진 Label이 없어도 비슷한 샘플을 자동으로 여러 Cluster로 그룹화합니다.
기본 아이디어
K = 3이면 세 개의 초기 Centroid를 준비합니다. 각 데이터 포인트를 가장 가까운 Centroid에 배정하고, 각 Cluster에 속한 포인트들의 평균을 이용해 새로운 Centroid를 계산합니다.
이 과정을 배정 결과가 안정될 때까지 반복합니다.
단계
- K를 선택합니다.
- K개의 Centroid를 초기화합니다.
- 각 포인트와 모든 Centroid의 거리를 계산합니다.
- 가장 가까운 Cluster에 포인트를 배정합니다.
- Cluster 평균으로 Centroid를 다시 계산합니다.
- Convergence까지 반복합니다.
Centroid란?
Centroid는 Cluster에 속한 포인트들의 평균 위치입니다. 실제 데이터 포인트일 필요는 없습니다.
Euclidean Distance
K-Means에서는 흔히 Euclidean Distance를 사용합니다.
d = sqrt((x2 - x1)^2 + (y2 - y1)^2)
K를 선택하는 방법
Elbow Method
여러 K 값을 실행해 Cluster 내부 오차를 비교합니다. K를 증가시켰을 때 개선 폭이 급격히 줄어드는 지점을 후보로 선택할 수 있습니다.
Silhouette Score
각 샘플이 자신의 Cluster에는 얼마나 잘 속하고 다른 Cluster와는 얼마나 분리되어 있는지 측정합니다.
Feature Scaling
K-Means는 거리에 의존하므로 Feature 범위가 크게 다르면 결과가 왜곡될 수 있습니다. Standardization이나 Min-Max Scaling이 자주 사용됩니다.
Centroid 초기화
초기 Centroid가 좋지 않으면 결과도 달라질 수 있습니다. **K-Means++**는 더 나은 초기 중심을 선택하기 위한 대표적인 방법입니다.
제공된 JavaScript 구현에서는 첫 K개의 데이터 포인트를 초기 중심으로 사용합니다. 학습용으로는 간단하지만 실제 시스템에서는 더 안정적인 초기화 또는 여러 번 실행하는 방법이 일반적입니다.
활용 사례
- Customer Segmentation
- 사용자 행동 그룹화
- 마케팅 데이터 분석
- 이미지 색상 압축
- Exploratory Data Analysis
장점
- 이해하기 쉽습니다.
- 비교적 빠릅니다.
- Segmentation 문제에 유용합니다.
- 데이터의 기본적인 구조를 찾는 데 효과적입니다.
한계
- K를 미리 정해야 합니다.
- Outlier에 민감합니다.
- 초기 Centroid 선택에 영향을 받습니다.
- 복잡한 형태의 Cluster에는 적합하지 않을 수 있습니다.
- 기본 형태는 수치형 데이터에 적합합니다.
구현 구조
choose K centroids
repeat:
assign every point to nearest centroid
recompute each centroid as cluster mean
until assignments stop changing
제공된 구현도 각 포인트의 거리를 계산해 가장 가까운 Cluster를 선택하고, 해당 Cluster의 평균으로 Centroid를 다시 계산하는 과정을 반복합니다.
K-Means와 KNN의 차이
KNN은 일반적으로 Supervised Learning이며 Label이 있는 이웃을 이용해 새 샘플을 예측합니다.
K-Means는 Unsupervised Learning이며 Label 없이 데이터 내부의 Cluster를 찾습니다.
결론
K-Means는 Clustering을 이해하는 데 가장 중요한 알고리즘 중 하나입니다. 실제 적용에서는 K 선택, Feature Scaling, 초기화, Outlier와 데이터의 Cluster 형태를 함께 고려해야 합니다.