본문 바로가기
AI · 인공지능/알기쉬운 AI

[알기쉬운 AI - 11] 그룹에서 당신은 어떤 타입? '클러스터링'이란?

by 두우우부 2019. 12. 23.
반응형

학창 시절 고등학교나 대학에 진학해서 친구를 잘 사귈 수 있을지 불안했던 분들이 많을 것입니다. 전혀 말해본 적 없는 사람들과 같은 커뮤니티에 속하여 교우관계를 처음부터 만들지 않으면 안 되니까 당연합니다. 그러나 몇 주 지나면 신기하게도 친한 그룹이 어느새 생겨있고 항상 함께하는 동료가 되는 것입니다. 어떤 친구를 선택할지는 개인의 맘대로 지만, 대체로 비슷한 사람끼리 모이는 것이 보통입니다. 이와 같이 '동류끼리 모인다'는 원칙 하에서 데이터를 분류하는 방법이 있습니다. 즉 '닮은 그룹에 속하는 것'이라는 전제를 바탕으로 분류를 해 나가는 것입니다. 그러면 데이터가 어떻게 친구 만들기를 해 나가는지 살펴보도록 합시다.

 

1. 비지도 분류 - 클러스터링

이미 언급 한 바와 같이 "이미 분류된 데이터"가 쉽게 손에 들어오는 경우는 그리 많지 않습니다.

 

이렇게 정의된 카테고리 정보가 제공되지 않은 데이터 학습을 비지도 학습이라고 합니다. 대량으로 모여는 있지만, 상세한 분류가 되어있지 않은 데이터를 그 특징으로 잘 분류해내는 방법을 '클러스터링'이라고 합니다.

 

이 클러스터링 분석의 역사는 길고, 다양한 방법이 제안되어 있지만 여기에서는 가장 대표적인 기법인 k-means알고리즘과 그 개량판 인 k-means++알고리즘을 소개합니다.

 

2. 비슷한 데이터는 근처에 있다 - k-means 알고리즘

"비슷한 것들은 같은 그룹에 속할 것이다"라는 가설하에 그룹화해 나간다고 했는데요, 여기서 어떻게 "비슷하다"는 것을 알아낼 수 있을까요? 예를 들어, 쿠팡의 고객을 2그룹으로 분류해 보겠습니다. 아래 그림을 보세요. 가로축에 구입하는 물건의 가격, 세로축은 1개월간 구매빈도로 사용자 개개인을 점으로 표현했습니다.

 

즉 오른쪽 아래의 점은 고가의 물건을 가끔 구매하는 이른바 고급 지향의 사람이고, 왼쪽 상단은 싼 물건을 자주 구매하는 이른바 서민 유형이라고 말할 수 있습니다.

 

이렇게 구매성향이 비슷한 사람을 그룹화할 수 있으면, 그 사람에 맞는 상품을 추천할 수 있을 것입니다.

이렇게 만들어진 영역은 매개변수(파라미터 공간) 등으로 불립니다. 이 예제의 공간에서 구매 빈도가 비슷한 사람끼리는 비슷한 높이에 있고, 비슷한 가격의 물건을 구입하는 사람끼리는 같은 위치에 세로로 늘어선 것입니다. 즉 이 매개변수 공간에서 두 점 사이의 거리는 "비슷한 정도"에 해당하는 것입니다.

 

무엇을 말하고 싶은가 하면, 이 매개변수 공간에서의 거리가 가까운 것을 같은 그룹으로 결정한다면 좋지 않겠느냐는 것입니다. 이 매개변수 공간의 거리를 잘 이용한 클러스터링 알고리즘의 대표작이 k-means 알고리즘입니다.

 

k-means 알고리즘은 다음과 같은 흐름을 반복함으로써 비슷한 것끼리 그룹을 만들어 가고 있습니다. 아까의 사용자 매개변수 공간을 2그룹으로 나누어 봅시다.

 

① 2개의 점을 무작위로 선택한다.

② 각각의 데이터 포인트가 ①에서 선택한 점에 가장 가까운 것과 동일한 그룹이 되도록 분리

③ 각 그룹의 중간(중심)을 계산

④ 다시 각각의 점이 가장 가까운 중심에 속하도록 분류한다.

이러한 그룹 분류 작업 결과가 1회 직전의 결과와 같아질 때까지 반복한다.

이러한 순서에 따라 그룹화를 반복하여 매개변수 공간 데이터의 클래스 분류를 실시하는 것이 k-means 알고리즘입니다. 또한 매번 이동해 나가는 중심을 센트로이드(centroid)라고 합니다.

 

아주 잘 만들어진 방법이지만, 어디에나 약점은 있습니다. 아래 그림을 보세요. 양쪽 동일하게 k-means 방법을 사용하여 3종류로 분류한 것입니다만, 다른 그룹핑이 되어 버렸습니다.

왜 이런 일이 일어나는 것일까요? 이것은 처음에 선택한 점이 랜덤이기 때문에 만약 그 첫 번째 점이 가까이 나와 버리면 위와 같은 문제가 발생합니다. 이 문제를 해결하기 위해 태어난 것이 k-means++ 알고리즘입니다.

 

2. 다른 그룹은 먼 곳에 : k-means++ 알고리즘

k-means++ 알고리즘에서는 첫 번째 점을 무작위로 선택하는 것이 아니라 가능한 먼 점이 첫 번째 점으로 선정되도록 개선했습니다. 다음 3개의 첫 센트로이드 선택의 흐름을 살펴보도록 합시다.

 

3개의 점을 선택할 것입니다만, 첫 번째 점은 무작위로 하나를 선택합니다. 그 후, 그 점과의 거리가 멀수록 선정될 확률이 높아지도록 점을 선택합니다. 즉 지금까지 모든 점이 동일하게 무작위로 선택되었다면, 더 먼 곳을 선정하도록 편향을 만든 것입니다.

그리고 세 번째도 마찬가지로, 이번에는 첫 번째 점과 두 번째 점의 거리의 합이 먼, 즉 계속해서 멀리 있는 점이 높은 확률로 선택되도록 구현하는 것입니다. 그리고 최초의 점이 선택되면 나머지는 k-means 방법과 동일하게 "중심을 계산", "센트로이드를 다시 보정"의 반복뿐입니다. 즉, k-means++은 첫 번째 점의 선택을 변경한 것 만으로 그 분류를 향상한 것입니다.

 

이러한 클러스터링 방법은 매우 심플하지만 때로는 강력한 성과를 내는 것으로 알려져 있으며, 마켓 세그먼테이션(시장 세분화 전략 - 가치관의 다양화, 소비의 다양화라는 현대의 마케팅 환경에 적응하기 위하여 수요의 이질성을 존중하고 소비자 · 수요자의 필요와 욕구를 정확하게 충족시킴으로써 경쟁상의 우위를 획득 · 유지하려는 경쟁전략) 등의 사회 구현도 이미 진행되고 있습니다.

반응형