개발공부

Hierachical Clustering과 Dendrogram 본문

Python/Machine Learning

Hierachical Clustering과 Dendrogram

mscha 2022. 5. 10. 17:55

Hierachical Clustering 계층적 군집화

 -계층적 트리 모형을 이용해 개별 개체들을 순차적,

  계층적으로 유사한 개체 내지 그룹과 통합하여 군집화를 수행하는 알고리즘

 - K-means Clustering과 달리 군집 수를 사전에 정하지 않아도 학습을 수행할 수 있다.

 - Dendrogram 이용

 

Dendrogram 덴드로그램

 - 개체들이 결합되는 순서를 나타내는 트리형태의 구조

 - 적절한 수준에서 트리를 자르면 전체 데이터를 몇개 군집으로 나눌 수 있게 된다.

 

예제

덴드로그램은 scipy 라이브러리를 이용해 그릴 수 있다.

import scipy.cluster.hierarchy as sch

plt.figure(figsize=(20,12))
# 전처리된 데이터 X에 대해 덴드로그램을 그리기
sch.dendrogram(sch.linkage(X, method= 'ward'))
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Eculidean Distances')
plt.show()

위와 같은 덴드로그램을 보고 사용자가 원하는 군집으로 나누어 사용이 가능하다.

여기서는 위와같이 5개의 군집으로 진행하도록 하겠다.

Hierarchical Clustering model를 트레이닝 하는 방법은 아래와 같다.

sklearn라이브러리를 이용한다.

from sklearn.cluster import AgglomerativeClustering

# 군집수 5
hc = AgglomerativeClustering(n_clusters= 5)

# X에 대해 학습시키고, 그에 대한 결과예상 값을 리턴한다.
hc.fit_predict(X)