클러스터링(군집화) 알고리즘은 데이터 속에서 유사한 객체들을 그룹으로 묶는 대표적인 비지도 학습 기법입니다. 하지만 실무에서 클러스터링 알고리즘을 선택하고 활용할 때는 몇 가지 중요한 특징을 반드시 이해해야 합니다. 지금부터 클러스터링 알고리즘이 지닌 핵심 특징들을 하나씩 살펴보겠습니다.
1. 순서 의존성(Order Dependence)
여러 클러스터링 알고리즘은 데이터가 처리되는 순서에 따라 생성되는 클러스터의 개수와 특성이 달라질 수 있으며, 경우에 따라 그 차이가 매우 클 수 있습니다. 이러한 순서 의존성 때문에 해당 알고리즘을 피하고 싶어 보이지만, 때로는 순서 의존성의 영향이 미미하거나 알고리즘이 다른 면에서 여러 장점을 지니고 있어 여전히 유용하게 활용됩니다.
2. 비결정성(Non-determinism)
K-평균(K-means)과 같은 일부 클러스터링 알고리즘은 데이터 처리 순서에는 의존하지 않지만, 초기화 단계에서 무작위(random) 선택에 기반하기 때문에 실행할 때마다 결과가 달라질 수 있습니다. 클러스터의 품질이 실행마다 변동될 수 있으므로, 안정적이고 신뢰할 만한 결과를 얻기 위해서는 여러 번 반복 실행하는 것이 필요합니다.
3. 확장성(Scalability)
실제 데이터셋은 수천 개 이상의 객체를 포함하는 경우가 흔합니다. 따라서 이러한 대규모 데이터셋에 적용되는 클러스터링 알고리즘은 선형(linear) 또는 준선형(near-linear) 수준의 시간 및 공간 복잡도를 가져야 합니다.
복잡도가 O(m²)인 알고리즘조차 대용량 데이터에는 부적합합니다. 더욱이 대규모 데이터셋을 위한 클러스터링 기법은 모든 데이터가 메인 메모리에 들어간다고 가정하거나, 데이터 요소에 임의로 접근할 수 있다고 가정해서는 안 됩니다. 이런 가정에 기반한 알고리즘은 대용량 데이터 환경에서 사실상 사용이 불가능합니다.
4. 매개변수 선택(Parameter Selection)
일부 클러스터링 알고리즘은 사용자가 직접 설정해야 하는 하나 이상의 매개변수를 요구합니다. 적절한 값을 찾는 것은 쉽지 않기 때문에 일반적으로 "매개변수가 적을수록 좋다"는 원칙이 통용됩니다. 특히 매개변수 값이 조금만 바뀌어도 클러스터링 결과가 크게 달라진다면, 최적의 값을 선택하는 일은 더욱 어려워집니다.
결국 매개변수 값을 결정하기 위한 체계적인 방법(사용자 입력을 포함하는 과정)이 제공되지 않으면, 사용자는 시행착오(trial and error)를 통해 적절한 매개변수 값을 찾아야만 합니다.
5. 클러스터링 문제의 다른 도메인으로의 변환
일부 클러스터링 기법이 취하는 접근 방식 중 하나는 클러스터링 문제를 다른 영역(domain)의 문제로 변환하는 것입니다. 대표적인 예로 그래프 기반 클러스터링은 클러스터를 발견하는 작업을 근접 그래프(proximity graph)를 연결 요소(connected components)로 분할하는 문제로 바꾸어 해결합니다.
6. 클러스터링을 최적화 문제로 취급
클러스터링을 하나의 최적화(optimization) 문제로 간주하는 관점도 있습니다. 즉, 사용자가 정의한 목적 함수(objective function)가 평가하는 클러스터 집합의 품질을 최대화하도록 데이터 포인트를 클러스터로 나누는 것입니다.
예를 들어 K-평균 클러스터링 알고리즘은 각 점과 가장 가까운 클러스터 중심(centroid) 사이 거리의 제곱합을 최소화하는 클러스터 집합을 찾으려 합니다. 이론적으로는 가능한 모든 클러스터 조합을 열거하여 목적 함수 값이 가장 좋은 것을 선택할 수 있지만, 이러한 전수 탐색(exhaustive search) 방식은 계산량이 너무 많아 현실적으로 불가능합니다.