KElbowVisualizer에서 score 부분이 의미하는 것은 군집화 성능의 평가 지표입니다.
만약 score 파라미터를 지정하지 않았다면, KElbowVisualizer는 기본적으로 'distortion' 점수를 사용하는 것이 일반적입니다.
'distortion'은 군집 내의 샘플들과 군집 중심점(centroid) 간 거리의 제곱합을 의미하며, 이는 군집 내의 응집도를 나타내는 지표로 사용됩니다.
즉, 'distortion'이 낮을수록 군집 내의 데이터 포인트들이 군집 중심에 더 가깝게 모여 있음을 의미하고, 군집화가 잘 되었다고 볼 수 있습니다.
실루엣 스코어(Silhouette Score)는 군집화의 품질을 측정하는 지표입니다. 각 데이터 포인트의 실루엣 계수를 계산하여 군집화가 얼마나 잘 되었는지를 평가합니다. 실루엣 계수는 -1에서 1 사이의 값을 가지며, 이 값이 높을수록 군집화 성능이 좋다고 할 수 있습니다.
실루엣 스코어를 계산하는 방법은 다음과 같습니다:
각 데이터 포인트 (i)에 대해, 같은 군집 내의 다른 데이터 포인트들과의 평균 거리를 계산합니다. 이를 (a(i))라고 합니다. (a(i))는 군집 내 응집도를 나타내며, 값이 작을수록 군집 내의 데이터 포인트들이 서로 가까이 위치해 있다는 의미입니다.
데이터 포인트 (i)와 가장 가까운 다른 군집의 데이터 포인트들 간의 평균 거리를 계산합니다. 이를 (b(i))라고 하며, 이웃하는 군집과의 분리도를 나타냅니다. (b(i))는 값이 클수록 군집 간에 잘 분리되어 있다는 것을 의미합니다.
각 데이터 포인트 (i)에 대해 실루엣 계수 (s(i))를 계산합니다. 이는 다음과 같이 정의됩니다:
[s(i) = \frac{b(i) - a(i)}{\max{a(i), b(i)}}]
실루엣 계수는 -1에서 1 사이의 값을 가집니다. (s(i))의 값이 1에 가까우면 데이터 포인트 (i)가 자신의 군집에 잘 속해 있고, 다른 군집과 잘 분리되어 있다는 것을 의미합니다. (s(i))의 값이 0에 가깝다면, 데이터 포인트가 군집 경계에 위치해 있음을 나타냅니다. (s(i))의 값이 음수라면, 데이터 포인트가 잘못된 군집에 할당되었을 가능성이 있습니다.
실루엣 스코어는 모든 데이터 포인트의 실루엣 계수의 평균값으로, 이 값이 높을수록 군집화가 잘 되었다고 평가할 수 있습니다. 따라서, 군집화 알고리즘의 성능을 평가하고 최적의 군집 수를 결정하는 데 유용하게 사용됩니다.