Theory8. K-Means Clustering and Gaussian Mixture Model
8. K-Means Clustering and Gaussian Mixture Model
\(\newcommand{\argmin}{\mathop{\mathrm{argmin}}\limits}\) \(\newcommand{\argmax}{\mathop{\mathrm{argmax}}\limits}\) Machine Learning의 기초적인 이론부분을 다시 제대로 잡고 싶어서 문일철 교수님의 인공지능 및 기계학습 개론을 정리한 Post입니다.
- 8.1 K-Means Algorithm
- 8.2 Hierarchical Algorithm
8.1 K-Means Algorithm
K-Means Clusturing은 분리형 군집화 알고리즘중 하나로서, 각 군집은 하나의 중심을 가지고 각 개체는 가장 가까운 중심에 할당되며, 같은 중심에 개체들이 모여 하나의 군집을 형성하는 방법이다.
이러한 방식은 사전에 군집 수(k)를 사용자가 지정해야하는 hyperparameter이다.
$$W(C) = \frac{1}{2} \sum_{k=1}^{K} \sum_{C(i)=C(j)=k} d_E (m_i,x_j)^2$$
$$d_{E}(a,b) = \sqrt{a^2+b^2}$$
=> 같은 Cluster내에 있는 DataPoint끼리의 Euclidian Distance의 합이 최소가 되도록 Centeriod를 Update한다.
학습 과정
1. 클러스터 개수 K를 고정하고, t=0으로 초기화 한다. K 개의 클러스터( \(C^{0}_{i}, i=1, ..., K\))의 평균(\(m^{0}_{i}, i=1, ..., K\))을 임의로 선택한다.
2. 클러스터링하려는 데이터(\(x_{j}, j=1, ..., M\))각각의 K개의 클러스터 평균과의 최소거리가 되는 클러스터(\(C^{t}_{p}\))로 \(x_{j}\)를 분류
3. 각 클러스터(\(C^{t}_{i}, i=1, ..., K\))에 속한 데이터를 이용하여 새로운 클러스터 평균 \(m^{t+1}_{i}, i=1, ..., K\) 을 계산한다.
$m^{t+1}_{i} = \frac{1}{C^{t}_{i}} \sum_{x \in C^{t}_{i}}x_{j}, i=1, ..., K$
4. t = t+1로 증가시키고 최대 반복회수까지 2~3단계를 계속하여 반복한다.
2단계 반복
3단계 반복
장점 및 단점
장점:
- 계산 복잡성이 O(n)이여서 가벼운 편이다.
- 알고리즘이 쉽다.
단점:
- 군집의 크기가 다를 경우 제대로 작동하지 않을 수 있다.
- 군집의 밀도가 다를 경우 제대로 작동하지 않을 수 있다.
-
데이터 분포가 특이한 케이스인 경우 제대로 작동하지 않을 수 있다.
- 군집 수(k)를 사용자가 미리 지정해야 한다.
- Outlier에 Robust하지 않다.(K-Medoids를 사용하면 해결 가능하나 Complexity가 증가되어서 사용되지 않는다.)
- Hard Clustering 이다. Cluster에 속하냐 안하냐로서만 표현하지, Probability로서 표현되지는 않는다.
그림 출처: ratsgo Blog
참조
- K-Means Algorithm은 EM Algorithm이다. Cluster에 속하는지에 대한 \(C\)를 Expected -> Cluster의 평균 Centriod(\(m_i\))를 Update한다는 의미이다.
- EM Algorithm이므로 Local Minimum에 빠질 가능성이 있다. 따라서 Centriod의 위치를 바꿔가면서 수행하여야 한다.
8.2 Hierarchical Algorithm
K-Means와 달리 K개의 Cluster의 개수를 지정하지 않고 Dendrogram Structure로서 Cluster하는 방식이다.
장점:
- Cluster의 개수를 지정하지 않는다.
- Cluster끼리의 관계 파악 가능
단점:
- Post-Processing: 결국 Dendrogram Structure에서 Cluster로서 나누기 위해 Cut하여 나누어야 됨(사용자가 직접 지정 or Dynamic Cut(R) 패키지 사용)
- 하나의 Cluster로서 결정되면 바뀌지 않는다.
- Complexity가 K-Means(O(n))에 비하여 O(n^3)로서 무거운 편 이다.
Hierarchical Clustering은 크게 2가지로서 나누어 진다.
- Agglomerative Hierarchical Clustering: Bottom-up Algorithm
- Divisive Hierarchical Clustering: Top-Down Algorithm
위와 같이 크게 2가지의 Hierarchical Clustering방법에서 Cluster끼리의 거리를 계산하기 위하여 공통적으로 사용하는 방법은 다음과 같다.
Cluster Distance 측정 방법(위의 2가지 방법 둘다 공통으로 사용)
- Single Linkage: Cluster안에서의 Point끼리 가장 가까운 거리를 측정(Smallest Distance)
- Complete Linkage: Cluster안에서의 Point끼리 가장 먼 거리를 측정(Largest Distance)
- Centroid Linkage: Cluster안에서의 Point끼리 중심 거리를 측정(Distance Between two Centroids)
- Average Linkage: Cluster안에서의 Point끼리 거리의 평균을 측정(Average Distance)
학습 방법
Bottom Up 방식(Agglomerative Hierarchical Clustering)으로 예시를 들면 다음과 같다.
-
Cluster끼리의 거리 계산(Euclidian Distance or Correlation Distance, 위의 4가지 방법 중 하나를 선택)를 계산하여 Matrix형태로서 나타낸다.
-
가장 가까운 거리의 Point들을 하나의 Cluster로서 지정한다.
-
다시 Cluster의 거리를 끼리 거기를 계산하고 1~2의 방법을 계속하여 수행한다.
-
최종적으로 Cluster가 1개가 되었을 때(Root Cluster를 구하였을 때) 학습을 종료한다.
-
위와 같은 최종적인 Dendrogram Structure에서 사용자가 어떤 Cluster로 분류할 지 정하여 Cut(Post-Processing) 한다. Ex) 만약 두번째 층에서 끝게 되면 -> (A,D), C, B로서 3개의 Cluster로서 분할이 가능하다.
그림 출처: ratsgo 블로그
Leave a comment