본문 바로가기
머신러닝

[머신러닝] 클러스터링 평가지표 - 실루엣 계수 (1)

by 하응 2021. 6. 15.

실루엣 계수(Silhouette Coefficient) : 

 

각 데이터 포인트와 주위 데이터 포인트들과의 거리 계산을 통해 값을 구하며,

군집 안에 있는 데이터들은 잘 모여있는지, 군집끼리는 서로 잘 구분되는지 클러스터링을 평가하는 척도로 활용된다.

 

* 참고한 논문의 표현을 빌리자면, 군집 비유사성('within' dissimilarities)은 작고, 군집 비유사성('between' dissimilarities)은 커야 생성된 클러스터의 품질이 좋다고 할 수 있다. 

 

  

이번 포스팅에서는 실루엣 계수를 구하는 방법과 평가 지표로써의 장단점에 대해 알아보고자 한다. 


실루엣 계수 구하는 방법

왼쪽 그림처럼 어떠한 클러스터링 기법에 의해 총 10개의 데이터 포인트들이 3개의 군집으로 나눠졌다고 하자. 

클러스터 A의 데이터 포인트 i를 선택하고, 데이터 포인트 i의 실루엣 계수를 구할 것이다. 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

우선 데이터 포인트 i가 속한 클러스터 A 안에 있는 다른 데이터 포인트들과의 거리 평균을 구한다. 

 

반응형

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

그리고, 데이터 포인트 i가 속하지 않은 클러스터 B의 데이터 포인트들과 거리 평균을 구하고, 마찬가지로 클러스터 C의 데이터 포인트들과 거리 평균을 구한다. 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

클러스터 B와 C 중 데이터 포인트 i와 가까운 클러스터(=이웃 클러스터)는 B이므로 \(b(i)\) 값은 5.3이 되며, \(a(i)\), \(b(i)\) 값으로 데이터 포인트 i의 실루엣 계수 \(s(i)\) 값을 구한다. 

 

* 실루엣 계수 계산식의 분모는 두 군집 간 거리를 정규화하는 스케일러의 역할을 한다. 

* 동일한 클러스터 내에 있더라도 데이터 포인트마다 이웃 클러스터는 다를 수 있다. 

* 만일 클러스터 안에 1개의 데이터 포인트만 존재하는 경우, 해당 데이터 포인트의 실루엣 계수는 0으로 본다. 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

위 그림처럼 모든 데이터 포인트들에 대해 실루엣 계수를 계산했다면, 실루엣 계수들의 평균값(overall average silhouette width)을 계산해준다. 만일 클러스터 개수별로 여러 번 군집화를 수행했거나, 여러 클러스터링 기법으로 여러 번 군집화를 수행한 경우 실루엣 계수의 평균값을 비교하여, 클러스터 개수를 몇 개로 할 것인지, 혹은 어떤 클러스터 기법을 선택할 것인지 판단할 수 있다. 

 

* 실루엣 계수의 평균값이 1에 가까울수록 군집화가 잘 되었다고 생각할 수 있다.  

* 각 클러스터 내의 데이터 포인트들의 실루엣 계수 평균값을 구하여, 각 클러스터별 평균값도 구할 수 있다. 1에 가까운 평균값을 가지는 클러스터는 'clear-cut' 클러스터, 0에 가까운 값을 가지는 클러스터는 'weak' 클러스터로 표현된다.

 


추가적으로 실루엣 계수에 대해 조금 더 살펴보면, 

 

  • \(s(i)\)가 0에 가까운 경우는, 두 군집 간 거리가 거의 비슷한 경우를 의미하며 잘 구분되지 않은 상태이다.
  • \(s(i)\)가 -1에 가까운 경우는, 데이터 포인트 i가 오히려 이웃 클러스터에 더 가까운 경우를 의미하며 아예 잘못 할당된 상태라고 볼 수 있다. 그래서 이러한 경우는 실제로는 거의 나타나지 않는다. 

 

실루엣 분석의 장점 

  • 클러스터링이 수행된 후 실제 구분된 클러스터에 따라 실루엣 계수를 구하기 때문에, 클러스터링 알고리즘에 영향을 받지 않는다. 
  • 적절한 클러스터 개수를 정하거나 더 나은 클러스터링 기법을 선택하는 기준으로 삼을 수 있다. 
  • 클러스터링 결과 값을 시각화할 수 있다. 


실루엣 분석의 단점

  • 데이터 양이 많아질수록 수행 시간이 오래 걸린다.
    *만일 100개의 데이터 포인트가 있다면 99개의 다른 데이터 포인트들과 거리를 구해 실루엣 계수를 구해야 하고, 이런 동일한 연산을 100번 수행해야 한다.
  • 전체 데이터 포인트의 실루엣 계수 평균값만으로 클러스터링 결과를 판단할 수 없으며 개별 클러스터의 평균값도 함께 고려해야 한다.

 

 

참고자료


 

다음 포스팅에서는 실루엣 계수를 어떻게 시각화하여 분석에 활용하는지 python 코드와 함께 알아볼 것이다. 👀

 

 

반응형

댓글