K-means

AI
gemma-4-31b
작성자
익명
작성일
2026.07.29
조회수
13
버전
v2

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.

K-means

-means는 대적인 비지도 학습(Unsupervised Learning) 알고리즘 중 하나로, 주어진 데이터를 K개의 클러스터(군집)로 나누는 데 사용됩니다. 클러스터링은 데이터의 유사성을 기반으로 그룹을 형성하여 데이터의 구조를 이해하고 패턴을 발견하는 데 중요한 역할을 합니다. 특히 K-means는 간단하면서도 효율적인 알고리즘으로, 다양한 분야에서 널리 활용되고 있습니다.


개요

K-means는 데이터 포인트들 사이의 거리 기반으로 유사한 특성을 가진 데이터를 그룹화하는 알고리즘입니다. 주어진 데이터셋에서 사용자가 지정한 K라는 숫자만큼의 중심점(Centroid)을 설정하고, 각 데이터 포인트를 가장 가까운 중심점에 할당함으로써 군집을 형성합니다. 이후 중심점을 업데이트하고 이 과정을 반복하여 최적의 클러스터를 도출합니다.

이 알고리즘은 정수 K를 사전에 지정해야 한다는 전제가 있으며, 결과는 초기 중심점의 위치에 따라 달라질 수 있습니다. 따라서 일반적으로 여러 번 반복 실행하거나 초기화 방법(예: K-means++)을 사용하여 안정적인 결과를 도출합니다.


알고리즘 원리

K-means는 다음과 같은 반복적인 절차를 통해 클러스터를 형성합니다.

1. 초기화

  • 사용자가 결정한 클러스터 수 K를 설정합니다.
  • 초기 중심점(K 개의 중심)을 무작위로 선택하거나, K-means++와 같은 전략적 방법을 사용하여 설정합니다.

2. 할당 단계 (Assignment Step)

  • 각 데이터 포인트를 가장 가까운 중심점에 할당합니다.
  • 거리 측정은 일반적으로 유클리드 거리(Euclidean Distance)를 사용합니다.

예: 데이터 포인트 ( x_i )와 중심점 ( c_j ) 사이의 거리
[ d(x_i, c_j) = \sqrt{\sum_{k=1}^{n} (x_{i,k} - c_{j,k})^2} ]

3. 업데이트 단계 (Update Step)

  • 각 클러스터에 속한 데이터 포인트들의 평균 값을 새로운 중심점으로 설정합니다.
    [ c_j = \frac{1}{|C_j|} \sum_{x_i \in C_j} x_i ] 여기서 ( C_j )는 j번째 클러스터에 속한 데이터 포인트 집합입니다.

4. 수렴 확인

  • 중심점이 더 이상 크게 이동하지 않거나, 할당이 안정화될 때까지 2~3 단계를 반복합니다.
  • 일반적으로 SSE(Sum of Squared Errors)가 수렴하면 알고리즘이 종료됩니다.

장점과 단점

✅ 장점

  • 단순하고 이해하기 쉬움: 알고리즘이 직관적이며 구현이 간단합니다.
  • 계산 효율성: 데이터 크기가 클 경우에도 비교적 빠르게 동작합니다.
  • 광범위한 적용성: 이미지 압축, 고객 세분화, 문서 클러스터링 등 다양한 분야에 활용 가능.

❌ 단점

  • K 값 사전 결정 필요: 최적의 K 값을 정하기 어려울 수 있습니다.
  • 초기 중심점에 민감함: 초기값에 따라 지역 최적해에 수렴할 수 있습니다.
  • 구형 클러스터 가정: K-means는 구형이고 크기가 비슷한 클러스터를 가정하므로, 비선형 또는 복잡한 형태의 클러스터에는 부적합합니다.
  • 이상치에 민감함: 중심점이 평균을 기반으로 하기 때문에 이상치의 영향을 크게 받을 수 있습니다.

K 값 선택 방법

K-means에서 가장 중요한 결정 중 하나는 클러스터 수 K를 어떻게 정할 것인지입니다. 대표적인 방법은 다음과 같습니다.

엘보우 방법 (Elbow Method)

  • 다양한 K 값에 대해 SSE(Sum of Squared Errors)를 계산하고, K에 따른 SSE 감소율을 그래프로 그립니다.
  • 감소율이 뚝 떨어지는 "팔꿈치" 지점이 최적의 K로 간주됩니다.

실루엣 분석 (Silhouette Analysis)

  • 각 데이터 포인트가 자신의 클러스터에 얼마나 잘 속해 있는지를 평가합니다.
  • 실루엣 계수는 [-1, 1] 범위를 가지며, 1에 가까울수록 클러스터링이 잘 되었다는 의미입니다.

실루엣 계수 공식

[ s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))} ] - ( a(i) ): 같은 클러스터 내 다른 포인트와의 평균 거리 - ( b(i) ): 가장 가까운 다른 클러스터 내 포인트와의 평균 거리


활용 사례

  • 고객 세분화: 마케팅에서 고객을 유사한 구매 패턴에 따라 그룹화
  • 이미지 압축: 픽셀 값을 K개의 색상으로 군집화하여 저장 용량 감소
  • 문서 클러스터링: 유사한 주제의 문서를 그룹화하여 정보 조직
  • 생물정보학: 유전자 발현 데이터를 기반으로 유사한 발현 패턴을 가진 유전자 군집화

관련 알고리즘 및 확장

  • K-means++: 초기 중심점을 보다 효과적으로 선택하여 수렴 속도와 품질을 향상
  • K-medoids (예: PAM 알고리즘): 중심점을 실제 데이터 포인트로 선택하여 이상치에 강함
  • Fuzzy C-means: 하나의 데이터가 여러 클러스터에 소속될 수 있도록 허용 (퍼지 클러스터링)
  • Gaussian Mixture Models (GMM): 확률 기반 모델로, 더 유연한 클러스터 형태를 허용

참고 자료 및 관련 문서

from sklearn.cluster import KMeans
import numpy as np

# 간단한 K-means 예제
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
print(kmeans.labels_)  # 각 포인트의 클러스터 레이블
print(kmeans.cluster_centers_)  # 중심점 좌표


K-means는 데이터 과학의 기초이자 핵심 도구 중 하나로, 복잡한 데이터 구조를 탐색하는 데 매우 유용합니다. 다만, 제한 사항을 이해하고 적절한 전처리 및 평가 방법을 함께 사용하는 것이 성공적인 클러스터링을 위한 핵심입니다.

군집화(Clustering) 관점에서의 특성

K-means 알고리즘의 핵심 목적은 데이터셋을 최적의 그룹으로 나누는 것이며, 이는 수학적으로 다음 두 가지 지표의 최적화로 설명됩니다.

  • 군집 내 응집도(Cohesion) 극대화: 동일한 군집에 속한 데이터 포인트들이 서로 최대한 가깝게 위치하도록 하여, 군집 내부의 유사성을 높이는 것입니다. K-means는 각 군집의 SSE(Sum of Squared Errors)를 최소화함으로써 이를 달성합니다.
  • 군집 간 분리도(Separation) 극대화: 서로 다른 군집의 중심점 사이의 거리를 최대한 멀게 하여, 군집 간의 구분을 명확히 하는 것입니다.

결과적으로 K-means는 군집 내 분산은 최소화하고 군집 간 분산은 최대화하는 방향으로 데이터를 분할합니다.

데이터 전처리와 군집화 성능

K-means는 유클리드 거리를 기반으로 유사도를 측정하므로, 각 특성(Feature)의 스케일(Scale)에 매우 민감합니다.

특성 스케일링의 필요성

특성 간의 단위(Unit)가 다를 경우, 값이 큰 특성이 거리 계산에 지배적인 영향을 미쳐 결과가 왜곡됩니다. 예를 들어, '연봉(단위: 원)'과 '나이(단위: 세)'라는 두 특성이 있을 때, 연봉의 수치 범위가 훨씬 크기 때문에 나이의 차이는 무시되고 연봉에 의해서만 군집이 결정되는 현상이 발생합니다. 따라서 표준화(Standardization) 또는 정규화(Normalization) 과정이 필수적입니다.

스케일링 전후 결과 비교 시각화 (예시)

구분 스케일링 전 (Raw Data) 스케일링 후 (Standardized)
특성 분포 특정 축(값이 큰 특성)으로 길게 늘어진 형태 모든 축이 유사한 범위(평균 0, 분산 1)로 조정됨
군집 형태 값이 큰 특성 방향으로 타원형으로 뭉침 데이터의 실제 밀도를 반영한 구형 군집 형성
결과 해석 수치 범위가 큰 변수에 의해 군집 결정 모든 변수가 동등한 가중치로 군집 결정에 기여

할당 방식의 분류: 하드 vs 소프트 클러스터링

K-means는 데이터 포인트가 반드시 하나의 군집에만 할당되는 하드 클러스터링(Hard Clustering) 방식을 취합니다. 이는 분석 결과가 명확하다는 장점이 있지만, 군집 경계에 위치한 데이터의 모호성을 처리하지 못한다는 한계가 있습니다.

비교 항목 하드 클러스터링 (Hard) 소프트 클러스터링 (Soft)
할당 방식 하나의 포인트 $\rightarrow$ 하나의 군집 (0 또는 1) 하나의 포인트 $\rightarrow$ 모든 군집에 확률적 할당
대표 알고리즘 K-means, K-medoids GMM (Gaussian Mixture Model), Fuzzy C-means
결과 형태 명확한 소속 레이블 (예: Cluster A) 소속 확률/멤버십 값 (예: A: 70%, B: 20%, C: 10%)
특징 계산이 빠르고 결과가 단순함 경계 영역의 불확실성을 표현 가능함

기하학적 제약: 볼록 집합과 비볼록 집합

K-means는 중심점으로부터의 거리를 기준으로 영역을 나누기 때문에, 기하학적으로 볼록 집합(Convex Set) 형태의 군집만 형성할 수 있습니다.

  • 볼록 집합 (Convex Set): 집합 내의 임의의 두 점을 연결한 선분이 다시 그 집합 내에 완전히 포함되는 형태입니다. (예: 원형, 타원형, 사각형 등) $\rightarrow$ K-means로 군집화 가능
  • 비볼록 집합 (Non-convex Set): 초승달 모양, 고리 모양, 얽혀 있는 형태 등 두 점을 연결한 선분이 집합 외부로 나가는 형태입니다. $\rightarrow$ K-means로 군집화 불가 (강제로 구형으로 나누려 하여 잘못된 결과 도출)

[군집화 예시 그림 개념] - 성공 사례: 흩어져 있는 세 개의 둥근 구름 형태의 데이터 $\rightarrow$ K-means가 각 구름의 중심을 정확히 포착. - 실패 사례: 두 개의 초승달이 서로 마주 보고 있는 형태 $\rightarrow$ K-means는 이를 반으로 뚝 잘라 두 개의 덩어리로 나누어 버림 (DBSCAN과 같은 밀도 기반 알고리즘 필요).

군집화 품질의 정량화

K 값 선택 방법인 엘보우 방법과 실루엣 분석은 단순히 숫자를 찾는 과정이 아니라, 군집화의 품질(Clustering Quality)을 정량적으로 측정하려는 시도입니다.

  • SSE (Sum of Squared Errors): 군집 내 응집도를 측정하는 지표로, 값이 작을수록 데이터가 중심점에 밀집되어 있음을 의미합니다.
  • 실루엣 계수 (Silhouette Coefficient): 응집도와 분리도를 동시에 고려한 지표입니다. 개별 데이터가 자신이 속한 군집과 얼마나 가깝고, 다른 군집과는 얼마나 먼지를 수치화하여 전체적인 군집화의 적절성을 평가합니다.
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?