K-Means 클러스터링

조은별·2025년 5월 10일
post-thumbnail

K-Means 클러스터링 정리

이 문서는 비지도학습(unsupervised learning) 알고리즘 중 대표적인 K-Means 클러스터링에 대한 학습 내용을 정리했다.
강의를 보며 함께 실습한 내용을 바탕으로 개념, 작동 방식, 적용 예시를 정리


1. K-Means란?

  • K-Means는 비지도 학습(Unsupervised Learning)에 속하는 클러스터링(Clustering) 알고리즘
  • 데이터를 비슷한 특성끼리 K개의 그룹으로 나누는 방법
  • 사전에 레이블(label)이 없는 상태에서, 내부 구조에 따라 자동으로 군집을 나누는 것이 특징이다.

2. 작동 원리

  1. 클러스터 개수 K를 설정
  2. 데이터에서 K개의 중심(centroid)을 초기 설정
  3. 각 데이터를 가장 가까운 중심에 할당
  4. 각 클러스터의 평균 위치로 중심 업데이트
  5. 중심이 더 이상 이동하지 않을 때까지 반복

3. 중심 거리 계산: 유클리드 거리

K-Means는 각 데이터와 중심 간의 거리를 기준으로 분류
이때 사용하는 대표적인 거리 계산 방식은 유클리드 거리(Euclidean distance)

공식:

d(p, q) = √[(p₁ - q₁)² + (p₂ - q₂)² + ... + (pₙ - qₙ)²]

4. 하이퍼파라미터: K 값 선택

  • K는 직접 설정해야 하며, 일반적으로 여러 K값에 대해 평가 후 결정
  • 대표적인 방법: 엘보우(Elbow) 방법

엘보우 방법

  • K값을 변경하며 Within Cluster Sum of Squares (WCSS)를 측정
  • WCSS가 급격히 감소하다가 완만해지는 지점 → 최적의 K값

5. scikit-learn 실습 예시

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

labels = kmeans.labels_
centroids = kmeans.cluster_centers_

plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='X')
plt.title("K-Means Clustering Result")
plt.show()

6. 실무에서 주의할 점

  • 스케일링 필수: K-Means는 거리 기반 알고리즘이므로 StandardScaler 등으로 정규화 필요
  • 클러스터 개수(K)를 정하는 기준이 모호할 수 있음
  • 이상치(outlier)가 결과에 큰 영향을 미칠 수 있음

7. 느낀 점

K-Means는 처음에는 간단하게 느껴졌지만,
K값 선택과 초기 중심 위치 등에 따라 결과가 꽤 달라질 수 있다는 점이 인상 깊었다.
또한 시각화를 통해 군집이 어떻게 형성되는지 보는 것이 이해에 큰 도움이 되었다.
향후 PCA나 t-SNE 같은 차원 축소 기법과 함께 적용해보고 싶다.


profile
기록과 회고를 통해 성장하는 데이터, AI 엔지니어 지망생입니다.

0개의 댓글