brunch

You can make anything
by writing

C.S.Lewis

by 코딩하는 수학쌤 Sep 06. 2021

33. 모아서 묶어주는 k-평균 군집화

[4악장 - Cadenza] 머신러닝의 알고리즘과 수학

 

 k-평균 군집화(k-mean Clustering)는 데이터의 분포를 k개의 점을 중심으로 데이터를 나누어 묶어주는 알고리즘입니다. 예를 들어 전교생들이 운동장에 우르르 나가 있는 상태에서 학교 선생님이 방송을 통해 

 "각 학급별로 모이세요. 1학년 1반부터 학반 순서로 왼쪽부터 한 줄로 정렬하겠습니다."

라고 기준을 알려주면 지도학습이 됩니다. 반면 기준없이 운동장에서 자유롭게 아이들이 삼삼오오 모여서 무리를 지어서 놀고 있는 것을 발견하고, 무리별로 묶는 것이 k-평균 군집화 알고리즘이라고 할 수 있습니다. 앞의 k는 무리를 몇개로 묶을 것인지를 결정하는 값입니다.


예를 들어서 아래와 같이 흩어져있는 데이터가 있다고 가정해보겠습니다.

위의 그림에서는 직관적으로 2개의 군집으로 나눌 수 있다고 생각이 들죠? 그러면 이 데이터가 k-평균 군집화를 통해 어떻게 2개의 군집으로 나누는지를 차례대로 살펴보겠습니다.



 위와 같은 과정을 통해 k-평균 군집화가 이루어집니다. k라고 하는 것은 몇 개의 군집으로 나눌 것인지를 결정하는 값이 됩니다. 처음의 중심점은 임의로 정해지는데, 각 데이터마다 가까운 중심점의 위치를 확인합니다. 그리고 그 중심점을 기준으로 군집이 형성됩니다. 그리고 각 군집의 데이터의 평균의 값으로 중심점이 이동을 합니다. 이후 다시 데이터별로 각 중심점들에 대한 거리를 확인한 후 새롭게 군집이 만들어집니다. 이와 같은 과정을 반복한 후 중심점의 위치의 변화가 (거의) 없으면 군집화 과정이 완료됩니다.


 k-평균 군집화 알고리즘은 지금까지 살펴봤던 지도 학습과의 몇 가지 차이점이 존재합니다. 가장 큰 차이는 k-평균 군집화의 경우 데이터에 레이블이 필요하지 않는다는 점입니다. 지도 학습은 정답에 해당하는 레이블의 값을 찾아가는 모델을 만들어내는 것이 목적이지만, 비지도 학습의 경우 데이터의 처리가 주요 목적입니다. 이러한 군집화는 상점의 위치를 결정하거나 고객의 성향을 나누는데 흔히 사용됩니다. 아래 그림은 케밥의 키오스크를 어디에 둘 것인지를 k-평균 군집화를 활용하는 예시를 설명하고 있습니다.



이미지 출처 : https://vas3k.com/blog/machine_learning/


두 번째 차이점은 k-평균 알고리즘은 데이터 전체에 대한 계산이 여러 번 반복된다는 것입니다. 즉 한 번에 정답을 찾는 방법은 존재하지 않으므로 계속적으로 정답에 가깝게 찾아가는 과정을 반복합니다. 마치 최적화 과정에서 경사 하강법을 여러 번 활용해서 손실 함수가 최소가 되는 지점을 찾아가는 것처럼 k-평균 군집화 알고리즘도 여러 번의 반복 계산 과정이 필요합니다. 따라서 코딩을 통한 반복 처리가 필수적이죠.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari