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
◦
두 개의 점 시퀀스 또는 벡터 사이의 코사인 각도에 대한 거래
◦
벡터의 내적을 길이의 곱으로 나눈 값