[머신러닝] K-means 클러스터링 개념 정리

업데이트:

K-means 클러스터링 개념 정리

참고링크

머신러닝 딥러닝 선형대수 기초통계 최적화
k-means 신경망이란 고유값,고유벡터 확률변수 컨벡스 셋
k-최근접이웃 성능함수 행렬식 확률분포 컨벡스 함수
선형회귀 신경망 학습 내적 모집단과 표본 라그랑주 듀얼
로지스틱회귀 교차연결 기저 평균과 분산 KKT 조건
릿지,라쏘회귀 합성곱 신경망 랭크, 차원 공분산, 상관계수 ROC 커브
의사결정나무 배치, 에포크 차이 선형변환 최대가능도추정 크로스 밸리데이션
서포트벡터머신 텐서플로기초(1) 직교행렬 베르누이,이항분포 실루엣 스코어
원클래스 SVM 텐서플로기초(2) 고유값분해 기하,음이항분포  
LDA seq2seq 특이값분해 초기하분포  
GMM opencv기초   포아송분포  
부스팅 resnet   정규분포  
사이킷런 실습 다각형내부판별   감마분포  
  엣지판별   지수분포  
      카이제곱분포  
      베타분포  
      균일분포  



K-Means 클러스터링 간단 개념

K-Means 클러스터링은 N개의 데이터를 K개의 클러스터로 나누는 클러스터링 기법입니다. 각 클러스터는 자신의 평균값을 가지고 있습니다. k번째 클러스터의 평균을 $m^{k}$라고 하겠습니다. 각각의 데이터는 I차원에 있다고 하겠습니다. 즉, $x=(x_1, \dots , x_i, \dots , x_I)$ 꼴입니다. 쉬운 예로 2차원 데이터면 $x=(1,2)$ 꼴로 표현 되겠지요. k-means 클러스터링에서는 거리 개념이 사용되는데요. 여기서는 유클리드거리를 사용하며 아래 식을 사용합니다.

\[d(x,y) = \sqrt{\sum(x_i - y_i)^2}\]

클러스터링 단계

1. 그룹 평균 초기화

각 그룹의 평균 $m^{k}$를 초기화 합니다. 참고로 초기화 하는 방법에도 여러가지가 있습니다. 가장 기본적인 방법은 랜덤값을 평균으로 취하는 것입니다.

2. 그룹할당

모든 데이터 $x^{n}$ 대해 가장 가까운 평균에 속하게 합니다. 즉, 각 데이터 포인트에 대해 각 그룹의 평균까지의 거리를 계산하고, 가장 가까운 그룹으로 속하게 하는 것입니다. 이를 수식으로 적으면 아래와 같은데요.

\[\hat{k^{(n)}} = argmin_{k}[d(m^{(k)}, x^{(n)})]\]

3. 평균 업데이트

각 그룹에 대한 새로운 평균값을 업데이트 합니다.

\[r_{k}^{(n)} = \begin{cases} 1 & \text{if} \, \hat{k}^{(n)}=k \\ 0 & \text{if} \, \hat{k}^{(n)} \neq k \\ \end{cases}\]

위 식의 $r_{k}$는 지시함수(indicator function)로서 해당 클러스터인 경우 1, 아니면 0입니다. 아래식에서 사용법을 보시면 이해가 되실 겁니다.

\[m^{(k)} = \frac{\sum_{n}r_{k}^{(n)}x^{(n)}}{\sum_{n}r_{k}^{(n)}}\]

4. 반복

2, 3단계를 반복합니다. 언제까지 반복하냐면 2단계에서 바뀌는게 없을 때 까지 반복합니다.

k-means 클러스터링의 한계

사실 k-menas 클러스터링에서는 가중치를 주거나하지 않기 때문에 클러스터간 데이터의 밀도의 차이가 있을 경우 클러스터링이 잘 되지 않는 경향이 있습니다. 또한 이 방법은 클러스터의 모양을 고려하지 않습니다.