Search

Hierarchical Clustering - 계층적 군집화

Clustering(클러스터링) 혹은 군집분석이라고도 불리는 방법은 유사한 데이터들 끼리 그룹화를 시키는 비지도 학습이라고 할 수 있다. 클러스터링의 방법으로는 밀도기반 클러스터링인 DBSCAN, 중심기반인 K-means와 같은 다양한 방법들이 존재하며 이번 포스팅에서는 계층적 군집분석이라고도 불리는 hierarchical clustering에 대해서 알아보자.

Hierarchical clustering이란?

Hierarchical clustering은 데이터를 가까운 집단부터 순차적이며 계층적으로 군집화 하는 방식
트리구조를 통해 각 데이터들을 순차적, 계층적으로 비슷한 그룹과 묶어 클러스터링을 진행
장점 계층적 구조로 인해 DBSCAN과 마찬가지로 클러스터 혹은 군집의 개수를 미리 정하지 않아도 됨.
단점 클러스터를 구성하는데 있어, 매번 local minimum을 찾아가는 방법을 활용하기때문에 클러스터링의 결과값이 global minimum이라고 해석하기는 어렵다.

동작 방식

모든 데이터들 사이의 거리에 대한 유사도를 계산
유사도가 비슷한 데이터들끼리 클러스터를 구성해주고, 유사도를 업데이트 해주는 방식
예제
import numpy as np import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram, linkage x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12] y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21] data = list(zip(x, y)) linkage_data = linkage(data, method='ward', metric='euclidean') dendrogram(linkage_data) plt.show()
Python
복사

파라미터

scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=False)
Python
복사

y

클러스터링을 진행하고자 하는 데이터의 Input
1-D나 2-D의 백터형태

Method

y새로 형성된 클러스터와 각각의 클러스터 사이의 거리를 계산하는 방법
method 크게 다음과 같이 나눌 수 있다.
single
complete
average
weighted
centroid
ward
이들을 식으로 표현하면 아래와 같이 나타낼 수 있다.
이들을 그림으로 표현하면 아래와 같이 나타낼 수 있다.

Metric

Distance metric의 경우 대표적으로 euclidean, manhattan, minkowski, cosin 등이 존재
euclidean
공간에서 두 점 사이를 지나는 선분의 길이를 측정하여 두 점 사이의 거리를 계산하는 방식
manhattan
두 점의 모든 차원에서 측정값 간의 절대 차이의 합
minkowski
euclidean distance와 Manhattan distance의 일반화
cosin
두 개의 점 시퀀스 또는 벡터 사이의 코사인 각도에 대한 거래
벡터의 내적을 길이의 곱으로 나눈 값

참고 자료