My Data Story

[군집] 병합군집 본문

Machine Learning/3. 비지도 학습 알고리즘

[군집] 병합군집

Hwasss 2023. 8. 19. 00:54
728x90

◈  '군집' 목차 

1. K-평균

2. DBSCAN

3. HDBSCAN

4.병합 군집

    병합 군집 알고리즘에 대해 알아보자.

5. 평균-이동

6. BIRCH

7. 유사도 전파

8. 스펙트럼 군집

9. 가우시안 혼합 모델

10. 베이즈 가우시안 혼합 모델


1. 병합 군집

◎ from sklearn.cluster import AgglomerativeClsutering

 

병합 군집은 K평균보다 유연하고, 수치형 변수가 아니어도 쉽게 적용이 가능하다. 

특잇점이나 비정상적인 그룹이나 레코드를 발견하는 데 더 민감하다.

또한 직관적인 시각화가 가능하여 클러스터를 해석하기 수월하다.

 

병합 군집 알고리즘에 대해 살펴보자.

병합 군집은 인접한 클러스터 쌍을 연결한다. (처음에는 샘플 하나로 시작한다.)

병합된 클러스터 쌍을 트리로 모두 그리며 클러스터의 이진 트리를 얻을 수 있다. 

이 트리의 리프는 개별 샘플이다.

 

병합 군집 알고리즘 과정은 다음과 같다.

 

step1

데이터의 모든 레코드에 대해 단일 레코드로만 구성된 클러스터들로 초기 클러스터 집합을 만든다.

 

step2

모든 쌍의 클러스터 A, B 사이의 비유사도 D(A,B)를 계산한다. 

 

 

step3

D(A,B) 에 따라 가장 가까운 두 클러스터 A, B를 병합한다. 

 

step4

둘 이상의 클러스터가 남아 있으면 step2로 다시 돌아간다. 그렇지 않고 클러스터가 하나 남는다면 알고리즘을 멈춘다.

 

 

병합 군집은 대규모 샘플과 클러스터에 잘 확장되며 다양한 형태의 클러스터를 감지할 수 있다.

특정 클러스터 개수를 선택하는데 도움이 되는 유용한 클러스터 트리를 만들 수 있다. 

 

 

사이킷런에서 AgglomerativeClsutering 클래스 통해 병합 군집 모델 구현 가능하다.

AgglomerativeClsutering  클래스는 fit() 과 fit_predict()만 존재한다. (predict() 메서드 없음)

 

AgglomerativeClustering 클래스의 몇 가지 매개 변수를 살펴보자.

˙n_clusters : 클러스터 갯수

˙affinity    : 데이터 간의 유사도 측정 기준 

                         ex. euclidean, l1, l2, manhattan, cosine, precomputed

˙linkagae : 데이터 간의 연결 방식으로 알고리즘은 설정된 linkage 기준을 줄이도록 클러스터링할 것이다.

                         ex. average, complete, single

 

from sklearn.cluster import AgglomerativeClustering
clustering = AgglomerativeClustering()
clustering.fit(X)
print(clustering.labels_)

clustering.predict(X) #predict() 없음 -> 에러 발생!!!

 

▶ AgglomerativeClsutering  클래스 구현에 대해 더 자세히 알고 싶다면  >>  참고 URL -  AgglomerativeClsutering 

'Machine Learning > 3. 비지도 학습 알고리즘' 카테고리의 다른 글

[군집] BIRCH  (0) 2023.08.19
[군집] 평균-이동  (0) 2023.08.19
[군집] HDBSCAN  (0) 2023.08.19
[군집] DBSCAN  (0) 2023.08.19
[군집] K-평균  (0) 2023.08.19