Ch.08
K-평균 군집화 (K-Means): 정답 없이 끼리끼리 묶기
정답(라벨) 없이 데이터만 보고 비슷한 것끼리 묶는 비지도학습의 대표 알고리즘입니다. Ch01에서 배운 '비지도학습'이 실제로 어떻게 동작하는지, 거리를 기준으로 K개의 그룹(군집)을 만드는 K-Means를 통해 개념 → 직관 → 수식 → 실전 순으로 알아봅니다. KNN(Ch02)에서 썼던 거리 공식을 다시 쓰고, '끼리끼리 묶기'를 반복할수록 더 뚜렷한 군집이 만들어지는 과정을 시각화와 함께 배웁니다.
챕터별 머신러닝 도식화
챕터를 선택하면 아래 도식이 해당 챕터 내용으로 바뀌어요. 머신러닝 흐름을 한눈에 보세요.
가장 가까운 중심에 점을 묶고, 중심을 소속 점들의 평균으로 옮기며 반복합니다.
① 데이터 — 라벨 없는 점들이 특성 공간에 흩어져 있음
점: 데이터
K-평균 군집화: 정답 없이 끼리끼리 묶기
K-Means란? 정답 없이 거리로 끼리끼리 묶기 — 라벨 가 전혀 주어지지 않은 데이터 만 있을 때, 가장 가까운 것끼리 K개의 그룹으로 나누는 알고리즘입니다. '가깝다'는 기준은 Ch02 KNN에서처럼 유클리드 거리 를 사용합니다. 각 그룹은 한 개의 대표점(중심, centroid) 로 요약되고, 반복적으로 '점을 가장 가까운 중심에 배정' → '각 군집의 점들 평균으로 중심 갱신'을 하여 군집이 안정될 때까지 진행합니다.
K는 '몇 개의 그룹으로 나눌지'를 정하는 수 — K-Means에서는 군집 개수 K를 사람이 미리 정해 줍니다. K=2면 두 덩어리, K=3이면 세 덩어리로 나뉩니다. 정답 라벨이 없기 때문에 '어떤 군집이 정답인가'는 알 수 없고, 단지 '비슷한 것끼리 묶인 결과'만 얻습니다. 실무에서는 K를 바꿔 가며 결과를 보고, 도메인 지식이나 엘보우 법·실루엣 점수 등으로 적절한 K를 고릅니다.
목표: 군집 내 거리 합(SSE) 최소화 — 알고리즘이 최소화하려는 것은 왜곡(SSE, Sum of Squared Errors) 입니다. 즉, 각 점이 자기 군집의 중심과 얼마나 가까운지의 제곱합을 줄이는 것입니다. 중심 갱신 공식 는 '그 군집에 속한 점들의 좌표 평균'으로, 이렇게 옮기면 해당 군집의 SSE가 줄어듭니다.
수식이 부담스럽다면 — 거리 공식은 '한 점과 한 중심 사이의 길이'를 재는 것이고, SSE 는 '군집이 얼마나 뭉쳐 있는지'를 숫자로 잡은 것입니다. 중심 갱신식은 말 그대로 '그 군집에 속한 점들 좌표의 평균'을 구하는 식이라, 단계만 따라가면 자연스럽게 읽히도록 아래 수식 설명에서 기호별로 풀어 썼습니다.
Ch01 비지도학습의 대표 사례 — Ch01에서 '라벨 없이 구조·군집을 찾는 학습'으로 비지도학습을 소개했습니다. K-Means는 그 말을 실제로 구현한 대표 알고리즘입니다. 고객 세분화, 문서/이미지 클러스터링, 이상 탐지 전처리 등에서 라벨이 없을 때 첫 번째로 시도하는 방법입니다.
고객 세분화·세그멘테이션 — 쇼핑몰에서 '구매 이력만 있고 고객 유형 라벨이 없을 때' K-Means로 비슷한 고객끼리 묶어 VIP/일반/이탈 위험 등 세그먼트를 만든 뒤, 사람이 각 군집에 의미를 붙여 활용합니다. 이후 Ch09 교차 검증, Ch12 추천 등과 연결되는 전처리 단계로도 쓰입니다.
직관적이고 구현이 단순함 — 할당 단계(가장 가까운 중심 고르기)와 갱신 단계(평균 계산)만 반복하면 되므로 코드로 짜기 쉽고, 2차원으로 시각화하면 '끼리끼리 묶이는' 과정을 눈으로 확인할 수 있어 학습하기 좋습니다.
군집화(Clustering) — 고객 세분화, 주제별 문서/뉴스 묶기, 이미지 색상/영역 압축, 유전자 표현형 그룹 찾기 등 '비슷한 것끼리 묶기'가 목적일 때 사용합니다.
전처리·특성 요약 — 군집 번호를 새 특성으로 붙여서 지도 학습 모델에 넣거나, 군집별 대표(중심)만 남겨 데이터 크기를 줄이는 용도로 씁니다.
K 선택 — K는 사용자가 정합니다. 여러 K에 대해 SSE·실루엣 등을 보고 꺾이는 지점(엘보우)이나 해석 가능성을 고려해 선택합니다.
정리
(1) 입력: 라벨 없는 데이터 점들, 군집 개수 .
(2) 초기화: 개의 중심(centroid)을 무작위 또는 휴리스틱으로 둠.
(3) 할당: 각 점을 거리가 가장 가까운 중심의 군집에 배정.
(4) 갱신: 각 군집에 속한 점들의 좌표 평균을 새 중심으로 둠.
(5) 반복: 할당·갱신이 바뀌지 않을 때까지 3–4단계를 반복.
목표: SSE(왜곡) 를 최소화.
중심 갱신식:
아래 문제 풀이를 위한 설명 표와 예시를 참고하세요.
용어 설명
- 구분거리 제곱
- 설명두 점 , 사이 유클리드 거리 제곱: . K-Means에서는 거리 비교만 하면 되므로 제곱근 없이 제곱합만 써도 됨.
- 구분할당
- 설명점이 주어지고 중심이 개일 때, 각 중심까지의 거리(또는 거리 제곱)를 계산해 가장 작은 중심 번호(1번부터)가 그 점의 군집.
- 구분중심 갱신
- 설명군집 에 속한 점들의 좌표 평균, 좌표 평균을 구하면 새 중심 . 반올림 시 소수 첫째 자리 또는 정수로.
- 구분SSE
- 설명한 군집 안에서 . 각 점과 중심의 거리 제곱 합.
| 구분 | 설명 |
|---|---|
| 거리 제곱 | 두 점 , 사이 유클리드 거리 제곱: . K-Means에서는 거리 비교만 하면 되므로 제곱근 없이 제곱합만 써도 됨. |
| 할당 | 점이 주어지고 중심이 개일 때, 각 중심까지의 거리(또는 거리 제곱)를 계산해 가장 작은 중심 번호(1번부터)가 그 점의 군집. |
| 중심 갱신 | 군집 에 속한 점들의 좌표 평균, 좌표 평균을 구하면 새 중심 . 반올림 시 소수 첫째 자리 또는 정수로. |
| SSE | 한 군집 안에서 . 각 점과 중심의 거리 제곱 합. |
예시 (할당)
중심이 , 일 때 점 이 속할 군집 번호는?
거리 제곱: , . 같으면 보통 1번. → 정답 1
예시 (중심 갱신)
군집 1에 점 , 가 속하면 새 중심:
, → (2, 3)
수식 설명
① 거리
무슨 뜻인가요? — 한 데이터 점 와 한 중심 사이의 직선 거리(자로 잰 길이)를 재는 공식입니다.
기호 읽기 — 는 그 점의 번째 특성 값, 는 중심의 번째 좌표입니다. 예를 들어 특성이 2개(키, 몸무게)면 =키, =몸무게이고, 를 더한 뒤 제곱근을 쓰면 2차원에서는 피타고라스 정리와 똑같은 '직선 거리'가 됩니다.
숫자 예 — 점 , 중심 이면 차이: , . 거리 제곱 , 거리 .
K-Means에서는? — '어느 중심이 더 가까운지'만 비교하면 되므로, 제곱근 없이 거리 제곱 만 써도 됩니다. 작은 쪽이 가까운 중심입니다.
한줄 요약: 점과 중심의 직선 거리(또는 거리 제곱)를 재는 식.
② 목표(SSE)
무슨 뜻인가요? — '모든 군집을 다 합쳐서, 각 점이 자기 군집 중심에서 얼마나 떨어져 있는지'를 제곱해서 더한 값입니다. 이 값을 SSE(또는 왜곡)라고 부릅니다.
기호 읽기 — = 군집 번호(1, 2, …). = 번 군집에 속한 점들의 집합. = 번째 데이터 점의 좌표. = 번 군집의 중심. = 점 와 중심 사이 거리 제곱입니다.
왜 제곱을 쓰나요? — 거리를 그냥 더하면 양수·음수 구분이 애매해지고, 제곱하면 '멀수록 값이 크게' 들어가서 '뭉쳐 있는 군집'이 더 잘 드러납니다. 그래서 가 작을수록 점들이 중심 주변에 잘 모여 있다는 뜻입니다.
예 — 군집 1에 점이 3개 있고, 각 점이 중심과의 거리 제곱이 1, 4, 9라면, 그 군집 기여분만 입니다. 모든 군집에 대해 이런 값을 다 더한 것이 입니다. 알고리즘은 이 를 줄이는 방향으로 중심을 옮깁니다.
한줄 요약: 군집이 얼마나 뭉쳐 있는지를 나타내는 수. 작을수록 좋음.
③ 중심 갱신
무슨 뜻인가요? — 번 군집에 속한 점들의 좌표 평균을 구해서, 그걸 새 중심으로 두는 식입니다.
기호 읽기 — = 군집 에 속한 점의 개수. = 그 군집에 속한 점들의 , 좌표를 각각 다 더한 것. 거기에 를 곱하면 평균이 됩니다.
숫자 예 — 군집 1에 점 , , 세 개가 있으면 . 합 , 합 . 새 중심 , → (3, 2).
왜 평균인가요? — 평균 위치로 중심을 옮기면, 그 군집 안에서 '점들이 중심에서 떨어진 거리 제곱의 합(SSE)'이 줄어듭니다. 수학적으로 그렇게 증명되기 때문에 K-Means는 이 식으로 중심을 갱신합니다.
한줄 요약: 그 군집에 속한 점들의 평균, 평균을 새 중심으로 둡니다.