본문 바로가기
ML.DL

[리니지 이탈 예측 모형 개발] 데이터 탐색 및 시각화

by 권미정 2023. 9. 25.

1. <리니지>에 대한 이해

리마스터 후 높은 사양을 필요로 해서 노트북으로는 게임을 구동할 수 없고 PC방을 가야 해서, PC 리니지의 핵심 요소와 운영 방식 및 시스템이 가장 흡사한 리니지M을 플레이하려고 했다. 그런데 앱의 문제인지 아이폰과 패드에서 실행 오류가 발생해 제대로 플레이하지 못했다(앱 리뷰에도 대부분 같은 불만 사항이었음). 그래서 리니지 관련 자료, 게임 유튜브, 논문들을 조사했다.

  • 1998년 9월 1일부터 현재까지도 서비스 중인 엔씨소프트의 장수 1세대 MMORPG 온라인 게임이다.
  • 모바일 버전 발매, 리마스터 등을 통해 서비스를 확장하였다.
  • 간단한 마우스와 키보드 단축키 조작으로 플레이할 수 있어 주로 중장년층에게 많은 사랑을 받고 있다.
  MMORPG에서는 게임 내에서 수행한 사용자의 다양한 활동이 모두 로그로 기록된다. 이탈자의 게임 이탈 원인은 이탈자의 성향에 따라 조금씩 다를 것이며 그런 성향은 게임 내에서 어떤 활동을 주로 했는지 게임 활동 로그를 통해 드러날 것이다.
  따라서 게임 사용자들이 게임 내에서 보여주는 활동을 기반으로 행동 유형을 먼저 분류한 후 이 정보를 활용한다면 주로 어떤 유형의 사용자들이 게임에 흥미를 쉽게 잃어버리고 이탈하는지를 좀 더 쉽게 찾을 수 있을 것이다. 더 나아가 이탈자들이 주로 많이 분포하는 유형이 있다면 해당 유형의 특징을 분석하고 이를 통해 이탈을 방지하기 위한 개선안을 찾아 게임에 반영함으로써 장기적으로 사용자의 기대 수명을 높이는데 활용할 수 있다.

참고 논문: MMORPG 사용자 유형 분류를 통한 이탈 예측 모델 생성 및 평가(오세준, 2018.5)

특징 ① : 높은 자유도에 기반하여 현실과 유사한 다양한 활동 가능

  1. 성장 및 경제 활동: 퀘스트, 레벨업, 사냥, 낚시, 교환 및 개인 상점  
  2. 사회 활동: 친구, 혈맹, 파티, 결혼, 전투, 채팅
  3. 그 외 유저 스스로 상호 교류를 통해 다양한 콘텐츠 생성

  • 레벨업
    • 퀘스트, 솔로/파티 사냥, 낚시, 전투를 통해 경험치를 획득해 레벨업(기본 활동 데이터)
    • 24시간 돌아가는 게임이기 때문에 대부분의 유저는 자동사냥을 켜 놓고 아이템, 경험치를 획득한다.
    • 이론상 무한 레벨업이 가능하지만, 55레벨 이후로 경험치 획득량이 줄어 점점 레벨업이 힘들어진다.

특징 ② : 협업 활동 중심의 콘텐츠

  • 혈맹: 리니지의 길드 시스템으로, 군주(길드장)를 중심으로 같은 목적 또는 같은 뜻을 가진 플레이어 캐릭터가 모인 집단을 말한다.
    • 혈맹에 가입하면 60레벨 미만의 캐릭터는 경험치 보너스 효과가 있는 혈맹 버프를 얻을 수 있고, 혈맹 공헌도를 활용하여 혈맹에 유용한 성장 버프 및 아이템을 구매할 수 있다.
    • 공성전: <리니지>가 세계 최초로 도입한 게임 시스템으로, 게임 내의 왕좌를 차지하기 위한 혈맹 단위의 대규모 전투이다.  공성전에서 승리하여 성을 차지한 혈맹은 그 성에 속하는 영지에서 거둔 세금을 보상으로 받는다.
유저 간의 협업과 친목 도모가 게임 스토리 진행에 큰 비중을 차지하는 MMORPG의 경우 게임 이용 중 다양한 유저들의 소셜 행위가 동반되는 장르라고 볼 수 있다. 특히 파티와 같은 짧은 협업 관계가 아닌 비교적 지속 기간이 긴 길드의 경우 실제 레벨을 올리는 데에 도움이 되지 않다 하더라도 유저들로 하여금 게임을 지속하게 한다.

참고 논문: 온라인 게임 내 유저 간 상호작용 분석을 통한 유저 이탈 예측(2018.9)

 

2. 이탈 요인 분석

공식 홈페이지 커뮤니티 자유게시판에서 유저들의 반응을 살펴보았다.

① 과금이 선택이 아닌 필수가 됨(과금 유도)

  • 과금을 통해 아이템 뽑기와 갑옷 및 무기 강화(enchant) 등을 할 수 있는데, 픽업 확률로 인해 최상급의 아이템을 얻기 위해서는 여러 번의 시도와 많은 과금을 필요로 한다.
    • 기본 활동 데이터의 enchant_count로 7레벨 이상 아이템의 강화 시도 횟수를 알 수 있다. 
    • 과금 유저는 결제 데이터의 amount_spent(결제금액)을 통해 알 수 있다.
  • 출시된 지 오래된 게임이기 때문에 고레벨 유저, 과금 유저가 많아 신규 유저가 유입되기에는 진입장벽이 높다. 그렇기 때문에 신규 유저는 과금을 무조건 해야 하는 구조가 되었다.

② 신규 유저 유입의 어려움

  • 고레벨 유저들의 막피, 썰자, 사냥터 통제 등으로 레벨이 낮은 신규 유저가 잔존하기가 어렵다.
  • 막피: 타인이 스트레스를 받는 행위를 즐기기 위해 고의적으로 PK(Player Killing)를 하는 플레이어
    • 경험치를 얻기 위해 새벽에 자동사냥을 켜 놓는 유저들이 많은데 유저가 자리를 비웠을 때 고의적으로 캐릭터를 죽이는 경우
    • 혈맹 공성전에서 성을 뺏겨 화풀이로 캐릭터를 죽이는 경우 등 여러 무분별한 막피가 이루어지고 있다.
    • 이에 대해 엔씨는 막피 또한 게임의 일부분이라고 인정하고 막피 행위를 막지 않아 많은 유저들의 공분을 샀다.
    • 전투 데이터와 혈맹 데이터에 막피를 행한/당한 횟수에 대한 수치 데이터가 들어 있다.

 

3. 데이터셋 살펴보기

① 데이터 구성

  • 온라인 리니지(1998 출시), 즉 리니지 리마스터(2019-03-27) 이전의 데이터이다.
  • 예측 시점에서 과거 28일간의 활동 데이터를 이용하여 모델을 학습한다.
  • 예측 시점 이후 70일 간의 관측을 통해 집계된 실제 고객별 이탈 시점(생존 기간) 및 평균 결제 금액을 예측한다.
    • 64일 동안 이탈하지 않은 유저는 잔존으로 처리(이탈 여부 판단 기간 7일을 감안함)
    • 평균 결제 금액 = 예측 시점 이후 기간 동안 총 결제 금액 / 생존 기간
  • 학습 및 평가 데이터 구성 방식 및 규모
    • Train 데이터: 4만 계정
    • Test 데이터 1&2: 각각 2만 계정

 

② 데이터 수치 의미 알아보기

레이블 데이터 - train_lable.csv

유저의 레이블이다.

변수 설명
acc_id 유저 아이디. 유저 식별 기준이다.
survival_time 생존 기간(일). 1~64의 값을 가지며, 64는 잔존을 의미한다.
amount_spent 일별 평균 결제 금액

 

기본 활동 데이터 - train_activity.csv, test1_activity.csv, test2_activity.csv

캐릭터 식별 기준acc_id, char_id이다. 즉, 다른 캐릭터이더라도 같은 char_id를 가질 수 있다. acc_id와 char_id를 key로 이용해야만 캐릭터 식별이 가능하다.

리니지는 크게 3가지 서버가 있다.

  • 일반 서버: 만렙 제한이 없고, PVP + Non-PVP가 섞인 서버이다.
  • 특화(PVP) 서버 : 다른 서버보다 혈맹 간 전투가 활발한 서버이다. 경험치 획득량 및 아이템 드롭률이 매우 높고, 레벨 만렙 제한이 있다.
  • Non-PVP 서버: NPC를 죽이는 행위가 일어나지 않는 서버이다. 레벨업을 빠르게 할 수 있고, 공성전 등의 이벤트가 지속적이다.

같은 캐릭터이지만 (acc_id와 char_id가 같지만) 다수의 서버에서 기록이 있는 경우가 존재한다. 여러 서버의 캐릭터들이 모여서 즐기는 통합 서버 컨텐츠(ex.월드 공성)는 일반 서버(데포르쥬,켄라우헬 등)가 아닌 특수 서버에서 진행되고, 일반 서버 컨텐츠 활동은 일반 서버에, 통합 서버 컨텐츠 활동은 특수 서버에 기록이 된다. 따라서 동일한 캐릭터의 활동이 일반 서버와 특수 서버 모두에 기록될 수 있다.

 

거래 데이터 - train_trade.csv, test1_trade.csv, test2_trade.csv

캐릭터 간의 일별 거래(교환, 개인 상점) 이력이다.

 

전투(PVP) 데이터 - train_combat.csv, test1_combat.csv, test2_combat.csv

캐릭터의 전투 활동 일일 집계이다.

 

혈맹 데이터 - train_pledge.csv, test1_pledge.csv, test2_pledge.csv

캐릭터가 소속한 혈맹 구성원들의 전투 정보 일일 집계이다.

 

결제 데이터 - train_payment.csv, test1_payment.csv, test2_payment.csv

유저의 일별 결제 금액이다.

변수 설명
day 날짜
acc_id 유저 아이디
amount_spent 결제 금액

 

* 민감 정보 노출을 막기 위해 계정/캐릭터 아이디, 서버 번호와 같은 주요 식별 정보는 마스킹을 수행했다.

* 수치형 데이터는 원본 값을 표준 편차로 나누어 변환한 값이다.

 

4. 데이터 살펴보기

위에서 알아본 이탈 요인 분석과 데이터셋 구조에 따라, 몇 가지를 그래프로 나타내 분석해보았다.

첫 번째는 캐릭터의 레벨별로 이탈/잔존 유저의 수이다. acc_id 별로 char_id를 그룹화한 다음 레이블 데이터와 combat 데이터를 acc_id 기준으로 조인하고, 생존 기간 survival_time이 64면 잔존, 미만이면 이탈로 분류하였다.

이탈은 주로 중간 레벨인 범주 11~16(레벨 55~84)에 많이 나타났고, 고레벨인 유저의 잔존 수가 압도적으로 많은 것으로 보인다.

 

두 번째는 레벨별 과금/비과금 유저의 비율이다. 일별 평균 결제 금액 amount_spent가 0이면 비과금 유저, 0 초과면 과금 유저로 분류했다. 

저레벨 유저는 비과금 비율이 높은 반면, 과금 유저는 고레벨에서 많은 비율이 나타나는 것으로 보여진다. 

 

세 번째는 막피를 당한/행한 유저들의 생존 비율이다. 공식 커뮤니티에서 이탈 요인 분석 시에 막피 때문에 이탈 유저가 많은 것으로 보였기 때문에, 막피 공격을 당한 횟수 random_defender_cnt가 평균 이상인 유저들의 생존율을 세로 누적 막대그래프로 나타냈다.

 

먼저, 평균 이상으로 막피 공격을 당한 유저들은 생존한 비율보다 이탈한 비율이 조금 더 많은 것으로 나타났다.

반대로, 평균 이상으로 막피 공격을 행한 유저들의 경우, 이탈한 비율보다 생존한 비율이 훨씬 많은 것으로 나타났다.

 

 

네 번째는 유저가 속한 혈맹의 혈맹원 수에 따른 생존/이탈 비율이다. 리니지의 특징이자 대표 콘텐츠인 '혈맹'과 같은 길드 시스템은 유저 간의 협업과 친목 도모가 게임 스토리 진행에 큰 비중을 차지하는 MMORPG 게임의 경우 유저들이 길드 때문에 게임을 지속하게 해 준다고 위에서 언급했었다.

그래서 유저 아이디별로 캐릭터 아이디를 그룹화하고 라벨 테이블과 조인해 주었다. 같은 혈맹 아이디를 가진 유저 아이디의 개수를 세어 '혈맹원 수'라는 파생변수를 만들고, 혈맹원 수가 평균 미만인 경우와 이상인 경우로 나누어서 생존/이탈 비율을 나타냈다.

 

혈맹원 수가 평균 미만인 혈맹에 속하는 유저 중엔 이탈한 유저가 조금 더 많았다.

반대로 혈맹원 수가 평균 이상인 혈맹에 속하는 유저 중에는 생존해 있는 유저가 훨씬 많았다. 또한 혈맹원이 평균 이상인 혈맹보다 평균 미만인 혈맹이 2배 이상 많은 것을 알 수 있었다.

 

따라서, 리니지의 특징과 이탈 요인 분석에 따라 캐릭터의 레벨, 과금 여부, 막피를 행한/당한 여부, 속한 혈맹의 규모가 유저의 생존 및 이탈에 영향을 미치는 요인들임을 알 수 있었다.

 

5. 생존 분석이란?

생존 분석은 어떤 사건의 발생 확률을 시간이란 변수와 함께 고려하여, 생존 함수를 추정하는 비모수적 방법인 Kaplan-Meier estimation을 기본으로 하는 통계 분석 및 예측 기법이다. 생존 분석은 관심 이벤트가 시간 t에서 발생하지 않을 확률을 기반으로 하며, 시간 S(t)에 따른 생존 함수는 일반적으로 해당 확률을 나타내는 데 사용된다.

 

참고 논문: 머신러닝 기반 생존분석기법을 활용한 고객 이탈 예측 기술(2023.8)

댓글