P4-17.3 보충학습: 계층적 군집화와 스펙트럴 군집화¶
Section ID:
P4-17.3Version:v2026.07.23
P4-17.1에서 k-means와 DBSCAN을 보았다면, 곧 이런 질문이 남습니다.
군집 알고리즘은 왜 이렇게 이름이 많고, 서로 무엇이 다른가?
이 질문을 처음 정리할 때 자주 다시 만나는 이름이 계층적 군집화(hierarchical clustering)와 스펙트럴 클러스터링(spectral clustering)입니다.
이 절은 두 방법의 구현 세부를 길게 전개하기보다, 무엇을 기준으로 묶음을 만들려 하는가라는 관점에서 처음 구분하는 보충학습입니다.
보충학습: 계층적 군집화와 스펙트럴 클러스터링을 처음 구분하는 법에서 닫을 질문¶
이 절은 다음 질문에 답합니다.
- 계층적 군집화는 무엇을 단계적으로 보여 주는가?
- 스펙트럴 클러스터링은 왜 거리보다 연결 구조를 먼저 본다고 말하는가?
- k-means, DBSCAN과 비교하면 두 방법은 어떤 장면에서 떠오르는가?
- 네 방법을 처음 구분할 때 무엇부터 기록하면 좋은가?
이 절은 트리처럼 합쳐 가는 관점과 그래프를 끊어 묶는 관점을 처음 구분하는 데 집중합니다.
보충학습: 계층적 군집화와 스펙트럴 클러스터링을 처음 구분하는 법에서 남길 판단 기준¶
- 계층적 군집화를
합쳐지는 순서를 보여 주는 군집화로 설명할 수 있습니다. - 스펙트럴 클러스터링을
연결 구조를 다시 읽어 묶는 군집화로 설명할 수 있습니다. - k-means, DBSCAN, 계층적 군집화, 스펙트럴 클러스터링이 서로 다른 질문에서 출발한다는 점을 말할 수 있습니다.
왜 이 절이 필요한가¶
클러스터링을 처음 배우면 알고리즘 이름이 늘어날수록 오히려 더 헷갈리기 쉽습니다.
- k-means는 중심을 본다
- DBSCAN은 밀도를 본다
- 그런데 어떤 것은 트리 같고, 어떤 것은 그래프 같다고 한다
여기서 중요한 것은 이름을 더 많이 외우는 일이 아닙니다. 더 중요한 것은 이 알고리즘은 군집을 무엇으로 읽으려 하는가를 먼저 붙잡는 일입니다.
즉, 17.3은 클러스터링 계열을 중심, 밀도, 합쳐지는 순서, 연결 구조라는 네 감각으로 다시 정리하는 절입니다.
계층적 군집화는 무엇을 보여 주는가¶
계층적 군집화는 점들을 처음부터 몇 개 군집으로 딱 잘라 두기보다, 무엇이 먼저 가까워지고 무엇이 나중에 합쳐지는가를 단계적으로 보여 주려는 방식입니다.
입문적으로는 다음 한 문장이 핵심입니다.
계층적 군집화는 군집 결과 하나보다, 묶음이 자라는 순서를 같이 보여 준다.
예를 들어 고객 네 명이 있다고 해 보겠습니다.
- A와 B는 매우 비슷하다
- C와 D도 꽤 비슷하다
- A/B 묶음과 C/D 묶음은 서로는 조금 멀다
이때 계층적 군집화는 A와 B가 먼저 합쳐지고, C와 D가 합쳐진 뒤, 마지막에 두 묶음이 더 큰 묶음으로 합쳐진다는 순서를 보여 줄 수 있습니다.
flowchart TB
A["군집 A"]
B["군집 B"]
C["군집 C"]
D["군집 D"]
AB["A+B 결합"]
CD["C+D 결합"]
ALL["(A+B)+(C+D) 결합"]
A --> AB
B --> AB
C --> CD
D --> CD
AB --> ALL
CD --> ALL
이 도식의 핵심은 최종 군집 수보다 합쳐지는 순서입니다. 그래서 계층적 군집화는 몇 개로 자를지 아직 확정하지 않았지만, 가까워지는 구조를 먼저 보고 싶다는 장면에서 자연스럽게 떠오릅니다.
이 차이를 더 짧게 적으면 다음처럼 읽을 수 있습니다.
| 먼저 알고 싶은 것 | 계층적 군집화가 더 잘 맞는 이유 |
|---|---|
| 지금 2개로 볼지 4개로 볼지 아직 애매하다 | 합쳐지는 순서를 보며 자르는 위치를 뒤에서 다시 정할 수 있기 때문 |
| 어떤 샘플들이 가장 먼저 서로 비슷해지는지 보고 싶다 | 최종 군집 수보다 가까워지는 단계 자체를 보여 주기 때문 |
| 도메인 검토와 함께 묶음 수준을 조절하고 싶다 | 한 번의 고정 답보다 여러 수준의 묶음 후보를 같이 볼 수 있기 때문 |
즉, 계층적 군집화는 정답 군집 수를 한 번에 맞히는 방법이라기보다 묶음이 자라는 구조를 먼저 보고, 어느 높이에서 잘라 읽을지 나중에 판단하는 방법에 가깝습니다. 그래서 도메인 해석이 아직 덜 끝난 초반 탐색에서 특히 유용합니다.
스펙트럴 클러스터링은 무엇을 보려 하는가¶
스펙트럴 클러스터링은 점들을 단순히 좌표 거리로만 읽기보다, 누가 누구와 연결되어 있는가라는 그래프(graph) 구조로 다시 읽으려는 방식입니다.
입문적으로는 다음처럼 잡으면 충분합니다.
스펙트럴 클러스터링은 가까운 점의 모양보다 연결 관계의 끊김을 더 잘 읽으려 한다.
예를 들어 반달 모양처럼 휘어진 두 무리가 있다고 해 보겠습니다. 이런 장면에서는 중심 기반인 k-means가 경계를 곧게 잘라 버릴 수 있지만, 연결 구조를 본다면 같은 곡선 위의 점들을 한 묶음으로 읽는 편이 더 자연스러울 수 있습니다.
flowchart TD
A["점들"]
B["유사도 그래프를 만든다"]
C["연결 구조를 찾는다"]
D["그래프를 그룹으로 나눈다"]
A --> B --> C --> D
이 흐름의 핵심은 원래 좌표를 그대로 자르는가가 아니라, 연결 관계를 새 표현으로 만든 뒤 그 구조를 끊는가입니다. 그래서 스펙트럴 클러스터링은 복잡한 모양인데도 연결은 또렷한가를 먼저 묻는 장면에서 떠오릅니다.
이 점을 더 직접 비교하면 다음처럼 읽을 수 있습니다.
| 먼저 부딪히는 문제 | 스펙트럴 클러스터링을 떠올리는 이유 |
|---|---|
| 중심점으로 자르니 곡선형 구조가 중간에서 끊긴다 | 좌표 중심보다 연결 관계를 먼저 읽는 편이 자연스럽기 때문 |
| 서로 멀어 보여도 같은 곡선을 따라 이어진 점들이 있다 | 이웃 관계를 그래프로 보면 같은 구조 안의 연결이 더 잘 드러나기 때문 |
| 군집 모양이 둥근 덩어리처럼 보이지 않는다 | 거리 하나보다 그래프 구조를 다시 만드는 쪽이 더 맞을 수 있기 때문 |
다만 모양이 복잡하다는 이유만으로 항상 스펙트럴 클러스터링이 맞는 것은 아닙니다. 핵심은 복잡한 모양 자체보다 이웃 관계를 그래프로 만들었을 때 같은 구조 안의 연결이 더 잘 드러나는가입니다. 즉, 스펙트럴 클러스터링은 좌표를 바로 자르기보다 연결 관계를 다시 표현한 뒤 그 구조를 읽는 방식으로 이해하는 편이 더 정확합니다.
네 가지 직관을 나란히 두면¶
이제 Chapter 17에서 나온 대표 직관을 한 표에 놓으면 다음처럼 정리할 수 있습니다.
| 방법 | 먼저 보는 것 | 자연스럽게 떠오르는 장면 | 먼저 조심할 점 |
|---|---|---|---|
| k-means | 중심(center) | 둥글고 비교적 고른 묶음을 빠르게 보고 싶을 때 | 군집 수와 모양 가정에 민감하다 |
| DBSCAN | 밀도(density) | 노이즈를 따로 두고 비정형 묶음을 보고 싶을 때 | eps, min_samples에 민감하다 |
| 계층적 군집화 | 합쳐지는 순서 | 묶음이 자라는 구조를 단계적으로 보고 싶을 때 | 어디에서 자를지 해석이 필요하다 |
| 스펙트럴 클러스터링 | 연결(connectivity) | 복잡한 모양이지만 연결 구조가 분명할 때 | 유사도 그래프를 어떻게 만들지에 민감하다 |
이 표의 목적은 우열 비교가 아닙니다. 군집을 무엇으로 읽는가가 다르다는 점을 붙잡는 것이 먼저입니다.
이 비교를 실제 선택 질문으로 바꾸면 다음과 같습니다.
| 지금 먼저 묻는 질문 | 더 먼저 떠오르는 방법 |
|---|---|
| 몇 개 군집으로 볼지보다 묶음이 자라는 순서를 보고 싶은가 | 계층적 군집화 |
| 노이즈를 따로 두고 비정형 묶음을 보고 싶은가 | DBSCAN |
| 둥글고 비교적 고른 묶음을 빠르게 잡고 싶은가 | k-means |
| 곡선형이나 복잡한 연결 구조를 끊어 읽고 싶은가 | 스펙트럴 클러스터링 |
여기서 계층적 군집화와 스펙트럴 클러스터링이 특히 갈리는 장면을 더 직접 적으면 다음과 같습니다.
| 지금 먼저 부딪히는 질문 | 더 자연스러운 출발점 |
|---|---|
몇 개로 잘라 읽는가보다 무엇이 먼저 합쳐지는가가 궁금한가 | 계층적 군집화 |
묶음 수보다 가까워지는 순서 자체가 해석의 단서인가 | 계층적 군집화 |
| 중심점으로는 잘 안 보이는 곡선형 구조가 있는가 | 스펙트럴 클러스터링 |
좌표 거리보다 누가 누구와 이어져 있는가가 더 중요해 보이는가 | 스펙트럴 클러스터링 |
사례 및 예시¶
사례 1. 고객 세그먼트를 몇 단계로 묶을지 아직 정하지 못했을 때¶
구독 서비스 팀이 고객을 묶어 보려는데, 처음부터 3개 군집이나 4개 군집으로 고정하기가 어렵다고 해 보겠습니다. 이때는 계층적 군집화가 유용한 출발점이 될 수 있습니다. 어떤 고객들이 먼저 가까워지고, 어느 단계에서 더 큰 묶음으로 합쳐지는지 보면 지금 2개로 보는 편이 자연스러운가, 4개로 나누는 편이 자연스러운가를 도메인 검토와 함께 읽을 수 있기 때문입니다.
즉, 이 장면에서 중요한 것은 정답 군집 수를 자동으로 찾는 일이 아니라, 묶음이 자라는 순서를 보고 해석 후보를 더 신중하게 세우는 일입니다.
flowchart TD
A["고객 행동 표"]
B["고정된 k가 여전히 불명확함"]
C["어떤 그룹이 먼저 합쳐지는지 본다"]
D["2개 그룹 절단과 4개 그룹 절단을 비교"]
E["도메인 맥락과 함께 세그먼트 의미를 검토"]
A --> B --> C --> D --> E
사례 2. 굽은 이동 경로 패턴을 중심점으로는 잘 자르기 어려울 때¶
위치 로그나 이동 궤적처럼 데이터가 길게 휘어진 모양을 띠면, k-means는 중심점 기준으로 곧게 잘라 버릴 수 있습니다. 이런 장면에서는 같은 곡선 위에서 연결된 점들을 더 중요하게 보고 싶은 경우가 생기고, 이때 스펙트럴 클러스터링을 떠올릴 수 있습니다. 즉, 가까운 중심보다 같은 구조 안에서 이어져 있는가가 더 중요한 문제 장면입니다.
flowchart TD
A["곡선 궤적 점들"]
B["중심 기반 절단이 어색해 보임"]
C["이웃 연결을 살핀다"]
D["연결 구조로 나눈다"]
E["곡선이 유지되는지 검토한다"]
A --> B --> C --> D --> E
두 사례를 함께 보면 차이는 더 선명해집니다.
| 사례에서 먼저 읽은 질문 | 더 잘 맞는 방법 | 이유 |
|---|---|---|
| 고객 묶음을 몇 단계 수준으로 읽을지 아직 애매한가 | 계층적 군집화 | 합쳐지는 순서를 보며 여러 절단 수준을 비교할 수 있기 때문 |
| 휘어진 이동 경로가 같은 구조로 이어지는지 보고 싶은가 | 스펙트럴 클러스터링 | 중심보다 연결 구조를 먼저 읽는 편이 자연스럽기 때문 |
즉, 계층적 군집화는 묶음이 자라는 순서를 해석하는 쪽에 가깝고, 스펙트럴 클러스터링은 연결 구조가 유지되는가를 보는 쪽에 가깝습니다.
연습 및 예제¶
이번 연습은 무슨 군집 직관을 먼저 떠올릴지를 독자가 직접 먼저 고른 뒤, 바로 아래 해설과 비교하는 검증형 실습입니다.
- 문제 상황: 둥근 묶음, 비정형 묶음, 합쳐지는 순서, 연결 구조 중 무엇이 먼저 중요한지 장면별로 구분한다
- 입력(input): 짧은 문제 장면 설명 4개
- 기대 출력(output): 장면마다 더 먼저 떠올릴 군집 방법과 그 이유
- 확인할 개념:
- 군집 알고리즘 이름보다 먼저 읽어야 할 질문이 있다
- 같은 데이터라도
무엇을 보고 싶은가에 따라 출발점이 달라진다
먼저 아래 표의 먼저 떠올릴 방법 열을 가리고, 각 장면에서 어떤 방법을 먼저 떠올릴지 스스로 적어 봅니다. 그다음 표의 답과 이유를 비교합니다.
| 장면 | 먼저 떠올릴 방법 | 왜 이 방법인가 |
|---|---|---|
| 둥글고 비교적 고른 묶음을 빠르게 기준선으로 보고 싶다 | k-means | 중심을 두고 빠르게 묶음을 보는 질문이기 때문 |
| 노이즈를 따로 두고 비정형 묶음을 보고 싶다 | DBSCAN | 밀도와 노이즈 분리가 먼저 중요한 장면이기 때문 |
| 군집 수를 바로 고정하기보다 무엇이 먼저 합쳐지는지 보고 싶다 | 계층적 군집화 | 최종 군집 수보다 합쳐지는 순서가 해석 단서이기 때문 |
| 곡선형 구조가 이어지는지 보고 싶고 중심 절단은 어색하다 | 스펙트럴 클러스터링 | 좌표 중심보다 연결 구조를 먼저 읽는 편이 더 자연스럽기 때문 |
이 연습의 핵심은 알고리즘 이름을 외우는 일이 아니라, 무슨 구조를 보고 싶은가를 먼저 묻는 일입니다. 답을 맞혔는지보다 왜 이 장면에서 그 질문이 먼저 나오는가를 설명할 수 있는지가 더 중요합니다.
처음 비교할 때 무엇을 기록하면 좋은가¶
처음에는 구현 세부보다 다음 질문을 적어 두는 편이 더 실용적입니다.
| 기록할 질문 | 왜 필요한가 |
|---|---|
| 군집 수를 처음부터 정해야 하는가 | k-means와 다른 방법을 가르는 첫 기준이 되기 때문 |
| 노이즈를 따로 둘 필요가 있는가 | DBSCAN 쪽 감각이 필요한지 가르는 기준이 되기 때문 |
| 합쳐지는 순서 자체가 중요한가 | 계층적 군집화를 떠올릴 이유가 되기 때문 |
| 복잡한 모양인데 연결 구조가 더 중요해 보이는가 | 스펙트럴 클러스터링을 떠올릴 이유가 되기 때문 |
이 질문들을 먼저 적으면, 알고리즘 이름을 외우기보다 현재 데이터 장면이 어떤 군집 직관을 요구하는가를 더 쉽게 읽게 됩니다.
체크리스트¶
- 계층적 군집화는
몇 개로 나뉘었는가보다무엇이 먼저 합쳐지는가를 보여 주는 방식이라는 점을 설명할 수 있는가? - 스펙트럴 클러스터링은
거리 자체보다연결 구조를 다시 읽는 방식에 가깝다는 점을 이해했는가? - 군집 수를 지금 바로 고정하기보다, 무엇이 먼저 가까워지는지 보고 싶은 장면인가?
- 비정형 모양이라는 이유만이 아니라, 연결 구조를 먼저 읽어야 하는 장면인가?
- 군집 결과를 하나의 정답처럼 읽는 대신, 어떤 질문에서 이 방법을 떠올렸는지 설명할 수 있는가?
- k-means, DBSCAN, 계층적 군집화, 스펙트럴 클러스터링을
중심,밀도,순서,연결의 네 축으로 다시 구분할 수 있는가?
출처와 참고 자료¶
- scikit-learn developers,
2.3. Clustering, scikit-learn User Guide. hierarchical clustering, spectral clustering, k-means, DBSCAN의 기본 설명과 비교축을 확인할 때 참고했다. 확인 날짜: 2026-07-19. https://scikit-learn.org/stable/modules/clustering.html - Ulrike von Luxburg,
A Tutorial on Spectral Clustering, Statistics and Computing, 2007. 스펙트럴 클러스터링을 그래프 라플라시안과 연결 구조 관점으로 설명하는 배경을 확인할 때 참고했다. 확인 날짜: 2026-07-19. https://doi.org/10.1007/s11222-007-9033-z