문서를 주제별로 묶고 싶은데 레이블이 없다.
이처럼 정답(레이블) 없이 데이터를 스스로 비슷한 것끼리 묶는 것이 군집화(Clustering)다.
이번 글에서는 군집화의 개념부터 시작해서 계층적 군집화, K-means, DBSCAN의 원리와 활용을 정리한다.
1. 군집화란?
군집화는 비지도 학습(Unsupervised Learning)의 대표적인 기법이다. 레이블 없이 데이터 자체의 구조·패턴·유사성을 바탕으로 비슷한 데이터끼리 같은 군집(Cluster)으로 묶는다.
군집화 vs 분류
"이 고객은 A등급인가 B등급인가?" → 이미 A/B 기준이 정해져 있음
→ 학습 데이터의 레이블로 경계를 학습
"이 고객들을 비슷한 유형끼리 묶으면 몇 개 그룹이 나오나?" → 기준 없이 스스로 발견
→ 데이터의 구조 자체에서 패턴 발견
군집화의 목표
- 군집 내 응집도 최대화: 같은 군집 안의 데이터들이 서로 최대한 가까워야 한다
- 군집 간 분리도 최대화: 다른 군집들은 서로 최대한 멀리 떨어져야 한다
군집화 활용 사례
- 고객 세분화: 구매 패턴·연령·취향 등으로 고객 그룹 자동 발견
- 문서 분류: 뉴스 기사를 주제별로 자동 분류
- 이상 탐지: 대부분의 군집에서 멀리 떨어진 데이터 = 이상치
- 유전자 발현 분석: 비슷한 발현 패턴의 유전자 그룹 발견
- 이미지 압축: 비슷한 색상 픽셀을 군집화해 색상 수 감소
- 추천 시스템: 비슷한 사용자 군집 → 같은 군집 내 다른 사용자의 선호 추천
2. 거리 측도 — 군집화의 기반
군집화는 "얼마나 비슷한가"를 수치로 표현해야 한다. 이를 위해 다양한 거리 척도가 사용된다.
| 거리 척도 | 공식 | 특징 | 사용 상황 |
|---|---|---|---|
| 유클리드 거리 | √Σ(xᵢ−yᵢ)² | 직선 거리. 가장 일반적 | 연속형, 정규화된 데이터 |
| 맨해튼 거리 | Σ|xᵢ−yᵢ| | 격자 이동 거리. 이상치 강건 | 고차원, 이상치 많을 때 |
| 코사인 유사도 | x·y / (||x||·||y||) | 방향 유사성. 크기 무관 | 텍스트, 문서 벡터 |
| 마할라노비스 | √((x−y)ᵀΣ⁻¹(x−y)) | 상관관계 고려 | 변수 간 상관 있을 때 |
변수 단위가 다르면 큰 값을 가진 변수가 거리를 지배한다.
예) 나이(20~60)와 소득(1000~10000만원)을 그대로 사용하면 소득이 거리를 압도한다.
→ K-means, 계층적 군집화 등 거리 기반 방법은 반드시 StandardScaler로 정규화 필요.
3. 계층적 군집화 (Hierarchical Clustering)
핵심 아이디어
계층적 군집화는 데이터를 나무(트리) 구조로 군집화한다. 가장 가까운 것들부터 차례로 합치거나(응집), 전체를 분리하는 방식으로 작동한다. 결과물인 덴드로그램(Dendrogram)을 통해 어느 레벨에서 몇 개의 군집으로 나눌지 직관적으로 파악할 수 있다. 군집 수를 사전에 결정하지 않아도 된다는 것이 큰 장점이다.
응집형(Agglomerative) vs 분리형(Divisive)
가장 가까운 두 군집을 반복적으로 합쳐나간다.
마지막에는 모든 데이터가 하나의 군집이 됨.
→ 아래에서 위로 쌓아 올리는 방식
가장 이질적인 부분을 반복적으로 분리.
마지막에는 각 데이터가 개별 군집이 됨.
→ 위에서 아래로 나누는 방식. 계산 비용이 큼.
군집 간 거리 계산 방법 (연결법, Linkage)
두 군집이 합쳐질 때 "두 군집 사이의 거리"를 어떻게 정의하느냐에 따라 결과가 달라진다.
특성: 군집이 길게 늘어지는 경향 (Chaining Effect). 이상치에 민감.
특성: 비교적 균일한 크기의 군집 생성. 이상치에 덜 민감.
특성: 단일·완전 연결의 절충. 안정적이고 가장 많이 사용.
특성: 균일한 크기의 군집 생성. 유클리드 거리 전제. 실무에서 가장 추천.

장점: 군집 수를 미리 정하지 않아도 됨 / 덴드로그램으로 시각적 해석 가능 / 모든 군집 수의 결과를 한 번에 확인
단점: 계산 복잡도 O(n² log n) ~ O(n³) → 대용량 데이터에 매우 느림 / 한 번 합치면 되돌릴 수 없음 (탐욕적)
4. K-means 군집화
핵심 아이디어
K-means는 가장 널리 사용되는 군집화 알고리즘이다. K개의 중심점(Centroid)을 반복적으로 업데이트해서 각 데이터 포인트가 가장 가까운 중심점의 군집에 속하도록 한다.

K-means 알고리즘 단계
- 초기화: K개의 중심점(Centroid)을 랜덤하게 선택
- 할당: 각 데이터 포인트를 가장 가까운 중심점의 군집에 배정
- 업데이트: 각 군집의 평균(Mean)을 새로운 중심점으로 재계산
- 반복: 중심점이 더 이상 변하지 않을 때까지 2~3 반복
군집 내 분산의 합(WCSS, Within-Cluster Sum of Squares)을 최소화
= 각 데이터와 자신의 군집 중심 사이 거리의 제곱합
K 값 결정 — 엘보우 방법과 실루엣 계수
감소량이 급격히 줄어드는 "팔꿈치" 지점의 K 선택.
단점: 팔꿈치가 명확하지 않은 경우 주관적 판단 필요.
s = (b−a) / max(a,b) → −1~1 범위
실루엣 계수가 가장 높은 K 선택.
0.5 이상이면 좋은 군집화.
고객 수: 5,000명
군집 2 (2,200명): 구매 보통, 금액 중간, 간헐적 → "일반 고객"
군집 3 (1,000명): 구매 드물고, 금액 낮음, 오래됨 → "이탈 위험 고객"
→ 군집별로 다른 마케팅 전략 적용 가능
K-means의 한계
- K를 미리 정해야 한다: 적절한 K를 모르면 실험이 필요
- 구형(spherical) 군집 가정: 길쭉하거나 복잡한 형태의 군집은 제대로 탐지 못함
- 이상치에 민감: 이상치가 중심점 계산을 왜곡
- 초기값에 민감: 랜덤 초기화에 따라 결과가 달라질 수 있음 → K-means++ 로 개선
- 균일한 크기 군집 선호: 크기가 매우 다른 군집을 잘 탐지 못함
일반 K-means는 초기 중심을 완전히 랜덤하게 선택해서 나쁜 결과가 나올 수 있다.
K-means++는 첫 번째 중심을 랜덤하게 선택한 후, 이후 중심은 기존 중심에서 멀수록 선택될 확률이 높게 설정한다.
→ 초기 중심이 더 고르게 퍼져 수렴 속도와 결과 품질이 향상된다.
sklearn의 KMeans는 기본값이 init='k-means++'다.
5. DBSCAN — 밀도 기반 군집화
핵심 아이디어 — 밀도가 높은 곳이 군집이다
K-means는 구형 군집만 잘 찾는다. 달팽이 모양, 반달 모양처럼 복잡한 형태의 군집은 못 찾는다. DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 발상이 다르다. "데이터가 밀집된 영역 = 군집"이라고 정의하는 것이다. 밀집 영역 사이사이의 희소 영역은 군집 경계, 어느 군집에도 속하지 못하는 점은 노이즈(이상치)로 처리한다.
DBSCAN의 두 가지 핵심 파라미터
어떤 점을 중심으로 반지름 ε 안에 있는 점들이 그 점의 "이웃"이다.
너무 작으면: 핵심 포인트 거의 없음 → 이상치 많아짐
너무 크면: 모두 하나의 군집
ε 반경 안에 MinPts개 이상의 점이 있어야 핵심 포인트.
너무 작으면: 이상치도 핵심 포인트가 됨
너무 크면: 핵심 포인트 거의 없음
포인트 유형 — DBSCAN의 핵심 개념
DBSCAN은 각 데이터 포인트를 세 가지로 분류한다.

DBSCAN 알고리즘 작동 과정
- 임의의 미방문 포인트를 선택
- 해당 포인트의 ε-이웃 내 포인트 수를 확인
- 이웃 수 ≥ MinPts → 핵심 포인트. 새 군집 형성. 이웃들을 군집에 추가
- 추가된 이웃들도 핵심 포인트인지 확인 → 연쇄적으로 군집 확장 (밀도 연결)
- 이웃 수 < MinPts → 핵심 포인트의 이웃이면 경계 포인트. 아니면 노이즈
- 모든 포인트를 방문할 때까지 반복
MinPts: 보통 데이터 차원의 2배 이상을 권장. 2D 데이터면 MinPts ≥ 4.
ε: k-거리 그래프(k-distance graph)를 그려서 팔꿈치 지점의 값을 선택.
각 포인트의 k번째 가장 가까운 이웃까지의 거리를 정렬해서 그래프로 그리면,
급격히 증가하는 지점이 좋은 ε 값이다.
DBSCAN의 강점
- 군집 수를 미리 정하지 않아도 된다
- 복잡한 형태의 군집 탐지 가능: 달팽이·반달·링 모양도 탐지
- 이상치를 자동으로 탐지: 어느 군집에도 속하지 않는 점 = 노이즈
- 크기가 다른 군집도 탐지 가능
1. 밀도가 다른 군집 처리 어려움: 밀집된 군집과 희소한 군집이 공존하면 하나의 ε, MinPts로 모두 잡기 어렵다
2. 고차원에서 성능 저하: 고차원에서 거리 개념이 희미해짐 (차원의 저주)
3. 파라미터 설정 어려움: ε와 MinPts를 직접 설정해야 해서 도메인 지식 필요
→ HDBSCAN(Hierarchical DBSCAN)은 다양한 밀도의 군집도 처리 가능한 개선 버전
6. 세 가지 군집화 방법 종합 비교
| 구분 | 계층적 군집화 | K-means | DBSCAN |
|---|---|---|---|
| 군집 수 사전 결정 | 불필요 (나중에 결정) | 필요 | 불필요 |
| 군집 형태 | 유연 (연결법에 따라 다름) | 구형(원형) | 임의 형태 가능 |
| 이상치 처리 | 군집에 포함됨 | 군집에 포함됨 (중심 왜곡) | 자동으로 노이즈로 처리 |
| 대용량 데이터 | 느림 (O(n²~n³)) | 빠름 (O(nKt)) | 중간 (O(n log n) ~ O(n²)) |
| 결과 시각화 | 덴드로그램 | 중심점 기반 | 밀도 기반 시각화 |
| 스케일 민감도 | 민감 (표준화 필요) | 민감 (표준화 필수) | 민감 (표준화 권장) |
| 주요 하이퍼파라미터 | 연결법 (Linkage) | K (군집 수) | ε, MinPts |
| 적합한 데이터 | 소규모, 계층 구조 파악 | 대규모, 구형 군집 | 복잡한 형태, 이상치 탐지 |
• 데이터가 적고 군집 수를 모를 때, 계층 구조가 궁금할 때 → 계층적 군집화
• 데이터가 많고 군집이 대략 구형일 것 같을 때 → K-means (K-means++ 사용)
• 군집 형태가 복잡하거나 이상치를 자동으로 탐지하고 싶을 때 → DBSCAN
• 밀도가 다양한 복잡한 군집 구조일 때 → HDBSCAN
• 실무에서는 여러 방법을 시도해보고 실루엣 계수 등 평가 지표로 비교하는 것이 권장됨
7. 군집화 결과 평가
군집화는 정답 레이블이 없어서 평가가 까다롭다. 크게 두 가지 방식으로 평가할 수 있다.
a: 군집 내 평균 거리 / b: 가장 가까운 다른 군집까지 평균 거리
−1~1, 높을수록 좋음 (0.5 이상 권장)
Davies-Bouldin Index: 낮을수록 좋음
Calinski-Harabasz Index: 높을수록 좋음
ARI (Adjusted Rand Index): −1~1, 높을수록 좋음
NMI (Normalized Mutual Information): 0~1
V-measure: 균질성과 완전성의 조화 평균
📌 핵심 정리
- 군집화: 레이블 없이 유사한 데이터를 자동으로 그룹화. 비지도 학습
- 군집화 목표: 군집 내 응집도 최대화 + 군집 간 분리도 최대화
- 거리 기반 방법은 표준화 필수
- 계층적 군집화: 군집 수 사전 결정 불필요. 덴드로그램으로 시각화. 대용량에 느림
- 연결법: 단일(최솟값), 완전(최댓값), 평균, 와드(SSW 최소). 실무엔 와드 추천
- K-means: K 사전 결정 필요. 빠름. 구형 군집. 이상치에 민감
- K-means++: 초기 중심을 더 고르게 선택해 수렴 속도와 품질 향상
- K 결정 방법: 엘보우 방법 (WCSS 팔꿈치) / 실루엣 계수 최대값
- DBSCAN: 밀도 기반. 군집 수 불필요. 복잡한 형태 처리. 이상치 자동 탐지
- DBSCAN 3종 포인트: 핵심(이웃 ≥ MinPts) / 경계(핵심의 이웃) / 노이즈(둘 다 아님)
- 실루엣 계수: 군집화 품질의 내부 평가 지표. 0.5 이상이면 양호
'수학&통계학' 카테고리의 다른 글
| [수열의 극한] 수렴과 발산 완전 정복 — 극한값 계산 유형별 총정리 (0) | 2026.05.18 |
|---|---|
| 연관규칙 분석 (1) | 2026.05.16 |
| 차원 축소 (2) : 요인 분석(FA), 다차원 척도법(MDS), 자기조직화 지도(SOM) (0) | 2026.05.15 |
| 차원 축소 (1) : 주성분 분석(PCA) (0) | 2026.05.15 |
| 시계열 분석 (3) : 시계열 분해, 이동평균, 지수평활법, 평가지표 (0) | 2026.05.15 |