군집 분석(Clustering analysis)은 주어진 데이터들을 특성에 따라 유사한 것끼리 묶음으로써 각 유형별 특징을 분석하는 기법을 말합니다. 군집 분석의 가장 대표적인 예로 '고객 세분화 (customer segmentation)' 가 있습니다. 다양한 유형의 고객들을 같은 유형끼리 묶어주는 것을 말합니다.
예를 들어, 어떤 게임 유저들의 일주일동안 획득한 경험치양과 플레이 시간을 집계하였더니 아래 그림의 왼쪽에 있는 것처럼 확인이 되었다고 해보죠. 이 때 군집 분석을 이용하면 오른쪽 그림처럼 '경험치 획득량과 플레이 시간이 모두 낮은 유형', '경험치 획득량은 높지만 플레이 시간은 낮은 유형', '경험치 획득량은 낮지만 플레이 시간은 높은 유형', '경험치 획득량과 플레이 시간이 모두 높은 유형' 을 자동으로 묶어줄 수 있습니다.
그렇다면 왜 군집분석을 하는 것일까요? 군집 분석을 하면 전체 데이터를 속성이 비슷한 개체끼리 분류할 수 있습니다. 그리고 이렇게 카테고리별로 개체를 잘 분류하면 관리 편의성 및 효율성이 좋아집니다. 물건을 정리할 때를 생각해 보면 아마 쉽게 이해하실 수 있을 것 같네요. 아래에 있는 왼쪽 그림처럼 여러 물건들을 정리할 때 비슷한 물건끼리 정리해 놓으면 나중에 물건을 찾을 때 쉽게 찾을 수 있겠죠.
마찬가지로 만약 어떤 쇼핑몰에서 이용 고객들을 비슷한 유형끼리 잘 분류해 놓는다면 이후에 고객에게 어떤 상품을 추천하거나 서비스를 제공할 때 오른쪽 그림처럼 비슷한 유형의 고객 정보를 활용하여 적절한 서비스를 제공할 수 있을 것입니다.
또한 우리가 군집 분석을 이용해 데이터를 잘 묶을 수 있다면 소위 말하는 '평균의 함정'에 빠지지 않고 잘 대처할 수 있습니다. '평균의 함정'란 어떤 집단의 평균이 집단에 속한 각 개체의 특성을 잘 반영해 주지 못하는 현상을 말합니다.
'평균의 함정'과 관련해 유명한 일화 중 하나가 미국 전투기 조종석 디자인에 대한 이야기입니다. 1940년대에 미국 공군에서는 전투기 운행 사고가 줄지 않는 원인을 찾기 위해 고심하고 있었습니다. 그런데 원인을 분석해 보니 전투기 조종석의 디자인에 문제가 있었음이 밝혀졌죠.
당시 전투기 조종석은 수천 명의 공군 조종사들의 신체 치수를 측정한 후 이들의 평균값을 참고하여 설계되었습니다. 그런데 길버트 대니얼스라는 학자가 실제 조종사들의 신체 치수와 이 평균값을 비교해 보니 평균에 딱 들어맞는 조종사들이 한 명도 없다는 것을 발견한 것입니다. 따라서 모든 조종사들은 자신의 몸에 맞지 않는 불편한 조종석에서 비행을 해야 했고 이로 인한 조종 실수 때문에 사고가 빈번했던 것입니다.
이것은 마치 아래에 있는 왼쪽 그림과 비슷합니다. 전체의 평균이 정작 각 개체들의 실제값과 큰 차이가 있는 상태인 것이죠. 이런 문제를 해결하려면 오른쪽 그림처럼 군집 분석을 통해 비슷한 유형끼리 먼저 묶은 후 각 유형별 평균을 구해서 사용해야 합니다.
더 나아가 적절한 군집화 없이 데이터를 이용할 경우 자칫 실제 현상과 반대되는 판단을 할수도 있습니다. 1973년에 U.C. 버클리 대학교는 바로 이런 문제로 인해 구설수에 오른 적이 있습니다. 당시 버클리 대학의 남녀 신입생 합격률은 아래 표와 같습니다.
위 자료에 의하면 남학생에 비해 여학생의 합격률이 상대적으로 낮죠. 그래서 버클리 대학교는 언론 및 대중으로부터 남녀 차별을 하고 있다는 의심을 받게 되었죠. 그런데 학과별로 세분화해서 자료를 집계했더니 아래와 같이 나타났습니다(전체자료 중 인원이 가장 많은 상위 6개 학과만 표시한 자료입니다).
보시다시피 이렇게 학과별로 세분화된 자료를 보면 여학생의 합격률이 남학생의 합격률에 비해 높은 학과가 더 많습니다. 그런데 전체 신입생 기준으로 볼 때는 더 낮은 것처럼 보였던 이유는 학과별 입학 정원이 달랐기 때문입니다. 즉, 여학생들은 남학생들에 비해 입학 정원이 적은 학과에 지원자가 몰리는 바람에 전체 합격률이 낮았던 것이죠.
이렇게 전체 통계량과 여러 그룹을 나눠서 구한 통계량이 서로 반대되는 특성을 갖는 현상을 '심슨의 역설(Simpson's paradox)' 라고 부릅니다. 이런 현상을 피하기 위해서는 전체 데이터를 적절히 분류하여 구한 통계량과 전체 통계량을 같이 비교하는 것이 필요합니다. 그리고 이렇게 전체 데이터를 적절히 몇 개의 그룹으로 분류할 때 군집 분석은 굉장히 유용한 도구입니다.
더 나아가 군집 분석은 개인화와 획일화 사이의 적절한 균형점을 제공해 줄 수 있습니다. 요즘은 소위 말하는 '빅데이터 분석' 이 유행하면서 개인화 서비스가 널리 도입되고 있습니다. 그러나 실제 개개인이 갖고 있는 다양한 특성 및 욕구를 정확히 파악하여 서비스한다는 것은 결코 쉬운 일이 아닙니다. 따라서 각 개체를 따로 분리하여 분석하거나 관리하기 보다는 적정 수준의 유사성을 갖는 개체끼리 그룹을 묶어서 관리하는 것이 더 효율적입니다.
그렇다면 군집 분석을 할 때 어떤 것들이 필요할까요? 만약 우리가 고객들을 비슷한 유형끼리 분류한다면 어떤 기준으로 나누는 것이 적절할까요? 가장 먼저 생각해 볼 수 있는 것이 인구 통계에 기반한 방법입니다. 즉, 성별, 연령, 사는 지역, 소득 수준 등을 조사하여 이에 따라 적절한 범주를 정해 구분하는 것이죠. 구체적으로 예를 들자면 아래와 같이 범주를 나눠볼 수 있을 것입니다.
성별: 남자 / 여자
연령: 10대, 20대, 30대, 40대, ...
사는 지역: 서울 강북/강남, 수도권, 충정지역, 호남지역, 영남지역, ...
소득 수준: 0~3천만원, 3천~5천만원, 5천만~1억원, 1억원 이상
그런데 이렇게 단순히 인구 통계에 기초한 방법을 사용할 경우 많은 문제가 있습니다. 예를 들어 강남역에 있는 아트 박스 사장님이 위와 같은 방식으로 고객 군집을 나눠서 관리한다고 생각해 보죠.
고객의 연령을 10대, 20대, 30대, ... 로 구분할 경우 고등학교 졸업을 앞둔 혹은 막 대학에 입학한 19세 학생은 10살짜리 초등학생과 같은 유형이 되는 반면, 비슷한 성향을 가질 가능성이 높은 20세 학생은 29세인 사회 직장인과 같은 유형으로 묶일 것입니다. 그런데 만약 군집화를 하는 목적이 각 유형별로 기호에 맞는 상품을 개발하려는 목적이었다면 이것은 좋은 군집이 아니겠죠. 따라서 군집 분석을 할 때는 내가 군집화를 수행하는 목적에 맞는 분류 기준을 찾는 것이 중요합니다.
우리는 개체들을 비슷한 유형끼리 묶을 때 '비슷'하다는 것이 무엇인지 정확히 정의할 필요가 있습니다. 혹시 예전에 EBS에서 방영한 '동과 서' 라는 다큐멘터리를 보신 분이 계실지 모르겠습니다. 그 프로그램에서는 동양인과 서양인의 사고 방식이나 정서의 차이에 대한 다양한 사례들을 소개했었는데요, 그 중에서 아래 그림처럼 재질과 형태가 조금씩 다른 세 개의 물체를 제시하고 이들을 비슷한 것끼리 두 그룹으로 묶는다면 어떻게 묶을 것인지 질문하는 실험이 있었습니다. 여러분은 아래 세 개 물체 중에 어떤 두 개를 하나의 그룹으로 묶을 건가요?
해당 프로그램에 의하면 동양인은 재질이 비슷한 물체끼리 묶는 반면, 서양인은 형태가 비슷한 물체끼리 묶는 경향이 강하다고 합니다. 즉, 동양인은 나무 재질의 원통과 사각기둥을 하나로 묶고 서양인은 재질과 상관없이 원통 물체끼리 같은 그룹으로 묶는다는 것이죠.
이것은 그저 심리 실험일 뿐이지만 군집 분석의 관점에서 보자면 유사성을 판단할 때 어떤 속성(재질 혹은 형태)을 이용할 것인지에 대한 문제와 관련이 깊습니다. 그리고 위 사례에서 알 수 있듯이 어떤 속성을 이용할 것인가에 따라 그 결과는 크게 달라지죠.
더 나아가 유사성을 측정할 때 얼마나 객관적이고 정량적으로 측정할 것인지도 중요한 문제입니다. 예를 들어 아래와 같이 파랑색 계열의 개체와 빨간색 계열의 개체들을 묶는다고 할 때 보라색 개체는 어떤 그룹에 묶는 것이 적절할까요? 만약 유사성을 정량적으로 측정하지 않는다면 그룹을 묶을 때마다 (혹은 그룹을 묶는 사람의 주관에 따라) 결과가 달라질 것입니다. 반면 정량적으로 측정할 수 있다면 비록 눈으로 보기에는 애매해 보일지라도 두 그룹의 대표가 되는 개체와 보라색 개체 간의 유사성을 측정한 후 좀 더 값이 큰 쪽으로 묶으면 되기 때문에 일관된 결과를 얻을 수 있겠죠.
정리하자면, 우리는 군집 분석을 할 때 가장 먼저 개체 간의 '유사성'을 어떻게 정의하고 측정할 것인지를 정해야 합니다.
지금까지의 내용을 정리하자면 다음과 같습니다. 먼저 '군집분석(Clusering analysis)'이란 '비슷한 속성을 가진 개체끼리 그룹을 묶을 때 사용하는 데이터 마이닝 기법'을 말합니다.
우리가 군집 분석을 하는 목적은 전체 데이터를 비슷한 유형끼리 적절하게 분류함으로써 좀 더 효율적인 관리 및 분석을 하기 위함입니다. 특히, 전체 데이터를 그대로 분석에 활용할 때는 '평균의 함정'이나 '심슨의 역설'과 같은 문제가 발생할 수 있는데 군집화를 통해 대상을 적절하게 여러 개의 묶음으로 나눔으로써 이런 문제를 해결할 수 있습니다.
그런데 만약 데이터를 여러 군집으로 묶을 때 (인구 통계와 같이) 임의의 기준으로 나누게 되면 오히려 잘못된 의사 결정을 할 수 있습니다. 따라서 좋은 군집 분석을 위해서는 먼저 어떤 개체 간의 유사성을 판단할 때 어떤 항목을 기준으로 어떻게 정량화할 것인지를 먼저 정해야 합니다.
그럼 다음 편에서는 군집 분석을 위해 개체 간의 유사성을 측정하는 다양한 방법들에 대해 소개하겠습니다.