Post

Clustering

Summary of Clustering

Clustering

Clustering

K-means는 hard assignment 방식의 거리 기반 클러스터링인 반면, GMM (Gaussian Mixture Model)EM algorithm (Expectation Maximization) 을 활용한 soft assignment 방식의 확률적인 모델이다. 데이터의 트것ㅇ과 목적에 따라 단순한 거리 기반 알고리즘이나 복잡한 확률적 접근법을 다르게 선택하자.

Introduction

Clustering 은 라벨이 없는 데이터 $${ x_i} 에서 latent space (잠재적인 구조) 를 발견하는 Unsupervised learning 비지도학습의 방법 중 하나이다. 보통 Image segmentation, User profiling, Gene expression analysis, Data compression, Visualizing 등이 있다.

Goal

객체들을 K개의 그룹으로 묶되, 같은 그룹 내의 객체들은 similar(유사하게), 서로 다른 그룹의 객체들은 dissimilar(이질적?다르게?) 만드는 것이 목표. 즉 편가르기를 하겠다~ 이말.

Assignment

각 객체 \(x_i\) 에 대해 K개 그룹 중 하나를 가리키는 할당값 \(z_i \in \{ 1, ..., K\}\) 를 찾늗다.

Distance-based Clustering: K-means & K-medians

유사성을 정의하기 위해 Similarity function \(s(\cdot, \cdot)\) 이나 Distance function \(d(\cdot, \cdot)\) 을 사용한다.

K-means Algorithm

각 클러스터는 Centroid \(\mu_k \in \mathbf{R}^D\) 로 정의되고, 클러스터 지표 \(z_i \in \{ 0, 1\}^K\) 는 One-hot encoding(!) 방식을 따른다.

Distortion measure

\[J(X, Z, \mu) = \sum^N_{i=1} \sum^K_{k=1} z_{ik} ||x_i - \mu_k||^2_2\]

위 식을 최소화하는 \(Z, \mu\) 를 찾는것이 목적이다. 그럼 이것을 어떻게 찾는냐? 할때 로이드 알고리즘이라는 것이 등장한다.

Lloyd’s Algorithm

다음 두 단계를 수렴할 때까지 반복하는 Alternating optimization 방식이다.

1. Update Z

각 \(x_i\) 를 가장 가까운 \(\mu_k\) 에 할당한다.

\[z_{ik} = 1 \text{ if } k = argmin_j ||x_i - \mu_j||_2 \text{ else } 0\]

2. Update \(\mu\)

할당된 점들의 평균으로 Centroid 를 갱신한다.

\[\mu_k = \frac{1}{N_k} \sum^N_{i=1} z_{ik} x_i\]

이 방법은 초기값에 매우 민감하기 때문에, 첫 번째 중심을 무작위로 선택한 후 거리의 제곱에 비례하는 확률로 다음 중심을 뽑는 K-means++ 알고리즘이 권장된다.

Gaussian Mixture Model (GMM)

K-means 는 거리 기반으로 나눈다. 여기서 약간의 문제점! 이 발생하는데, 대충 거리로 때려서 나누면, 어떤 값들은 확실하지 않거나, 오분류가 되거나, 혹은 특이케이스가 너무 큰 값을 차지해 클러스터링에 문제가 생길 수도 있다. 그래서 이를 극복하기 위해 확률적인 모델인 GMM 을 도입하게 되었다.

GMM 은 데이터가 여러 개의 가우시안 분포가 혼합된 형태 라고 가정하고, Latent variables \(Z\) 를 통해 이를 모델링한다.

결국 그냥 확률의 합

-Joint Probability : \(p(x, z \lvert \theta) = p(x \lvert z, \theta) p(z \lvert \theta)\)

  • Cluster Prior : \(p(z \lvert \theta) = Cat(\pi)\) , Categorical distribution
  • Conditional Likelihood : \(p(x \lvert z_k = 1, \theta)= \mathcal{N}(x \lvert \mu_k, \sum_k)\)

위 식과 같은 내용인데, 기댓값과 공분산의 성질을 다시 보면 아래와 같다

-Marginal Likelihood : \(p(x \lvert \pi, \mu \Sigma) = \sum^K_{k=1} \pi_k \mathcal{N}(x \lvert \mu_k, \sum_k)\)

여기 이제 inference(Responsibility) 가 등장하는데, 이것은 파라미터가 주어졌을 때 데이터 \(x_i\)가 클러스터 k 에서 나왔을 사후 확률이라고 한다.

\[\gamma(z_{ik}) = \frac{\pi_k \mathcal{N} (x_i \lvert \mu_k, \sum_k)}{\sum^K_{j=1} \pi_j \mathcal{N} (x_i \lvert \mu_j, \sum_j)}\]

Expectation-Maximization (EM) Algorithm

GMM 의 로그 가능도 함수인 \(log p(X \lvert \theta)\) 는 로그 안에 합이 있어 직접 최적화가 어렵기 때문에, EM Algorithm 을 사용한다. 이것은 E-step, M-step 의 합성으로 평가하고 업데이트하고.. 의 반복 이다.

E-step

현재 파라미터를 바탕으로 Responsibility \(\gamma_t(Z)\) 를 평가한다.

M-step

Expected joint log-likelihood 를 최대화해서 파라미터를 업데이트한다.

  • \[\mu^{(t+1)}_k = \frac{1}{N_k} \sum^N_{i=1} \gamma_t (z_{ik}) x_i\]
  • \[\sum^{(t+1)}_k = \frac{1}{N_k} \sum^N_{i=1} \gamma_t (z_{ik}) (x_i - \mu_k^{(t+1)}) (x_i - \mu_k^{(t+1)})^T\]
  • \[\pi_k^{(t+1)} = \frac{N_k}{N} \text{ 단, } N_k = \sum^N_{i=1} \gamma_t (z_{ik})\]

General EM

임의의 확률 분포 \(q(Z)\) 에 대해 하한선인 \(L(q, \theta)\) 를 정의하고, E-step 에서는 \(q(Z)\) 를 사후확률에 맞춰 하한선을 높이고(**tighten), M-step 에서는 \(\theta\) 에 대해 이 하한선을 최대화 한다.

Advanced Topics,,,

Mixture of Bernoullis

binary data(e.g., 흑백이미지) 를 모델링할 대 사용하고, M-step 을 업데이트할 때, 각 픽셀 \(d\)의 확률 \(\theta_{kd}\)은 Responsibility로 가중 평균된 픽셀 값들의 평균이 된다.

K-menas vs. GMM

모든 가우시안 성분의 공분산이 \(\sum_k = \sigma^2 I \text{ 이고 } \sigma^2 \rightarrow 0\) 일 때,

  • GMM 의 EM update == K-mean 의 Lloyd’s algorithm

두 개가 동일해진다.

How to choose \(k\)?

methodsorts
HeuristicElbow method
HeuristicGap statistic
HeuristicSilhouette
  
ProbabilisticBIC, \(M log N - 2 log \hat{L}\)
ProbabilisticAIC, \(2 M - 2 log \hat{L}\)

Hierarchical Clustering

데이터를 계층적으로 쌓아가는 방식

  • Agglomerative : Botton-up 방식으로 클러스터 쌍을 병합
  • Linkage criteria : 클러스터 간의 거리를 정의하는 기준 (single, complete, average, centroid 등) 에 따라 병합 대상이 결정됨

결론

This post is licensed under CC BY 4.0 by PythonToGo .