본문 바로가기

AI/Game AI

📉 유저 이탈 예측 모델 만들기 – Part 1: 데이터 설계와 라벨 정의

728x90
반응형

🧭 개요

대부분의 게임은 서비스 초기에 많은 유저가 유입되지만, 일정 기간이 지나면 빠르게 이탈하는 유저가 생기기 시작합니다.

  • 어떤 유저가 왜 떠나는가?
  • 이탈을 예측해서 막을 수는 없을까?
  • 어떤 행동 패턴이 이탈을 예고하는가?

이 질문에 답하기 위해 머신러닝 기반 유저 이탈 예측 모델이 필요합니다.


🎯 실무 목표

유저의 지난 7일간 활동 데이터를 분석하여, 다음 7일 안에 이탈할 가능성이 높은 유저를 예측하는 것

예측에 성공하면:

  • 조기 이탈자에게 보상 푸시
  • 핵심 유저 유지율 향상
  • 마케팅 비용 최적화

🔍 Step 1: 이탈(Churn) 정의

정의 기준 예시 (모바일 MMORPG 기준):

  • 최근 7일간 로그인 기록이 없는 유저
  • OR 최근 7일간 퀘스트/전투/결제 활동이 모두 없음
-- 이탈 여부 계산 SQL 예시
SELECT account_id,
       MAX(login_date) AS last_login,
       CASE
         WHEN MAX(login_date) < DATE_SUB(NOW(), INTERVAL 7 DAY) THEN 1
         ELSE 0
       END AS is_churn
FROM login_log
GROUP BY account_id;
 

이 값을 머신러닝의 **타겟 라벨(Label)**로 사용합니다.


📊 Step 2: 입력 데이터 정의

7일간의 행동 데이터를 기반으로 예측합니다.
입력 피처(Features) 예시:

Feature설명
login_days 최근 7일 중 로그인한 일수
play_time_avg 일 평균 플레이 시간
quest_completed 7일간 완료한 퀘스트 수
battle_count 전투 참여 횟수
party_join_rate 파티 매칭 참여율
gold_change 획득한 골드량 변화
cash_spent 유료 재화 사용량
pvp_win_rate PvP 승률
 

📦 Step 3: 데이터 수집 예시

SQL로 원본 데이터 추출 → Pandas로 처리

import pandas as pd

# 예시 CSV 파일 로딩
df = pd.read_csv("user_behavior_last7days.csv")

# 예시 피처
df.head()
account_id         login_days       play_time_avg     quest_completed       gold_change       cash_spent        is_churn

 

10001 5 120.5 8 3500 0 0
10002 2 40.0 2 100 0 1
 

✅ 이 데이터를 기반으로 모델을 학습시킬 수 있음


🤖 Step 4: 예측 모델 정의

다음 Part 2에서 사용할 기본 분류 모델:

  • 랜덤 포레스트 (Random Forest Classifier)
  • XGBoost
  • 향후 확장: LightGBM, 딥러닝(LSTM 등)

분류 문제 (Binary Classification)

  • Target: is_churn (0 = 유지, 1 = 이탈)
  • Input: 유저 활동 피처들

🛠 실무 적용 팁

상황적용
신규 유저 3일차 행동만 보고 예측 t+3 기준 예측 → 빠른 전환 대응
장기 유저 대상 프리미엄 유저 분류 LTV + 이탈 예측 결합 모델
유료 유저 이탈 예측 cash_spent > 0 필터링 후 별도 예측 모델 운영
클러스터링 결합 먼저 유저를 군집화하고 각 군집별 이탈 예측 모델을 운영
 

📁 확장 과제 제안

  • 로그인 로그 + 퀘스트 로그 + 결제 로그 조합하여 피처 생성
  • datetime → 요일/주말 여부, 시간대 파생 피처 구성
  • PyCaret, AutoML 도구로 모델 자동 탐색

📌 마무리 요약

오늘은 이탈 예측을 위한 전처리와 설계에 집중했습니다.
정확한 라벨 정의 + 고품질 피처 구성이 좋은 예측 모델의 출발점입니다.

728x90
반응형