2019 빅콘테스트

작년 2018 빅콘테스트의 큰 성공에 힘입어 금년에도 엔씨소프트가 2019 빅콘테스트를 참가하게 되었습니다. 올해 7번째를 맞는 빅콘테스트는 공공 데이터 및 기업이 보유하고 있는 실제 데이터를 제공하여 참가자들이 다양한 분야의 데이터를 다뤄보고, 분석 능력을 마음껏 뽐낼 수 있도록 하는 국내 최대 규모의 데이터 분석 경진대회입니다. 매년 700여 이상의 팀이 참가해 왔으며 작년에는 무려 1100여 이상의 팀이 참가하였고, 우수한 성적을 거둔 팀은 상금 및 채용 우대 등의 혜택을 제공받았습니다. (저 또한 작년에 챔피언 리그에서 장관상을 수상하여 이를 계기로 엔씨소프트에 입사하였고, 2019 빅콘테스트 문제 설계에 참여하게 되었습니다.) 올해 대회는 역대 최고(총 6,500만원으로 작년보다 2배 이상!)의 상금 규모를 자랑합니다. 엔씨소프트는 대표작 리니지의 게임 로그 데이터를 활용한 잔존가치를 고려한 고객 이탈 예측 문제(챔피언 리그)를 출제하게 되었습니다. 자세한 대회 내용은 아래 그림과 2019 빅콘테스트 공식 홈페이지를 참조하시기 바랍니다.


[그림 1] 2019 빅콘테스트 대회 개요


2019년 7월 17일 신한 카드 본사 강당에서 개최된 “2019 빅콘테스트 문제설명회”를 진행했습니다. 이 자리에는 약 500명 정도의 대회 참가 희망자 및 참여 기업 관계자 분들께서 참석하였습니다. 예상보다 많은 분들이 참석하셔서 좌석이 부족하였는데도 불구하고 바닥에 앉아 설명을 듣는 열정과 관심을 보여주셨습니다. 이 글에서는 피치 못할 사유로 설명회에 참석하지 못하셨거나, 설명회를 참석하셨지만 문제에 대한 궁금증이 해소되지 않으셨을 분들을 위해 저희 대회 문제에 대한 보충 설명을 드리고자 합니다.


[그림 2] 빅콘테스트 설명회 현장


대회 주제

저희가 올해 주관하는 경진 대회 문제 주제는 ‘리니지 고객 활동 데이터를 활용하여 잔존 가치를 고려한 이탈 예측 모형 개발’ 입니다. 예측 모형의 목표는 28일 간 게임 활동 데이터를 이용하여 고객이 ‘향후 언제 이탈할 것인지 (생존 기간)’ 와 그 때까지 ‘어느 정도의 매출을 발생시킬 것인지 (일별 평균 결제 금액)’ 를 예측하는 것입니다.


[그림 3] 이탈 예측 대회 제공 데이터 및 목표 도식


이를 위해 총 8만 명(학습 및 평가 데이터 셋 포함)의 게임 활동 정보 및 다른 유저와의 사회 관계 정보, 결제 이력 정보 등을 제공하였습니다. 제공 데이터에 대한 개략적인 항목은 아래와 같으며 상세 스키마는 2019 빅콘테스트 공식 홈페이지 자료를 참고하시기 바랍니다.


  • 종속 변수

    • survival_time: 각 고객이 예측 시점부터 이탈할 때까지 걸린 기간 (단위: 일). 1 ~ 64 사이의 값을 가지며, 64는 잔존을 의미함.
    • amount_spent: 각 고객의 일별 평균 결제 금액
  • 독립 변수

    • 기본 활동 데이터: 각 캐릭터의 일별 주요 활동량 (플레이시간, 경험치 획득량, 사망/부활 횟수 등) 집계
    • 거래 데이터: 캐릭터 간의 일별 거래(교환, 개인 상점) 이력 정보
    • 전투 활동 데이터: 각 캐릭터의 일별 전투(PvP) 활동량 집계
    • 혈맹 데이터: 각 캐릭터가 소속된 혈맹 구성원들의 전투 관련 정보 집계
    • 결제 데이터: 각 유저의 과거 28일간의 일별 결제 금액 집계

참고로 위 데이터는 민감 정보 노출을 막기 위해 개인 식별자 마스킹 및 변환 작업을 거친 후 제공되었습니다.


문제 설계 의도 및 특징

이번 대회에서 저희는 현업에서 이탈 예측 모형을 서비스에 적용할 때 고려해야 하는 점들을 문제에 최대한 반영하고자 하였습니다. 매 순간마다 새로운 데이터가 생성되어 분석의 대상이 되는 현업에서의 이탈 예측 분석은, 학업의 일환으로 또는 기타 경진대회 등을 통해 접하게 되는 일반적인 이탈 예측 분석과는 두 가지 큰 차이점이 있습니다.


1) 시간의 변화에 강건한 모델 구축

첫 번째는 시간에 따른 데이터 특성의 변화입니다. 시간의 흐름에 따라 대상들의 특성들이 크게 변하지 않는 다른 분야와 달리, 온라인 게임은 컨텐츠 업데이트, 게임 밸런스 변화 및 비즈니스 모델 변경 등의 다양한 변화가 빈번하게 발생합니다. 이런 변화를 고려하지 않는 경우 예측 모형의 효용성이 크게 떨어집니다. 따라서 현업에서는 특성의 변화를 모니터링하여 주기적으로 모델을 개선하는 작업이 중요시 되는데, 그렇다고 변화가 있을 때 마다 모델을 개발 할 수는 없습니다. 신규 클래스 생성, 확장팩 출시 등의 대규모 업데이트에 따른 모델 개선은 피할 수 없겠지만, 변화가 발생 할 때 마다 새로운 모델을 개발하는 것은 효율성이 매우 떨어지게 됩니다. (극단적인 예로 주초에는 정상적으로 작동하던 모델이 주말에는 작동하지 않는다면, 1주에 2개의 모델을 생성해야 합니다. 1주에 2개의 모델이라니… 분석가는 웁니다.)

결국 현업에서는 시간에 따른 패턴 변화를 고려하여 변화에 강건한 모델을 구축하는 것이 필요합니다. 이런 모델의 강건성을 평가 할 수 있도록, 금년 대회에서는 평가 데이터 세트와 학습 데이터 세트의 시점을 다르게 설정 하였고, 각기 다른 시점을 나타내는 두 개의 평가 데이터 세트를 준비하였습니다 (그림 4 참조). 즉, A 시점의 데이터로 학습하더라도 B와 C시점에서 좋은 성능을 갖는 모형을 만드는 것이 중요합니다.


[그림 4] 모델의 강건성 평가를 위해 학습/테스트 세트 간의 시간 간격을 다르게 구성하였음


2) 잔존 가치를 고려한 모델 구축

두 번째는 고객의 잔존가치입니다. 먼저 잔존가치란 무엇일까요? 잔존 가치란 말 그대로 이탈 징후를 보이는 고객을 잔존으로 전환함으로써 창출되는 가치입니다. 실제 기업에서 시행하는 이탈 예측의 궁극적인 목표는 단순히 고객의 이탈을 정확히 예측하는 것이 아니라 예측을 통해 이탈 징후를 보이는 고객의 이탈을 방지하여 고객의 잔존 가치를 보존하는 것입니다. 이를 위해선 단지 이탈 위험 군을 잘 포착하는 것이 아니라 1) 어떤 고객의 잔존 가치가 높은지 2) 이탈 방지를 위해 지급할 적절한 인센티브는 얼마인지 3) 적절한 인센티브 제공 시기는 언제인지를 정하는 것이 중요합니다. 따라서 예측 모형을 평가할 때 일반적으로 많이 사용하는 RMSE나 F1-스코어 등의 평가 방식 대신 아래와 같은 기대 이익 평가식을 사용하였습니다.


기대 이익 = 전환율 x (추가생존기간 x 일별평균결제금액) - 인센티브


먼저, 이탈 방지를 위해 고객에게 제공할 인센티브(기업의 입장에서는 비용)는 고객이 계속 게임을 플레이 함으로써 얻을 수 있는 고객의 잔존가치를 바탕으로 산정됩니다. 이탈을 마음 먹은 고객의 입장에서는 제공되는 인센티브가 마음에 든다면 (취향저격) 잔존하겠지만, 마음에 들지 않는다면 그대로 이탈을 하겠지요.

이런 특성을 기대 이익 계산에 반영하기 위해 일별 평균 결제 금액과 제공하는 인센티브간의 관계를 이용하여 고객 개별의 전환율을 정의하였습니다. 만약 고객의 일별 평균 결제 금액을 과소 추정하여 너무 낮은 인센티브를 제공한다면 (예를 들어 100만원을 결제한 고객에게 1000원짜리 상품권을 추가 지급하겠다고 하는 경우) 고객은 인센티브에 크게 관심을 보이지 않아 이탈하게 될 것이고 결국 비용만 낭비 됩니다.

반대로 고객의 일별 평균 결제 금액을 과다 추정하여 너무 높은 인센티브를 제공한다면(예를 들어 1000원을 과금하는 고객에게 10만원어치 상당의 아이템을 제공하는 경우) 고객의 이탈은 방지할 수 있겠지만 과도한 비용 때문에 기업은 결과적으로 손해를 보게 됩니다.

따라서 고객의 일별 평균 결제 금액을 정확하게 예측하여 고객별로 적절한 인센티브 비용을 산정하는 것이 이탈 방지를 통한 기대이익을 최대화하는 방법이 됩니다. 물론 고객의 잔존 가치를 정확히 산정하려면 일별 결제 금액 외에도 해당 유저의 게임 내 활동이나 사회적 영향력 등 다양한 요소를 고려해야 합니다. 하지만 이와 같은 요소들을 정량적으로 측정하기는 어렵기 때문에 (어려워요, 진짜 ㅠㅠ), 이번 대회에서는 일별 평균 결제 금액만을 전환율의 기준으로 산정 하였습니다.


[그림 5] 일별평균결제금액 추정치와 전환율 사이의 관계 그래프 (R: 일별평균결제금액 실측치, R̂: 일별평균결제금액 추정치)


한편 인센티브를 제공할 때는 규모뿐만 아니라 제공할 시기 또한 적절히 선정되어야 합니다. 만약 고객의 이탈 시점을 잘못 예측하여 전혀 이탈할 마음이 없는 시기나 이미 이탈하여 게임을 삭제한 뒤 인센티브를 제공한다면, 잔존 효과를 충분히 얻을 수 없을 것입니다. 따라서 인센티브 제공 시기에 따른 효과를 산정하기 위해 추가 생존 기간을 평가에 반영했습니다. 즉, 고객의 생존 기간을 정확하게 예측한다면, 고객의 추가 생존 기간은 최대가 되지만, 생존 기간을 부정확하게 예측한다면 고객의 추가 생존 기간은 감소하여 고객으로부터 얻을 수 있는 전체 잔존 가치는 감소하는 것이죠.


[그림 6] 생존기간 예측과 추가 생존 기간 관계 그래프 (t: 생존기간 실측치, t̂: 생존기간 추정치)


이를 정리하면 이탈할 것으로 예상되는 고객의 생존 기간(인센티브 제공 시점)과 일별 평균 결제 금액(인센티브의 규모)을 정확하게 예측하여 적절한 인센티브를 적절한 시기에 제공한다면, 이탈 방지를 통한 기대이익이 최대가 되도록 평가식을 정의하였습니다. (참고로 참가자 분들의 편의를 위해 개발한 예측 모형의 성능을 자체적으로 평가하실 수 있는 모듈을 데이터와 함께 제공하였습니다.)

사실 이탈 예측 분석을 위해서는 분석 대상 선정, 분석 기간 선정, 이탈 정의, 데이터 구성 등 수많은 사전 작업들이 요구되며, 기대 이익의 계산에는 앞서 언급한 것들 이외에도 추가적인 고려 사항이 필요합니다. 2019 빅콘테스트는 참가자 분들의 편의를 위해 상당 부분의 사전작업이 적용된 데이터를 제공하였으며, 문제에 대한 직관적인 이해 및 난이도 조정을 위해 여러 가정들을 설정하였습니다. 따라서 이번 빅콘테스트는 참가자 여러분에게 현업과 비슷한 조건 및 상황에서 이탈 예측 분석을 경험해 볼 수 있는 좋은 기회가 될 것이라 생각합니다.




2019 빅콘테스트의 챔피언리그에 참가하시는 분들을 위한 몇 가지 팁을 드리고자 합니다.

  • 학교, 교과서 또는 온라인 수업의 일환으로 제공되는 비교적 작은 크기의 데이터에 비해 이번 대회에서 제공되는 데이터는 크기가 큰 편입니다. 시간 관리를 위해 작업 중간 데이터나 모델을 저장하면서 진행하시는 것을 추천 드립니다.
  • 예측 모형의 최종 성능은 평가 데이터1, 평가 데이터2 유저의 기대이익의 총합으로 평가합니다.
  • 최대한 있는 그대로의 게임 데이터를 경험해 보실 수 있도록, 특정 유저군만 추출하는 등의 편향(Bias) 요소들은 최대한 배제하였습니다.
  • 생존 기간과 일별 평균 결제 금액은 연속형 데이터로 분류되지만, 크게 보면 이탈(생존 기간 < 64)과 비이탈(생존 기간 = 64) 그리고 과금(일별 평균 결제 금액 > 0)과 무과금(일별 평균 결제 금액 = 0)으로 구분이 가능합니다. 따라서 이탈자/비이탈자, 과금/무과금으로 먼저 예측한 뒤 이탈자 및 과금 고객의 생존 기간과 일별 평균 결제 금액을 예측하는 등, 다양한 방식으로의 접근이 가능합니다.
  • 생존 기간은 생존 일(1, 2, …, 64)의 형식이며 일별 평균 결제 금액은 음수가 나올 수 없습니다. 예측 결과 제출 및 자율 평가 진행 시 이점을 잘 참고하시길 바랍니다.
  • 자율 평가는 전체 평가 데이터의 20%만 사용하기 때문에, 자율 평가 점수에 의한 과적합을 염두에 두셔야 합니다. 또한 자율 평가 점수는 서류 및 본선 심사에 전혀 반영되지 않습니다.
  • 재현성 평가는 작년보다 강화하여 진행할 예정입니다. 꼭 안내 가이드 대로 작성하여 제출 부탁 드립니다.
  • 엔씨소프트의 2019 빅콘테스트 담당자들은 참가자 여러분들의 질문을 환영합니다.


2019 빅콘테스트는 다른 곳에서는 쉽게 접하기 힘든 게임 로그 데이터를 이용하여 실제 현업에서 수행할 수 있는 분석을 진행할 수 있는 기회이자 타 분석 경진대회와는 차별화된 상금, 취업 혜택까지 부여되는 국내 최대 규모의 데이터 분석 경진대회입니다. 많은 관심과 참여 부탁 드리며, 모든 리그 참가자 분들의 건승을 빕니다.