데이터로그😎

군집 평가 본문

머신러닝/비지도 학습

군집 평가

지연v'_'v 2023. 9. 5. 17:50

군집화를 실행한 후 군집화가 얼마나 효율적으로 됐는지 어떻게 평가할까?

 

군집화의 성능을 평가하는 대표적인 방법 : 실루엣 분석

 

실루엣 분석 (silhouette analysis)

  • 각 군집 간의 거리가 얼마나 *효율적으로 분리*돼 있는지를 나타냄
    • 효율적으로 분리되어 있다 = 다른 군집과의 거리는 멀고 동일 군집끼리의 데이터는 가깝게 뭉쳐있다.
  • 실루엣 분석은 실루엣 계수를 기반으로 한다.
    • 실루엣 계수: 개별 데이터가 가지는 군집화 지표. 같은 군집 내의 데이터와 얼마나 가깝게 군집화돼 있고, 다른 군집에 있는 데이터와는 얼마나 멀리 분리돼 있는지를 나타내는 지표.
  • 사이킷런 메소드
    • sklearn.metircs.silhouette_samples(X, labels, metric='euclidean', **kwds) 
      • X = X feature
      • labels = 군집 라벨
      • 각 데이터 포인트의 실루엣 계수 반환
    • sklearn.metrics.silhouette_score(X, labels, metric = 'euclidean', sample_size=None, **kwds)
      • X = X feature
      • labels = 군집 라벨
      • 전체 데이터의 실루엣 계수 값을 평균하여 반환.
      • np.mean(silhouette_samples())
      • 값이 클수록 군집화가 잘 되었다고 판단. (무조건적인 것은 아님)

 

실루엣 계수 (silhouette coefficient)

출처: 파이썬 머신러닝 완벽가이드 442p

  • s(i) = (b(i) - a(i)) / (max(a(i), b(i))
  • b(i) - a(i) = 내가 속한 군집과 가장 가까운 군집과의 거리
  • max(a(i), b(i) = b(i) - a(i) 값을 정규화하기 위함.
  • -1~1 사이의 값을 가짐.
    • 1에 가까워질 수록 근처 군집과 더 멀리 떨어져 있다는 것
    • 0에 가까워질 수록 근처 군집과 가깝다는 것.
    • - 값은 아예 다른 군집에 데이터 포인트가 할당 되었다는 것.

 

실루엣 계수 시각화

https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

 

Selecting the number of clusters with silhouette analysis on KMeans clustering

Silhouette analysis can be used to study the separation distance between the resulting clusters. The silhouette plot displays a measure of how close each point in one cluster is to points in the ne...

scikit-learn.org

 

군집 : 2, 실루엣 계수: 0.705

  • 실루엣 계수가 매우 높다. 
    • 1번 군집의 모든 데이터는 평균 실루엣 값 이상. (우측 사진에서 데이터 모여있음)
    • 2번 군집은 대부분의 데이터가 평균 실루엣 값 미만. (우측 사진에서 데이터 간 거리가 많이 떨어져 있음)
  • 그러나 군집 0,1에 할당된 데이터 비율이 매우 불균등하다.

군집 : 2, 실루엣 계수: 0.705

 

군집 : 4, 실루엣 계수: 0.65

  • 각 군집의 평균 실루엣 값이 비교적 균일하게 위치
  • 1번 군집: 모든 데이터가 평균 실루엣 값을 웃돈다.
  • 2,3 번 군집: 절반정도가 평균 실루엣 값 웃돈다.
  • 0번 군집: 약 1/3정도만 평균 실루엣 값을 웃돈다.

 

군집이 4일 때 평균 실루엣 계수가 군집 2일때보단 작지만, 각 군집의 실루엣 계수를 비교하여 종합적인 판단을 해보면 군집 4가 더 이상적이다.

'머신러닝 > 비지도 학습' 카테고리의 다른 글

Meanshift vs DBSCAN  (0) 2023.09.05
KMeans, GMM  (0) 2023.09.05
군집 (clustering)  (0) 2023.09.05