문서 군집화(Clustering)란? K-means와 계층적 군집화 비교
부스트키워드 팀
검색 데이터로 키워드의 검색량, 트렌드, 검색 의도를 파악하고 마케팅 의사결정을 돕는 도구 부스트키워드를 만듭니다.
수십만 건의 뉴스 기사나 고객 데이터가 있는데, 그 어디에도 "이 기사는 정치, 저 기사는 스포츠"라는 정답 라벨이 붙어 있지 않다면 어떻게 정리해야 할까요? 사람이 일일이 읽고 분류하기엔 시간이 턱없이 부족합니다. 이럴 때 사용하는 기법이 바로 군집화(Clustering)입니다. 정답을 미리 알려주지 않아도, 데이터끼리 비슷한 정도를 계산해서 자동으로 무리를 지어주는 방법입니다. 이 글에서는 가장 널리 쓰이는 두 가지 군집화 방법인 K-means와 계층적 군집화의 원리를 비교하며 살펴봅니다.
정답이 없는 데이터는 어떻게 분류할까
분류(Classification)와 군집화(Clustering)의 차이
앞서 다룬 나이브 베이즈나 SVM 같은 알고리즘은 '분류(Classification)'라는 문제를 다룹니다. 분류는 "스팸/정상", "긍정/부정"처럼 이미 정답 카테고리가 정해져 있고, 그 정답이 붙은 학습 데이터를 미리 컴퓨터에게 보여준 뒤 새로운 데이터의 정답을 맞히는 방식입니다.
반면 '군집화(Clustering)'는 이러한 정답 라벨이 전혀 없는 상황에서 사용합니다. 어떤 카테고리로 나눠야 할지조차 미리 정해져 있지 않고, 그저 데이터들이 주어져 있을 뿐입니다. 군집화는 이 데이터들을 서로 비슷한 정도에 따라 몇 개의 무리로 스스로 나누는 작업입니다.
"이 문서가 어떤 그룹인지 몰라도" 비슷한 것끼리 묶을 수 있는 이유
군집화가 가능한 이유는, 같은 주제를 다루는 문서들은 비슷한 단어를 비슷한 빈도로 사용하는 경향이 있기 때문입니다. 예를 들어 스포츠 기사들은 서로 다른 사건을 다루더라도 '경기', '선수', '득점' 같은 단어를 공통적으로 많이 사용합니다. 군집화 알고리즘은 이러한 단어 사용 패턴의 유사성을 수치로 계산해서, 사람이 미리 정답을 알려주지 않아도 비슷한 문서끼리 자연스럽게 묶어냅니다.
K-means: 가장 널리 쓰이는 군집화 알고리즘
몇 개의 그룹으로 나눌지 미리 정하기
K-means는 군집화 방법 중 가장 널리 쓰이는 알고리즘입니다. 이름의 'K'는 데이터를 몇 개의 그룹으로 나눌 것인지를 나타내는 숫자입니다. K-means를 사용하려면 먼저 "몇 개의 그룹으로 나눌 것인가"를 사용자가 미리 정해줘야 합니다.
중심점을 기준으로 데이터를 나누고, 다시 중심점을 옮기는 반복 과정
K-means의 작동 방식은 다음과 같습니다. 먼저 정해진 개수(k)만큼 임의의 중심점을 데이터 공간 위에 찍습니다. 그다음 모든 데이터를 살펴보면서, 각 데이터를 자신과 가장 가까운 중심점의 그룹으로 배정합니다. 이렇게 그룹이 한 번 나뉘고 나면, 각 그룹에 속한 데이터들의 평균 위치를 계산해서 중심점을 새로운 위치로 옮깁니다.
더 이상 변화가 없을 때까지 반복해서 안정된 그룹 찾기
중심점이 새로운 위치로 옮겨지면, 다시 모든 데이터를 살펴보며 가장 가까운 중심점의 그룹으로 재배정합니다. 이 과정, 즉 "데이터를 가까운 중심점 그룹으로 배정하기"와 "그룹의 평균으로 중심점 옮기기"를 반복하다 보면, 어느 순간 더 이상 그룹이 바뀌지 않는 안정된 상태에 도달합니다. 이때의 그룹 구성이 K-means의 최종 결과가 됩니다.
간단한 예제로 이해하는 K-means
뉴스 기사를 좌표 위의 점으로 표현하기
다음과 같이 뉴스 기사 6개가 있다고 가정해봅시다. 각 기사는 "스포츠 관련 단어 등장 횟수"와 "경제 관련 단어 등장 횟수"라는 두 가지 특징으로 표현됩니다.
- 기사 1 (스포츠 5, 경제 0)
- 기사 2 (스포츠 4, 경제 1)
- 기사 3 (스포츠 4, 경제 0)
- 기사 4 (스포츠 0, 경제 5)
- 기사 5 (스포츠 1, 경제 4)
- 기사 6 (스포츠 0, 경제 4)
두 개의 중심점에서 시작해 그룹이 안정되는 과정
그룹의 개수를 2개(k=2)로 정하고 시작한다고 해봅시다. 처음에는 임의로 기사 1과 기사 4를 중심점으로 삼습니다. 그러면 기사 1, 2, 3은 기사 1(중심점)에 더 가까우므로 한 그룹으로, 기사 4, 5, 6은 기사 4(중심점)에 더 가까우므로 다른 한 그룹으로 나뉩니다.
이제 각 그룹의 평균 위치를 계산해서 중심점을 새로 옮깁니다. 첫 번째 그룹의 평균은 대략 (스포츠 4.3, 경제 0.3), 두 번째 그룹의 평균은 대략 (스포츠 0.3, 경제 4.3)이 됩니다. 이 새로운 중심점을 기준으로 다시 데이터를 배정해보아도 그룹 구성은 그대로 유지되므로, 이 상태에서 계산이 멈추게 됩니다. 결과적으로 "스포츠 기사 그룹(1, 2, 3)"과 "경제 기사 그룹(4, 5, 6)"이라는, 실제 내용과도 잘 맞아떨어지는 자연스러운 군집이 만들어졌습니다.
K-means의 한계: 몇 개로 나눌지 미리 알아야 한다는 문제
그룹의 개수(k)를 잘못 정하면 생기는 문제
앞의 예제는 처음부터 k를 2로 정확히 설정했기 때문에 결과가 깔끔하게 나왔지만, 실제 데이터에서는 애초에 몇 개의 그룹으로 나누는 것이 적절한지조차 알기 어려운 경우가 많습니다. k를 너무 적게 설정하면 서로 성격이 다른 데이터가 한 그룹으로 억지로 묶이고, k를 너무 많게 설정하면 사실상 같은 성격의 데이터가 불필요하게 여러 그룹으로 쪼개지게 됩니다.
적절한 k값을 찾는 방법
이 때문에 실무에서는 k값을 여러 개로 바꿔가며 결과를 비교해보고, 그룹 내부의 데이터들이 얼마나 잘 뭉쳐 있는지를 수치로 평가해 가장 적절한 k값을 찾는 방법을 주로 사용합니다. 그룹 개수를 하나씩 늘려가며 성능 지표의 변화를 그래프로 그려보고, 개선 폭이 눈에 띄게 줄어드는 지점을 적절한 k값으로 선택하는 방법이 널리 쓰입니다.
계층적 군집화: 나무 구조로 관계를 보여주는 방법
가장 가까운 것부터 차례로 묶어나가는 방식
K-means와 달리, 처음부터 그룹의 개수를 정하지 않아도 되는 군집화 방법도 있습니다. 바로 계층적 군집화입니다. 계층적 군집화 중 가장 널리 쓰이는 병합적 방식은, 처음에는 데이터 하나하나를 모두 별개의 그룹으로 취급하는 것에서 시작합니다. 그런 다음 가장 서로 비슷한(가까운) 두 그룹을 찾아 하나로 합치는 과정을 반복합니다. 이 과정을 계속 반복하다 보면, 결국 모든 데이터가 하나의 큰 그룹으로 합쳐질 때까지 점점 더 큰 그룹들이 만들어집니다.
덴드로그램: 그룹들의 관계를 나무 모양으로 시각화하기
이렇게 데이터가 합쳐지는 과정을 순서대로 기록하면, 어떤 데이터끼리 먼저 합쳐지고 어떤 그룹이 나중에 합쳐지는지를 나무 모양의 그림으로 표현할 수 있습니다. 이 그림을 덴드로그램이라고 부릅니다. 덴드로그램을 보면 데이터들이 얼마나 서로 가까운 관계에 있는지를 계층적인 구조로 한눈에 파악할 수 있습니다.
K-means와 달리 그룹 개수를 미리 정하지 않아도 되는 장점
계층적 군집화의 큰 장점은, 전체 병합 과정을 나무 구조로 모두 기록해두기 때문에 나중에 이 나무를 원하는 높이에서 잘라 몇 개의 그룹으로 나눌지를 사후에 결정할 수 있다는 점입니다. 즉 K-means처럼 처음부터 그룹의 개수를 확정하지 않아도 되며, 데이터 간의 세밀한 관계까지 함께 살펴볼 수 있습니다.
두 방법, 언제 무엇을 쓸까
K-means는 계산이 비교적 빠르고 대량의 데이터에도 효율적으로 적용할 수 있어, 데이터 양이 많고 그룹의 개수에 대한 대략적인 감이 있는 경우에 적합합니다. 반면 계층적 군집화는 데이터 사이의 세밀한 관계를 나무 구조로 파악하고 싶거나, 그룹 개수를 미리 정하기 어려운 경우에 유용합니다. 다만 모든 데이터 쌍 사이의 유사도를 계산해야 하므로, 데이터 양이 매우 많아지면 계산 비용이 크게 늘어난다는 점은 유의해야 합니다.
실제로 어디에 쓰일까
군집화는 뉴스 기사를 자동으로 주제별 그룹으로 묶어 보여주는 뉴스 클러스터링 서비스, 비슷한 소비 패턴을 가진 고객들을 자동으로 나누는 고객 세분화, 취향이 비슷한 사용자를 묶어 추천의 정확도를 높이는 추천 시스템 등 다양한 분야에서 활용되고 있습니다.
정리하며
K-means는 정해진 개수의 중심점을 기준으로 데이터를 반복적으로 재배정하며 그룹을 찾아가는 방법이고, 계층적 군집화는 가장 가까운 데이터부터 차례로 묶어 나무 구조로 관계를 보여주는 방법입니다. 두 방법 모두 정답 라벨이 없는 데이터에서 숨어 있는 패턴과 구조를 자동으로 찾아낸다는 공통된 목표를 가지고 있으며, 데이터의 특성과 목적에 따라 적절한 방법을 선택하는 것이 중요합니다.
Q.군집화 결과가 맞는지 어떻게 평가하나요?
Q.K-means는 왜 매번 실행할 때마다 결과가 조금씩 다를 수 있나요?
Q.군집화와 분류를 함께 사용하기도 하나요?
Written by

부스트키워드 팀
검색 데이터로 키워드의 검색량, 트렌드, 검색 의도를 파악하고 마케팅 의사결정을 돕는 도구 부스트키워드를 만듭니다.
