클러스터링 연구 (DigDeep)
1) 6개의 Toy Data에 대해 다양한 Clustering 적용해보기
아래 예시와 같이 다양하게 자신의 생각 도출하기
지역적 패턴이 존재하는 DataSet에는 XX Clustering 방법을 쓰면 좋을 것 같다
XX Clustering은 길게 늘어진 데이터에 대해 잘 분류하는 것 같다
XX Clustering은 군집의 개수를 미리 정해야 해서 ~~ 경향이 있는 것 같다
조건
(기본)우리가 배운 3가지 Clustering
데이터 간/클러스터 간 거리 측정 방식 다양하게 사용해서 비교
새로운 Clustering 방법 사용하기(최소 2개 이상)
import numpy as np
import pandas as pd
from sklearn import datasets
import matplotlib.pyplot as plt
from itertools import cycle, isliceToyData 만들기
만든 모든 모형 한번에 보기

KMeans Clustering

보면 집단이 원으로 뭉쳐있는 3번째(위->아래, 왼쪽->오른쪽 순) 그룹만 잘 분류가 되었고 나머지는 분류가 잘 안됨을 알 수 있다. KMeans clustering은 각 그룹이 빽빽히 뭉쳐있는 경우가 아니면 정확도가 낮음을 알 수 있다. 특히나 뭉쳐진 모양이 아닌 1,2,5번째와 같이 특정 모양을 띨 경우 더더욱이 분류가 안됨을 알 수 있다.
Agglomerative Clustering

Agglomerative Clustering을 진행한 결과 kmeans와는 살짝 다른 결과가 도출되었다. 6번째 모형을 보면 원래 분류와 거의 동일하게 분류가 됨을 알 수 있었다. 또한 kmeans clustering은 나눠진 그룹의 크기가 거의 같도록 분류되었다면 agglomerative clustering은 이에 구애받지 않고 group이 나누어짐을 알 수 있었다.(이는 1,2번의 파란색 group의 크기가 더 큼을 통해 추론 가능하다. kmeans는 색깔별 크기가 거의 동일)
Different clustering methods
이제 다양한 clustering 방법을 통해 분류를 진행해보겠다. 여기서 쓰일 clustering method는 다음과 같다.
KMeans, DBSCAN, Agglomerative Clustering, Mean shift, Spectral Clustering, Birch

noisy circles는 spectral clustering이 잘 되는 듯 보인다. DBSCAN과 meanshift method도 다른 것과는 달리 원형 모향을 잘 살려 clustering한 것을 알 수 있는데 안쪽과 바깥쪽을 구분 못하고 하나로 인식한 것이 아쉬운 점이다.

noisy moons는 DBSCAN과 Spectral Clustering이 뛰어난 성능을 보인다.

blobs는 agglomerative clustering, kmeans, MeanShift, spectral clustering, birch가 정확하게 분류하였다. 제일 분류하기 쉬운 모형이긴 한 것 같다.

no_structure은 DBSCAN과 MeanShift가 제대로 clustering하였다. 하지만 agglomerative clustering과 kmeans, spectral clustering, birch는 number of clusters를 지정해 주었기 때문에 위와 같은 결과를 냈음으로 판단된다.

aniso는 spectral clustering이 제일 비슷하게 clustering을 진행한 것으로 보인다. agglomerative clustering은 조금 아쉬운 결과를 내었는데 그래도 이와 같은 모형에서는 나름 성능이 좋아 보인다.

varid는 Agglomerative clustering과 spectral clustring이 제일 좋은 성능을 내었고, kmeans가 조금 아쉬운 결과를 내었다.
함수 인자 설정 참조)
2) Hierarchical Clustering
클러스터간의 거리 측정 방식에 따른 분석
Min(Single Link) , Max(Complete Link), Group Average, Centroid, Ward

Min(Single Link) Method

Max(Complete Link) Method

Group Average Method

Centroid Method

Ward Method

5가지 method의 2,3 clusters로 구분되는 대략적인 거리를 정리해보면 다음과 같다.
Min(single link)method : 3, 1.9
Max(complete link)method: 6.5, 5.5
Group average method: 4.5, 3.5
Centroid method: 4, 3
Ward method: 10, 7 구분 거리는 min < centriod < group average < max < ward 순으로 나타낼 수 있다. Single linkage는 두 그룹이 묶일 때 한 쌍의 point들만 가까우면 되므로 만들어진 cluster가 너무 분산되어 있을 가능성이 있다. 위 결과에서 보면 1이 (0,4,8)이 아닌 (5,6,10,11,..)에 묶여 있는 것으로 이를 확인할 수 있다. 반대로 complete linkage는 만들어지는 cluster가 너무 밀집되어 있을 가능성이 크다. 이 둘을 완화하는 방법이 group average method와 centroid method라 볼 수 있을 것 같다.
3) K-Means Clustering
초기값/update Centroid
kmeans clustering은 centriod 위치를 정하고, 그 위치에서 데이터까지의 distance 연산을 통해 clustering하는 알고리즘이다. 그러하여 Centriod 위치 지정이 중요한데 이를 지정하는 방법은 다음과 같다.
Random Partition
Forgy/Lloyd
MacQueen
Hartigan & Wong
참조:
https://loveayase.tumblr.com/post/136865706969/java-k-means-algorithm
Last updated
Was this helpful?