이글은 저희 회사 블로그(http://blog.ncsoft.com/?p=28900)에서도 확인하실 수 있습니다.
이번 편에서는 이전에 소개한 방법들을 이용해 게임 고객을 유형별로 세분화한 자료를 어떤 식으로 활용할 수 있는지 활용 사례와 함께 그 동안 미처 다루지 못했던세부적인 내용 몇 가지를 FAQ 형식으로 소개해 드리겠습니다.
‘심슨의 역설 (Simpson’s paradox)’ 이라는 말을 들어보셨나요? 에드워드 심슨이라는 통계학자가 처음 공식적으로 언급한 통계 현상으로, 어떤 집단의 전체 통계량(예를 들어 평균)과 집단을 여러 개 그룹으로 나눠서 구한 통계량이 서로 반대되는 특성을 갖는 현상을 일컫는 말입니다.
이와 관련해 널리 알려진 사례로 U.C. 버클리 대학교의 1973년 남녀 신입생 합격률 자료가 있습니다. 당시 버클리 대학교의 남녀 입학률은 아래 표와 같습니다.
위 자료에 의하면 남학생에 비해 여학생의 합격률이 상대적으로 낮게 나오고 있어 버클리 대학교는 남녀 차별을 하고 있다는 의심을 받게 되었죠. 그런데 학과별로 세분화해서 자료를 집계했더니 아래와 같이 나타났습니다(전체자료 중 인원이 가장 많은 상위 6개 학과만 표시한 자료입니다).
보시다시피 이렇게 학과별로 세분화된 자료를 보면 오히려 여학생의 합격률이 남학생에 비해 전반적으로 높게 나옵니다. 이런 현상이 발생하는 이유는 학과별 입학 정원이 서로 다르기 때문입니다. 즉, 여학생들은 남학생들에 비해 입학 정원이 적은 학과에 지원자가 몰리는 바람에 전체 합격률이 낮아지게 된 것이죠.
이와 같이 어떤 자료를 집계할 때 전체 대상만을 기준으로 해서 통계를 구할 경우 자칫 실제와 다른 엉뚱한 판단을 할 수 있습니다. 따라서 적절히 자료를 분류하여 집계한 결과를 같이 확인해야 합니다.
게임 고객 지표 역시 마찬가지입니다. 게임 서비스를 운영할 때는 다양한 지표를 사용하는데, 이 중에서 대표적인 것 몇 가지만 소개하면 아래와 같습니다.
활동 유저(Active User, AU): 특정 기간 동안 게임에 접속한 총 유저수를 의미합니다. 보통 일단위, 주단위, 월단위로 집계를 하는데 게임의 인기도를 파악하는데 중요하게 사용하는 지표입니다.
동시 접속자(Concurrent Connected User, CCU): 특정 시점에 게임에 접속해 있는 유저수를 의미합니다. 이 지표 역시 AU와 비슷하게 게임의 인기도와 밀접하게 관련된 지표입니다.
유저당 결제금액(Average Revenue Per User, ARPU): 일정 기간 동안 집계된 총 결제 금액을 동일 기간의 AU로 나눈 지표입니다. 말 그대로 한 명의 유저가 얼마의 금액을 사용하는지를 나타내는 수치입니다.
결제 유저당 결제금액 (Average Revenue Per Paid User, ARPPU): 총 결제 금액을 결제를 한번이라도 한 유저수로 나눈 값입니다.
ARPU와 ARPPU를 분리해서 측정하는 이유는 게임의 매출 특성을 좀 더 정확히 파악하기 위함입니다. 가령 ARPU는 낮은데 ARPPU가 매우 높게 나온다면 이 게임은 극소수의 충성도 높은 고객에 의해 대부분의 매출이 발생된다는 뜻입니다. 반대로 ARPU와 ARPPU의 차이가 크지 않다면 전반적으로 많은 수의 유저들이 고르게 매출을 발생시킨다는 의미가 되겠죠. 보통 F2P 기반의모바일 게임이나 캐주얼 게임은 전자의 특성이 강하며 정액제 기반의 PC MMORPG는 후자의 특성이 강합니다.
만약 이런 지표들을 단지 전체 게임 고객에 대해서만 집계할 경우 앞서 소개한 버클리 대학교 사례처럼 실제 현상을 제대로 반영하지 못할 수 있습니다. 따라서 고객을 유형별로 적절히 분류한 후 각 유형별 지표를 따로 집계하여 전체 지표와 함께 살펴봐야 합니다.
예를 들어 예전에 모 게임에서 큰 규모의 업데이트를 한 후 게임 고객 동향을 분석한 적이 있습니다. 이 게임은 전체 게임 고객을 약 십 여가지 유형으로 분류하고 있는데, 크게 보면 게임 활동이 왕성하고 충성도가 높은 ‘진성’ 유형, 게임 활동이 그리 활발하지 않은 ‘라이트’ 유형, 자동 사냥 유저로 의심되는 ‘봇’유형 등이 있죠. 혹시 오해하실까 싶어 첨언하자면, 고객지표 관리를 위해 분류하는 ‘봇’ 유형은 개략적인 추정이기 때문에 설령 ‘봇’ 유형으로 분류되었다 하더라도 바로 제재 등의 직접적인 조치를 하지는 못합니다. 이렇게 소위 ‘악성’ 유저로 분류된 이들 중 보다 직접적인 증거가 수집되어 확실히 ‘봇’으로 판정될 경우에만 제재 등의 조치를 취하게 됩니다.
어쨌든 이 게임의 업데이트 전/후 DAU와 ARPU지표를 확인해 보니 아래와 같이 나왔습니다.
이 수치를 보면 업데이트로 인해 일별 접속자수(DAU)는 크게 늘어난 반면 상대적으로 유저당 결제금액(ARPU)은 큰 하락세를 보이기 때문에 ARPU를 높이기 위한 상품 프로모션을 기획해야겠다고 생각할 수 있습니다.
그런데 이것을 유형별로 세분화한 지표로 확인해 보면 아래와 같습니다.
이 자료를 보면 실제 전체 지표 상에서 크게 늘어난 유저는 ‘라이트’나 ‘봇’ 유형이며 ‘진성’ 유형의 유저 수 변화는 상대적으로 그리 크지 않다는 것을 알 수 있습니다. 또한 매출에 가장 큰 비중을 차지하는 ‘진성’ 고객의 ARPU 는 전체 지표와 달리 상승 추세에 있습니다. 전체 지표 상에서 ARPU가 낮게 집계되는 이유는 결재를 거의 하지 않는 기타 유저의 수가 큰 폭으로 증가했기 때문이죠.
따라서 이렇게 유형별 지표를 보면, ARPU를 높이기 위한 노력보다는 ‘봇’ 유형의 규모를 줄이기 위한 조치를 취하는 한편, ‘라이트’ 유형을 ‘진성’ 유형으로 전환시켜 진성 고객의 수를 늘리기 위한 방안을 모색하는 것이 더 적절해 보입니다.
더 나아가 고객 세분화는 좀 더 고도화된 예측 작업을 할 때도 바탕이 되는 자료로 활용할 수 있습니다. 예를 들어 이탈 분석의 경우를 생각해 보죠. 이탈 분석은 서비스를 이탈한 고객에 대해서 이탈 원인을 찾거나 혹은 현재 활동하는 고객 중 머지 않아 이탈할 것으로 의심되는 고객을 미리 예측하기 위한 분석을 말합니다. 이런 분석을 통해 이탈 원인에 해당하는 컨텐츠를 개선하거나 혹은 이탈 징후가 보이는 고객을 미리 예측하여 이탈을 방지하기 위한 조치를 취합니다.
그런데 이런 이탈 분석을 할 때도 고객을 유형별로 나눠서 분석하는 것이 필요합니다. 오랜 기간 게임을 열심히 해왔던 고객과 짧은 기간만 경험하다 이탈하는 고객의 이탈 원인은 매우 다를 것이기 때문입니다.
심지어 게임에 부정적인 영향을 주는 ‘봇’의 경우 이탈을 방지하는 것이 오히려 게임 서비스에 안 좋기 때문에 이탈 예측 모델 적용 대상에서 제외하는 것이 좋습니다. 따라서 고객 유형을 보고 이탈 방지를 통해 게임 서비스에 긍정적인 효과를 얻을 수 있는 고객을 선별한 후 이들을 대상으로 한 이탈 예측 모델을 만드는 것이 바람직합니다.
예전에 작업했던 모 게임의 경우 이탈 예측 모델을 적용할 때 우선 전체 이용자를 대상으로 장기간에 걸쳐 게임 활동 유형의 변화를 추적한 후 비슷한 변화를 보이는 고객별로 시퀀스 유형을 분류하였습니다. 아래 그림은 이런 과정을 통해 나온 유형 중 일부입니다.
이 후 논의를 거쳐 오랜 기간 게임을 열심히 즐기다가 이탈하는 게임 고객들에 대한 분석을 먼저 수행하자고 결정하고 위 유형 중 ‘장기 진성 유형’ 에 해당하는 고객을 선별하여 이탈 예측 분석을 수행했습니다.
이렇게 특정 유형의 고객을 선별하여 이탈 예측 모델을 만들 경우 해당 유형이 갖고 있는 기대 가치를 좀 더 명확하게 추정할 수 있기 때문에 이탈 방지를 위한 마케팅 비용을 산정하기가 좀 더 수월해지는 장점도 있습니다.
지금까지 군집화 기법을 이용한 게임 고객 모델링에 대해서 소개해 드렸는데 도움이 되셨는지 모르겠네요. 고객 세분화는 데이터 모델링의 가장 기본적인 응용 사례입니다. 적절한 고객 세분화를 통해 다양한 고객의 특성을 이해하고 보다 정확한 고객 지표를 만들 수 있습니다. 또한 유형별 특성에 맞는 이탈 방지나 맞춤형 프로모션과 같은 마케팅 활동을 할 때도 중요하게 활용됩니다.
엔씨소프트에서는 게임 고객을 보다 잘 이해하고 도움이 되는 서비스를 만들기 위해 데이터에 기반한 게임 고객 세분화 모델을 만들어 활용하고 있습니다. 비록 아직까지 부족한 점은 많지만 보다 나은 서비스를 위해 다양한 시도를 하고 있으니 많은 관심 부탁 드립니다.
그 동안 지면관계 상 혹은 글의 흐름 상 생략했던 기술적인 내용 중에서 연재 도중에 받았던 몇 가지 질문을 FAQ 형식으로 정리해 보았습니다.
Q1. 여러 가지 군집 유형을 나누는 방법에 대해 소개해 주셨는데 이런 군집 유형이 변하기도 하나요? 만약 변한다면 시간이 지남에 따라 다시 원래 유형으로 돌아가나요 아니면 바뀐 모습을 유지하게 되나요?
A1. 군집을 나눌 때는 특정 시점에 수집된 게임 고객 데이터를 이용하기 때문에 수집 시점의 고객 특징만을 반영할 수 밖에 없습니다. 시간이 지남에 따라 고객의 유형은 달라지기 때문에 유형 분류는 정기적으로 해야 합니다. 그리고 변화 패턴은 고객마다 다르기 때문에 항상 어떻게 변한다고 단정지을 수 없습니다.
Q2. 여기서 소개한 클러스터링 방법 말고 다른 방법으로는 어떤 것들이 있나요? 그리고 그 중에서 가장 성능이 뛰어난 방법은 뭔가요?
A2. 제가 여기서 소개한 방법은 ‘k 평균 군집화’와 ‘계층 군집화’ 인데요, 이것말고도 굉장히 다양한 알고리즘이 있습니다. 제가 소개해 드린 기법은 그 중에서 가장 보편적으로 사용되는 방법일 뿐입니다. 이런 기법들은 모두 저마다의 장단점을 갖고 있기 때문에 어떤 한가지 가장 뛰어난 방법을 찾기 보다는 각 기법의 특성을 잘 파악하여 클러스터링 대상이 되는 데이터에 적합한 방법을 사용하는 것이 중요합니다.
여기까지가 원론적인 답변이고 실전에서는 일단 아는 방법 다 동원해서 분류해 보고 그 중에 가장 괜찮아 보이는 결과를 취합니다.
Q3. 개인 행동 패턴을 통한 군집화 모델과 소셜 네트워크 분석을 통한 군집화 모델 중 어떤 것이 더 유저를 예측하는데 뛰어난가요?
A3. 어떤 것이 더 낫다기 보다 이 둘을 적절히 혼합하여 사용하는 것이 좋습니다. 2편에서 예로 든 다이아몬드와 석탄의 사례를 다시 생각해 보면, 어떤 물체가 다이아몬드가 되려면 입자들의 얽힘 구조뿐만 아니라 그 입자 자체의 특성도 중요합니다. 이 둘 중에 하나라도 다르면 그 물체는 다이아몬드가 아닌 것이죠. 따라서 어떤 고객의 특성을 정확히 파악하려면 고객의 행동 유형과 더불어 고객이 속한 커뮤니티의 네트워크 유형까지 같이 파악하여 이 둘을 통합한 유형을 만드는 것이 좋습니다.
1편 맨 앞에서 소개했던 MBTI 의 경우를 생각해 보면 MBTI는 각기 독립된 네 가지 기준으로 사람의 성향을 나눈 후 이들을 합쳐 최종 유형을 정합니다. 이와 비슷하게 고객 유형을 나눌 때도 행동 기반의 유형과 커뮤니티 기반의 유형을 각기 분류한 후 이들을 합쳐 최종 유형을 만들면 보다 정확한 고객 특성 파악이 가능하다고 생각합니다.
Q4. 3편에서 예시로 나온 네트워크 시각화 그림들이 흥미로운데 이런 자료는 어떻게 만들 수 있나요?
A4. 블로그에서 소개한 네트워크 그림들은 모두 ‘게피(Gephi, https://gephi.org/)’ 라는 툴을 사용해서 그렸습니다. 이 툴은 누구나 무료로 사용할 수 있는데 다양한 그래프를 그릴 수 있을 뿐만 아니라 기본적인 네트워크 분석기능도 제공해 줍니다. 특히 GUI 기반이기 때문에 기본적인 사용법만 알면 초보자도 쉽게 사용할 수 있는 꽤 괜찮은 툴입니다.