본문으로 바로가기

머신 러닝에서의 군집화: 꼭 알아야 할 5가지 군집 알고리즘

K-Means, DBSCAN, MeanShift, 계층적 군집화, BIRCH 등 5가지 비지도 군집화 알고리즘과 비즈니스 활용 사례, 선택 가이드를 살펴보세요
업데이트됨 2026년 7월 24일  · 15분 읽다

AI로 탐색하기

ChatGPT에서 열기Claude에서 열기Perplexity에서 열기

군집화(Clustering)는 비지도 머신 러닝 기법으로, 패턴 인식, 이미지 분석, 고객 분석, 시장 세분화, 소셜 네트워크 분석 등 다양한 분야에서 활용됩니다. 항공부터 헬스케어까지 광범위한 산업에서 군집화를 사용하고 있습니다. 

이는 비지도 학습의 한 유형으로, 군집화 알고리즘에는 레이블이 지정된 데이터가 필요하지 않습니다. 이는 지도 학습의 일종인 분류 등에 비해 군집화가 가지는 가장 큰 장점 중 하나입니다. 이 글에서는 군집화가 무엇인지, 어떤 비즈니스 사례에서 유용한지, 그리고 꼭 알아야 할 다섯 가지 알고리즘을 소개합니다. 

핵심 요약

  • 군집화는 비지도 머신 러닝입니다. 레이블이 필요하지 않습니다.
  • K-Means는 가장 널리 쓰입니다. DBSCAN은 노이즈와 불규칙한 모양에 강하고, 계층적 군집화는 탐색적 분석에 적합합니다.
  • 보편적으로 항상 최적인 알고리즘은 없습니다. 데이터의 형태, 예상 군집 수, 노이즈 수준을 기준으로 선택하세요.
  • 군집 품질은 지도 모델처럼 측정할 수 없습니다. 실루엣 점수나 데이비스-볼딘 지수를 판단 참고용으로 사용하세요.
  • scikit-learn에는 여기서 다룬 다섯 가지를 포함해 총 열 가지 군집화 알고리즘이 구현되어 있습니다.

군집화란?

군집화는 동일한 그룹(클러스터)에 속한 객체들이 다른 그룹의 객체들보다 서로 더 유사하도록 객체들을 배열하는 과정입니다.  데이터 전문가들은 탐색적 데이터 분석 단계에서 군집화를 활용해 데이터 속 새로운 정보와 패턴을 발견합니다. 군집화는 비지도 학습이므로 레이블이 있는 데이터셋이 필요하지 않습니다. 

군집화는 단일 알고리즘이 아니라 해결해야 할 일반적인 과업입니다. 무엇이 클러스터를 구성하는지, 이를 효율적으로 찾는 방법에 대한 관점이 서로 다른 다양한 알고리즘으로 목표를 달성할 수 있습니다. 

군집화 직관 쌓기

알고리즘 세부 내용에 들어가기 전에, 과일 데이터셋이라는 간단한 예시로 군집화의 직관을 만들어 봅시다. 세 가지 과일 (i) 딸기, (ii) 배, (iii) 사과가 포함된 방대한 이미지 데이터셋이 있다고 해봅시다. 

데이터셋에서 모든 이미지가 섞여 있고, 유사한 과일끼리 묶어 각 과일별로 하나의 그룹을 만드는 것이 목표입니다. 군집화 알고리즘은 정확히 이런 작업을 수행합니다. 

clustering algorithm

군집 분석의 핵심 성공 기준

분류나 회귀 같은 지도 학습과 달리, 군집화는 처음부터 끝까지 완전 자동화하기 어렵습니다. 원하는 결과를 얻기 위해 데이터와 모델 파라미터를 여러 차례 조정하는, 도메인 전문성과 인간의 판단이 필요한 반복적 정보 탐색 과정입니다. 

무엇보다, 군집화는 비지도 학습이라 레이블 데이터를 사용하지 않으므로, 서로 다른 알고리즘이나 전처리 기법을 비교할 때 정확도, AUC, RMSE 같은 성능 지표를 계산할 수 없습니다. 이로 인해 군집 모델의 성능 평가가 매우 어렵고 주관적이 됩니다. 

군집 모델의 핵심 성공 기준은 다음에 초점을 맞춥니다.

  • 해석 가능합니까?
  • 군집 결과가 비즈니스에 유용합니까?
  • 군집화 이전에는 몰랐던 새로운 정보나 패턴을 데이터에서 발견했습니까?

군집 품질 측정

레이블이 없으면 정확도나 AUC를 계산할 수 없습니다. 클러스터 간 분리가 얼마나 잘 되었는지 정량화하는 데 도움이 되는 두 가지 지표가 있습니다. 흔히 쓰이는 지표는 다음과 같습니다.

  • 실루엣 점수(Silhouette Score): 한 점이 자신의 클러스터와 가장 가까운 이웃 클러스터 사이에서 얼마나 더 유사한지를 측정합니다. -1에서 1 사이이며, 0.5 이상이면 잘 분리된 클러스터를 시사합니다.
  • 데이비스-볼딘 지수(Davies-Bouldin Index): 각 클러스터와 그와 가장 유사한 클러스터 간 평균 유사도를 측정합니다 — 낮을수록 좋습니다.

둘 다 scikit-learn에서 제공됩니다: sklearn.metrics.silhouette_score(X, labels)sklearn.metrics.davies_bouldin_score(X, labels).

1. K-Means

K-Means는 군집화 작업에서 가장 널리 사용되는 알고리즘입니다. 절차가 이해하기 쉽고 scikit-learn 구현이 간단하기 때문입니다. 중심점(센트로이드) 기반 알고리즘이며, 사용자가 생성할 클러스터 수를 미리 지정해야 합니다. 

이는 보통 비즈니스 요구에서 오거나, 다른 값을 시도해 본 뒤 출력을 평가해 결정합니다. 

K-Means 군집화는 반복적 알고리즘으로, 겹치지 않는 클러스터를 만듭니다. 즉, 각 인스턴스는 오직 하나의 클러스터에만 속할 수 있습니다. K-Means의 직관을 얻는 가장 쉬운 방법은 아래 예시 다이어그램과 함께 단계를 이해하는 것입니다. 자세한 과정은 Python에서의 K-Means 군집화R에서의 K-Means 군집화 튜토리얼에서 확인할 수 있습니다. 

  1. 사용자가 클러스터 수를 지정합니다.
  2. 클러스터 수에 따라 무작위로 센트로이드를 초기화합니다. 아래 그림의 반복 1에서 파란색, 빨간색, 초록색의 세 센트로이드가 무작위로 초기화됩니다.
  3. 데이터 포인트와 각 센트로이드 간 거리를 계산하고, 각 포인트를 가장 가까운 센트로이드에 할당합니다.
  4. 할당된 모든 포인트를 기준으로 센트로이드의 평균을 다시 계산합니다. 이에 따라 센트로이드의 위치가 변하며, 반복 2~9에서 보이듯 수렴할 때까지 계속됩니다.
  5. 센트로이드 평균에 변화가 없거나, 학습 시 사용자가 지정한 최대 반복 횟수인 max_iter에 도달할 때까지 반복합니다. scikit-learn에서 기본 max_iter는 300입니다.

K-means

이미지 출처: Learnbymarketing.com

2. MeanShift

K-Means와 달리 MeanShift 알고리즘은 클러스터 수를 미리 지정할 필요가 없습니다. 알고리즘이 자동으로 클러스터 수를 결정하므로, 데이터에 클러스터가 몇 개인지 모를 때 명확한 장점이 있습니다. 

MeanShift 역시 센트로이드 기반이며, 각 데이터 포인트를 반복적으로 클러스터에 할당합니다. 가장 흔한 활용 사례는 이미지 분할 작업입니다.

MeanShift 알고리즘은 커널 밀도 추정에 기반합니다. K-Means와 유사하게, 무작위로 초기화된 클러스터 센트로이드 방향으로 각 포인트를 반복적으로 이동시키며, 데이터 포인트가 가장 밀집한 곳, 즉 모드(MeanShift 맥락에서 영역 내 데이터 포인트의 최대 밀도)를 향해 이동합니다. 

이 때문에 MeanShift 알고리즘을 모드 탐색 알고리즘(Mode-seeking)이라고도 합니다. 절차는 다음과 같습니다.

  • 임의의 점을 하나 선택하고, 그 주변에 윈도우를 생성합니다.
  • 윈도우 내부 모든 점의 평균을 계산합니다.
  • 모드의 방향을 따라 윈도우를 이동합니다. 
  • 수렴할 때까지 반복합니다.

이미지 출처: ResearchGate

MeanShift 실습을 단계별로 살펴보려면 Mean Shift Clustering 튜토리얼을 참고하세요.

3. DBSCAN

DBSCAN은 Density-Based Spatial Clustering of Applications with Noise의 약자로, 밀도가 높은 영역이 낮은 밀도 영역으로 분리되어 있다는 전제에서 작동하는 비지도 군집화 알고리즘입니다. 

K-Means와 MeanShift 대비 가장 큰 장점은 이상치에 강하다는 점입니다. 즉, 이상치 데이터 포인트를 어떤 클러스터에도 포함시키지 않습니다. 

DBSCAN은 사용자로부터 두 가지 파라미터만 필요로 합니다. 

  • 각 데이터 포인트 주변에 생성할 원의 반지름, 즉 epsilon

  • minPoints: 해당 원 내부에 최소 몇 개의 포인트가 있어야 그 포인트를 코어(Core) 포인트로 분류할지 정하는 값

각 데이터 포인트는 epsilon 반지름의 원으로 둘러싸이며, DBSCAN은 이를 코어 포인트, 경계(Border) 포인트, 노이즈 포인트로 식별합니다. 원 안의 포인트 수가 minPoints 이상이면 코어 포인트로 간주합니다. 

포인트 수가 임계값보다 적으면 경계 포인트로 간주하고, 어떤 포인트의 epsilon 반경 내에도 추가 포인트가 없으면 노이즈로 간주합니다. 노이즈 포인트는 어떤 클러스터에도 속하지 않습니다(즉, 이상치입니다).

DBSCAN의 일반적인 활용 사례는 다음과 같습니다.

  • 고밀도와 저밀도 클러스터를 잘 구분합니다.
  • 비선형 데이터셋에 강합니다.
  • 이상치 탐지에 활용할 수 있습니다. 노이즈 포인트를 분리하여 어떤 클러스터에도 배정하지 않기 때문입니다.

DBSCAN vs K-Means

DBSCAN과 K-Means를 비교하면 일반적으로 다음과 같은 차이가 있습니다. 

  • K-Means는 데이터셋의 모든 인스턴스를 클러스터에 배정하는 반면, DBSCAN은 노이즈 포인트(이상치)를 유효한 클러스터에 배정하지 않습니다.
  • K-Means는 전역적이지 않은 클러스터에 어려움을 겪지만, DBSCAN은 이를 수월하게 처리합니다.
  • K-Means는 데이터가 가우시안 분포에서 왔다고 가정하지만, DBSCAN은 데이터에 대한 가정을 하지 않습니다.

파라미터 튜닝과 예제를 포함한 자세한 내용은 DBSCAN 군집화 알고리즘 가이드에서 확인하세요. 

DBSCAN

이미지 출처: Medium

4. 계층적 군집화

계층적 군집화는 클러스터의 계층 구조를 구축하는 방법입니다. 두 가지 유형이 있습니다. 

  • 병합형(Agglomerative): 바텀업 방식으로, 처음에는 각 관측치를 하나의 클러스터로 취급하고, 아래에서 위로 올라가며 관측치를 쌍으로 병합하고, 쌍을 더 큰 클러스터로 병합합니다. 
  • 분할형(Divisive): 탑다운 방식으로, 모든 관측치가 하나의 클러스터에서 시작하고 위에서 아래로 내려가며 재귀적으로 분할합니다.

소셜 네트워크 데이터 분석에서는 계층적 군집화가 가장 일반적이고 인기 있는 방법입니다. 그래프의 노드(가지)를 서로 유사도 정도에 따라 비교합니다. 서로 관련된 작은 노드 그룹을 연결해 더 큰 그룹을 만들 수 있습니다.

계층적 군집화의 가장 큰 장점은 이해와 구현이 쉽다는 점입니다. 보통 출력은 아래와 같은 이미지로 분석하며, 이를 덴드로그램(Dendrogram)이라고 합니다.

파이썬에서 덴드로그램을 작성하고 해석하는 방법은 계층적 군집화 튜토리얼에서 자세히 배울 수 있습니다. 

이미지 출처: ResearchGate

5. BIRCH

BIRCH는 Balanced Iterative Hierarchical Based Clustering의 약자입니다. K-Means로는 실용적으로 확장이 어려운 매우 큰 데이터셋에 사용됩니다. BIRCH는 대규모 데이터를 작은 클러스터로 나누고 가능한 한 많은 정보를 보존하려고 합니다. 큰 데이터셋을 직접 군집화하는 대신 더 작은 그룹을 최종 출력으로 다시 군집화합니다. 

BIRCH는 다른 군집화 알고리즘이 활용할 수 있는 정보 요약을 생성하여 보조적으로 쓰이는 경우가 많습니다. K-Means와 마찬가지로 학습 시 클러스터 수를 지정해야 합니다.

BIRCH의 장점 중 하나는 다차원 데이터 포인트를 점진적이고 동적으로 군집화할 수 있다는 점입니다. 이는 주어진 메모리와 시간 제약 내에서 가장 높은 품질의 클러스터를 만들기 위함입니다. 대부분의 경우 데이터베이스를 한 번만 훑으면 되어 확장성이 좋습니다. 

BIRCH의 대표적 활용 사례는 K-Means가 메모리나 연산 제약으로 처리하지 못하는 대규모 데이터셋을 군집화하기 위한 메모리 효율적인 대안으로 쓰이는 것입니다.

군집화의 비즈니스 적용

군집화는 미디어, 헬스케어, 제조, 리테일 등 레이블 없는 데이터가 많은 모든 산업에 폭넓게 적용됩니다. 다음은 실용적인 예시입니다.

고객 세분화

구매 행동이나 관심사에 따라 고객을 군집화 알고리즘으로 분류해 타깃 마케팅 캠페인을 설계합니다. 

예를 들어 고객이 1천만 명이고, 맞춤형 혹은 타깃 캠페인을 만들고 싶다고 해봅시다. 1천만 개의 캠페인을 만들기는 어렵습니다. 이때 군집화를 사용해 1천만 명을 25개 클러스터로 묶고, 25개의 캠페인을 설계할 수 있습니다.

Customer Segmentation

이미지 출처: Medium

리테일 클러스터링

리테일 비즈니스에는 군집화 기회가 많습니다. 예를 들어, 매장별 데이터를 수집해 유동 인구, 평균 매출, SKU 수 등의 속성을 기준으로 어떤 매장들이 서로 유사한지 파악할 수 있습니다. 

또 다른 예로 카테고리 수준에서의 군집화가 있습니다. 아래 도표에는 8개 매장이 있으며, 다른 색상은 서로 다른 클러스터를 나타냅니다. 이 예시에는 네 개의 클러스터가 있습니다. 

1번 매장의 데오드란트 카테고리는 빨간 클러스터인 반면, 2번 매장의 데오드란트 카테고리는 파란 클러스터입니다. 이는 두 매장의 데오드란트 카테고리 타깃 시장이 완전히 다름을 보여줍니다.

Retail cluster

이미지 출처: dotactiv.com

임상 진료/질환 관리에서의 군집화

헬스케어와 임상 과학은 특히 군집화 적용이 강력한 분야입니다. 예를 들어 Komaru & Yoshida 외(2020)는 101명의 인구통계 및 검사실 데이터를 수집해 3개 클러스터로 세분화했습니다. 

각 클러스터는 서로 다른 상태를 보였습니다. 예를 들어, 클러스터 1은 WBC & CRP가 낮은 환자, 클러스터 2는 BMP & Serum이 높은 환자, 클러스터 3은 Serum이 낮은 환자였습니다. 각 클러스터는 혈액투석 후 1년 사망률에 따른 서로 다른 생존 경로를 나타냅니다.

Clinical clustering

이미지 출처: elsevierhealth.com

이미지 분할

이미지 분할은 이미지를 서로 다른 그룹으로 분류하는 작업입니다. 군집화를 활용한 이미지 분할 연구가 활발히 진행되어 왔습니다. 이 방식은 이미지 속 객체를 분리해 각각 무엇인지 개별적으로 분석하고자 할 때 유용합니다. 

아래 예시에서 왼쪽은 원본 이미지, 오른쪽은 군집화 결과입니다. 픽셀을 기준으로 4개의 클러스터(호랑이, 풀, 물, 모래)가 뚜렷하게 구분됩니다.
Image segmentation

군집 알고리즘 비교

파이썬의 인기 머신 러닝 라이브러리인 scikit-learn에는 10가지 비지도 군집화 알고리즘이 구현되어 있습니다. 각 알고리즘은 데이터셋에서 클러스터를 규정하고 할당하는 방식에 근본적인 차이가 있습니다. 

이들 알고리즘의 수학적 방식 차이는 다음 네 가지 측면으로 요약할 수 있으며, 이를 기준으로 비교할 수 있습니다.

  • 모델에 필요한 파라미터 
  • 확장성 
  • 활용 사례 
  • 기하(거리 계산에 사용하는 메트릭) 

아래 도표에서 각 열은 K-Means, Affinity Propagation, MeanShift 등 서로 다른 군집화 알고리즘의 출력을 나타냅니다. 동일한 데이터셋에 총 10개 알고리즘을 학습시켰습니다.

일부 알고리즘은 동일한 출력을 냈습니다. Agglomerative Clustering, DBSCAN, OPTICS, Spectral Clustering은 같은 클러스터 결과를 보였습니다. 

반면 K-Means와 MeanShift의 출력을 비교하면 결과가 다릅니다. K-Means의 경우 두 그룹(파랑, 주황)인 반면, MeanShift는 세 그룹(파랑, 초록, 주황)입니다. 

Comparison of different cluster

이미지 출처: scikit-learn

불행히도(혹은 다행히도), 군집화에는 정답이 없습니다. “X 알고리즘이 여기서 최고 성능이다”라고 단정하기 쉽다면 좋겠지만, 

이는 불가능하며, 이러한 이유로 군집화는 매우 도전적인 작업입니다. 

궁극적으로 어떤 알고리즘이 더 잘 작동하는지는 쉽게 측정 가능한 지표가 아니라, 해석과 해당 활용 사례에서 결과가 얼마나 유용한지에 달려 있습니다.

올바른 군집 알고리즘 선택 방법

각 알고리즘은 서로 다른 데이터 조건에 적합합니다. 아래 표를 출발점으로 삼고, 실제 데이터에서 최소 두 가지 이상을 테스트한 뒤 결정하세요.

Algorithm When to use it Key limitation Parameters required
K-Means 대체로 구형(구상) 클러스터를 가진 대규모 데이터셋 이상치에 민감함; k를 사전에 지정해야 함 클러스터 수(k)
MeanShift 알 수 없는 클러스터 수; 이미지 분할 대규모 데이터셋에서 느림; 대역폭 설정이 까다로움 대역폭(자동 추정 가능)
DBSCAN 노이즈 데이터; 불규칙한 클러스터 형태; 이상치 탐지 클러스터 간 밀도가 크게 다를 때 성능 저하 epsilon, minPoints
Hierarchical 탐색적 분석; 소셜 네트워크 데이터; 소규모 데이터셋 메모리 사용량이 큼; 수백만 행 규모로 확장 어렵음 연결 방식(ward, complete, average)
BIRCH K-Means가 메모리 부족으로 실패하는 매우 큰 데이터셋 소규모 데이터셋에서는 K-Means보다 정확도가 낮을 수 있음 분기 계수, 임계값, 클러스터 수

실용적인 시작점: 속도를 위해 먼저 K-Means를 시도하고, 데이터에 불규칙한 모양이나 이상치가 많다면 DBSCAN으로 전환하세요. 덴드로그램으로 클러스터 구조를 시각적으로 탐색하고 k를 정하고 싶을 때는 계층적 군집화를 사용하세요.

마무리 생각

군집화는 분류회귀 같은 지도 기법보다 적용이 더 어렵습니다. 레이블에 대한 성능 측정을 할 수 없고, 클러스터 수 같은 파라미터는 알고리즘이 아닌 도메인 판단에 의존하기 때문입니다. 

군집화는 데이터 사이언티스트, ML 엔지니어, 애널리스트 등 다양한 역할에 걸쳐 가치 있는 역량입니다. 군집화로 해결할 수 있는 문제는 곳곳에 존재합니다. 

군집화와 비지도 학습을 더 배우고 Python과 R로 구현해 보고 싶다면, 아래 과정을 통해 실력을 키워 보세요. 

자주 묻는 질문(FAQ)

군집화는 비지도 학습인가요, 지도 학습인가요?

군집화는 비지도 머신 러닝 기법입니다. 학습에 레이블 데이터가 필요하지 않습니다.

군집화에 레이블 데이터가 필요한가요?

아니요, 군집화 알고리즘에는 레이블 데이터가 필요하지 않습니다. 레이블 데이터가 있다면 지도 학습의 분류 알고리즘을 사용해야 합니다.

범주형 데이터로도 군집화를 할 수 있나요?

예. 지도 학습과 마찬가지로 데이터에 범주형 특성이 있다면 원-핫 인코딩 같은 기법으로 인코딩해야 합니다. K-Modes처럼 인코딩 없이 범주형 데이터를 직접 받는 알고리즘도 있습니다.

군집화는 머신 러닝인가요?

예, 군집화는 머신 러닝입니다. 구체적으로는 비지도 머신 러닝입니다.

군집화는 설명적 분석인가요, 예측인가요?

군집화는 기술 통계(설명적 분석)와 예측 분석 모두에 사용할 수 있습니다. 다만 일반적으로는 탐색적 데이터 분석, 즉 설명적 분석에서 더 자주 사용됩니다.

군집화 알고리즘의 성능을 측정할 수 있나요?

지도 학습처럼(AUC, 정확도, R2 등) 군집화 알고리즘의 성능을 확실하게 측정하는 방법은 없습니다. 모델의 품질은 출력 해석과 활용 사례에 달려 있습니다. 다만 Homogeneity 점수, 실루엣 점수 등 보조 지표를 사용할 수는 있습니다.

지도 학습에서 특징 공학을 위해 군집화를 사용할 수 있나요?

예. 군집화 알고리즘은 데이터셋에서 그룹(레이블)을 할당합니다. 결국 데이터셋에 새로운 범주형 열이 추가되는 셈입니다. 따라서 군집화는 지도 학습에서 특징 공학을 위해 자주 사용됩니다.

주제

머신 러닝 강좌

tracks

머신 러닝 기초 in R

24
분류와 회귀를 통해 범주형 및 수치형 응답을 예측하고, 비지도 학습으로 데이터세트의 숨겨진 구조를 발견하세요.
자세히 보기Right Arrow
강좌 시작
더 보기Right Arrow