실루엣 계수 계산기 쉽게 이해하기 — 개념과 원리
실루엣 값 s(i)는 한 데이터 점이 배정된 군집에 얼마나 잘 들어맞는지를 가장 가까운 다른 군집과 비교해 나타냅니다. 모든 점에 대해 평균하면 실루엣 계수가 되며, k-평균 등에서 군집 결과를 비교하거나 군집 개수를 정할 때 널리 씁니다.
계산 방법
- a(i): 점 i에서 같은 군집의 다른 모든 점까지 거리의 평균입니다(응집도).
- b(i): 다른 군집마다 점 i와 그 군집 점들 사이의 평균 거리를 구하고, 그중 가장 작은 값을 택합니다(가장 가까운 이웃 군집과의 분리도).
- s(i) = (b − a) ÷ max(a, b)
거리는 유클리드 거리, 맨해튼 거리 등 어느 것이든 a와 b에 같은 기준을 쓰면 됩니다. s(i)는 단위가 없고 −1과 1 사이입니다. 군집에 점이 하나뿐이면 관례상 s(i) = 0으로 둡니다.
원리
점이 다른 군집보다 자기 군집에 훨씬 가깝다면, 곧 a가 b보다 충분히 작다면 잘 묶인 것입니다. 차이 b − a를 둘 중 큰 값으로 나누면 −1에서 1 사이로 정규화됩니다. a < b이면 s = 1 − a/b로, a가 작을수록 1에 가까워집니다. a = b이면 s = 0으로 두 군집의 경계에 놓인 점입니다. a > b이면 s = b/a − 1로 음수가 되며, 평균적으로 다른 군집에 더 가까우므로 잘못 배정되었을 가능성이 큽니다.
예제 풀이
- 입력값: a(i) = 1.2, b(i) = 3.0입니다.
- b − a = 3.0 − 1.2 = 1.8입니다.
- max(a, b) = 3.0입니다.
- s(i) = 1.8 ÷ 3.0 = 0.6입니다.
- 같은 결과를 1 − 1.2 ÷ 3.0 = 0.6으로도 얻을 수 있습니다. 자기 군집까지의 평균 거리가 가장 가까운 다른 군집까지의 40%라는 뜻입니다.
| 가장 가까운 다른 군집까지 평균 거리 b(i) | 실루엣 s(i) |
|---|---|
| 0.75 | -0.375 |
| 1.5 | 0.2 |
| 2.25 | 0.4666666667 |
| 3 | 0.6 |
| 3.75 | 0.68 |
| 4.5 | 0.7333333333 |
| 6 | 0.8 |
결과 해석
1에 가까우면 조밀하고 잘 분리된 군집 안쪽에 있는 점이고, 0 근처면 군집 사이 경계에 있으며, 음수면 다른 군집에 속할 가능성이 있습니다. 데이터 전체의 평균에 대해 Kaufman과 Rousseeuw는 0.70 초과는 강한 구조, 0.51~0.70은 적절한 구조, 0.26~0.50은 인위적일 수 있는 약한 구조, 0.25 이하는 뚜렷한 구조 없음이라는 대략적 기준을 제시했습니다. 군집 수를 정할 때는 여러 k에 대해 평균을 구해 큰 쪽을 택하되, 군집별 실루엣 그림도 함께 보십시오.
흔한 실수
- 군집 내 모든 점까지의 평균 거리 대신 가장 가까운 한 점까지의 거리를 쓰는 경우입니다.
- b를 가장 가까운 군집이 아니라 가장 먼 군집에서 구하는 경우입니다.
- 척도나 변환이 다른 특성으로 계산한 실루엣 계수를 서로 비교하는 경우입니다.
자주 묻는 질문
실루엣 0.6은 좋은 값인가요?
한 점이라면 분명히 잘 들어맞는 편입니다. 전체 평균이 0.6이라면 Kaufman과 Rousseeuw 기준의 "적절한 구조"에 해당합니다.
데이터가 아주 많아도 계산할 수 있나요?
정확히 구하려면 모든 쌍의 거리가 필요해 계산량이 n²에 비례합니다. 그래서 무작위 표본으로 계산하는 경우가 많습니다.
거리 척도에 따라 값이 달라지나요?
그렇습니다. 군집 알고리즘이 사용한 거리와 같은 척도를 쓰고, 특성의 단위를 먼저 표준화하십시오.
출처: P. J. Rousseeuw, "Silhouettes: a graphical aid to the interpretation and validation of cluster analysis", Journal of Computational and Applied Mathematics 20 (1987) 53–65 · L. Kaufman and P. J. Rousseeuw, Finding Groups in Data: An Introduction to Cluster Analysis, Wiley, 1990