K-평균 클러스터링
라벨 없이 그룹 찾기
라벨 없이 패턴을 찾을 수 있을까?
고객 데이터가 10만 건 있는데 "이 고객은 VIP", "이 고객은 이탈 위험"이라는 라벨이 전혀 없다면? 지금까지 배운 지도 학습은 무력합니다.
하지만 데이터 자체에 숨겨진 패턴이 있습니다. 비슷한 구매 패턴의 고객끼리 자연스럽게 군집(cluster)을 이루고 있을 수 있습니다. K-평균 클러스터링은 이런 숨은 그룹을 자동으로 찾아내는 가장 기본적이고 강력한 알고리즘입니다.
이 장에서는 K-평균의 원리를 단계별로 체험하고, 최적의 K를 결정하는 방법, 초기화의 함정, 그리고 실전 고객 세분화까지 다룹니다.
K-평균의 네 단계
알고리즘은 놀랍도록 단순합니다. 딱 네 단계의 반복입니다.
선생님이 "오늘 3모둠으로 활동합니다"라고 선언하고, 교실 세 곳에 깃발을 꽂습니다. 학생들은 가장 가까운 깃발로 모입니다. 그런 다음 각 모둠의 한가운데로 깃발을 옮기고, 다시 가까운 깃발로 모이라고 합니다. 이 과정을 반복하면 자연스러운 모둠이 만들어집니다. K-평균은 정확히 이 "모둠 나누기"를 수학적으로 수행하는 알고리즘입니다.
1단계 -- "대충 시작": K개의 대표 점(중심점)을 아무 데나 놓습니다. 학교에서 조장 자리를 임의로 정하는 것과 같습니다.
2단계 -- "가까운 쪽으로 모여": 모든 데이터 점이 자기에게 가장 가까운 중심점 쪽으로 배정됩니다. 학생들이 가장 가까운 조장에게 붙는 것입니다.
3단계 -- "조장 자리 다시 잡기": 각 조의 구성원들의 평균 위치로 중심점을 이동합니다. 이 2-3단계를 중심점이 더 이상 움직이지 않을 때까지 반복합니다.
mu_k = 군집 k에 속한 점들의 평균 (중심점)
수렴 보장: 매 단계 J가 감소하거나 유지됨
실습 1: 단계별 K-평균
"한 단계" 버튼을 누를 때마다 할당과 갱신이 교대로 실행됩니다. 중심점이 어떻게 이동하고 군집이 어떻게 형성되는지 직접 관찰하세요.
실습 2: 최적 K 선택 -- 엘보우와 실루엣
K-평균의 가장 큰 질문: K를 몇으로 할 것인가? 두 가지 방법으로 최적 K를 찾습니다.
엘보우 방법
K=1~10까지 관성(inertia)을 그래프로 그립니다. 관성이 급격히 꺾이는 "팔꿈치" 지점이 최적 K입니다.
실루엣 점수
각 점이 자기 군집에 얼마나 잘 속하는지 측정합니다. -1(최악)~1(최적). 평균 실루엣이 가장 높은 K가 최적입니다.
실습 3: 초기화의 함정
K-평균의 결과는 초기 중심점 위치에 따라 달라집니다. 같은 데이터, 같은 K로 5번 실행하면 결과가 매번 다를 수 있습니다!
실습 4: 고객 세분화
실제와 유사한 고객 데이터(구매 금액, 구매 빈도)에 K-평균을 적용하여 고객을 자동으로 세분화합니다. 각 군집에 비즈니스 라벨을 붙여보세요.
K-평균의 한계
한계점
- K를 미리 정해야 함
- 구형(둥근) 군집만 잘 찾음
- 크기가 다른 군집에 취약
- 초기화에 민감 (로컬 최적)
- 이상치에 영향 큼
대안 알고리즘
- 계층적 클러스터링: K 불필요, 덴드로그램 제공
- DBSCAN: 비구형 군집, 노이즈 자동 제거
- GMM: 소프트 할당 (확률적)
- Mini-batch K-Means: 대규모 데이터용
- K-평균은 중심점 배치 - 할당 - 갱신 - 반복의 네 단계로 동작한다.
- 엘보우 방법과 실루엣 점수로 최적 K를 결정한다.
- 초기화에 민감하므로 K-means++를 사용하는 것이 좋다.
- 구형 군집에는 강력하지만, 비구형 데이터에는 한계가 있다.
- 고객 세분화, 이미지 압축, 이상 탐지 등 다양한 분야에 활용된다.
다음 장 예고: K-평균이 실패하는 형태의 군집을 다루는 계층적 클러스터링과 DBSCAN을 배웁니다.