데이터 마이닝 작업에는 클러스터링(Clustering), 분류(Classification), 회귀(Regression), 연관규칙 마이닝(Association Rule Mining), 텍스트 마이닝(Text Mining), 이상 감지(Anomaly detection), 순차패턴 마이닝(Sequential Pattern Mining), 시계열 데이터 예측(Time Series Prediction) 등이 있다. 오늘 알아볼 작업은 클러스터링, 즉 데이터의 군집화 과정이다.
■ 데이터를 보다 잘 이해하기 위해 하는 클러스터링(Clustering)
클러스터링은 어떤 데이터가 주어졌을 때
1) 하나의 군집에 있는 각 데이터 포인트가 서로 비슷하고
2) 다른 군집에 있는 데이터와는 다르게
데이터를 분류해주는 작업이다. 이미 주어져 있는 데이터를 가지고 군집을 만들기 때문에 기술(descriptive)적인 분석을 가능하게 해준다. 아래 그림에서 오른쪽은 색깔로 레이블이 표시된 실제 데이터이다. 그렇지만 만약 각 데이터의 정체를 모른다면?
그림의 왼쪽과 같이 가까운 데이터끼리 묶는 작업이 필요하다. 물론 현실에서 데이터가 저렇게 예쁘게 거리를 두고 있기 만무하지만, 하나의 군집 내 데이터끼리의 거리를 최소화(빨간 화살표의 길이)하고, 각 군집끼리의 거리(파란 화살표의 길이) 를 최대화하여 군집을 만들어내는 것이 클러스터링의 목적이다. 왜냐고? 데이터의 구조를 제대로, 잘 이해하기 위해서!
클러스터링은 대표적인 비지도 학습(Unsupervised learning) 방식이다. 레이블(즉, 위 그림에서 ‘빨간색’, ‘파란색’, ‘초록색’ 이라는 이름이 붙어져 있지 않은 상태)이 없는 데이터를 가지고, 그 본질적인 구조를 탐색하기 위한 작업이기 때문이다.
■ 클러스터링 활용 분야
클러스터링은 시장의 세그멘테이션을 할 때 유용한데, 하나의 시장을 여러 고객의 하위군집으로 구분하는 것을 말한다. 클러스터링의 평가는 하나의 클러스터 내의 고객들의 구매 패턴이 비슷하고, 그들의 구매 패턴이 다른 군집의 고객들과는 구분되는지 확인하여 파악할 수 있다.
또 다른 예시로는 문서 데이터의 클러스터링이 있겠다. 이 때 목적은 각 문서에서 나타나는 키워드를 중심으로 각 문서끼리 얼마나 비슷한지, 다른지를 분석하는 것이다. 이를 위해서는 먼저 각 문서에 나타나는 어떤 용어들이 자주 나타나는지를 확인하고, 빈도수에 따라 유사성(similarity)를 구분한다. 검색엔진은 이를 바탕으로 우리가 어떤 키워드를 검색했을 때 그 키워드 관련 문서들을 보여준다.
그 외에도 SNS 상에서 관심사를 기반으로 커뮤니티를 클러스터링을 한다던가 자율 주행에서 이미지 인식을 한다던가 클러스터링을 이용한 예시는 무궁무진하다.
■ 클러스터링 종류
클러스터링은 크게 분할 군집(Partitional Clustering)과 계층적 군집(Hierarchical Clustering)으로 나뉜다. 분할 군집은 데이터끼리 겹치지 않게 군집을 나누는 것이고, 계층적 군집은 나무구조로 군집이 나뉜다. 다음은 계층적 군집의 예시 이미지이다.
다음은 분할 군집에 대표적인 K-Means에 대해 자세히 알아보겠다.