지난 글 : [알고리즘/알고리즘 도감] - 전자 인증서
비슷한 것끼리 묶는다
클러스터링(clustering)은 다수의 데이터가 주어졌을 때 '비슷한 것'들을 묶어 그룹으로 분류하는 작업을 뜻한다. 개별 그룹을 '클러스터(cluster)'라 한다.
'비슷한 것'은 어떻게 정하나
데이터 간의 거리로 정하기
어떤 기준으로 '비슷한 것'을 정하는지는 데이터에 따라 다르다. 구체적으로는 두 개의 데이터 간 거리를 정의해야 한다. 예를 보자.
고등학교 모의고사에서 1학년 400명의 국어, 수학, 영어 점수를 데이터화한 후, 학생들을 '특기 과목과 비특기 과목의 유사 정도'로 클러스터링 하는 경우에 , 각 학생을 (국어 점수, 수학 점수, 영어 점수)형식으로 데이터화하고, 두 개의 데이터(k1, m1, e1)과 (k2, m2, e2)의 거리를 (k1 - k2)2 + (m1 - m2)2 + (e1 - e2)2라 정의할 수 있다. 이 거리가 가까운 데이터들을 '비슷한 데이터'라 볼 수 있다.
조건을 고려한 알고리즘
데이터 간 거리를 정의한다 해도 클러스터링에는 고려해야 할 다양한 조건이 있다. 예로 '클러스터 수를 10으로 한다', '하나의 클러스터 내에 데이터 수(학생 수)를 30~50명으로 한다' 등 다양한 조건을 생각할 수 있다. 이 조건들은 클러스터링의 목적에 따라 달라진다. 예를 보자.
방학 보충수업을 위해 클러스터를 나누는 것이 목적이라면 선생님이나 교실 수에 맞춰 클러스터 수를 조정해야 하고, 교실이 넓이에 따라 클러스터 내 데이터 수에도 제약이 생긴다. 이렇게 다양한 조건을 고려한 여러 클러스터링 알고리즘이 존대한다.
참고 서적 :