본문 바로가기
Project

부트캠프 / 개인 파이썬 프로젝트: #4. 머신러닝 모델 선택, 분석, 성능 비교

by yj-data 2025. 9. 8.

이전글:

2025.09.08 - [Project] - 부트캠프 / 개인 파이썬 프로젝트: #3. EDA 및 문제 정의

 

부트캠프 / 개인 파이썬 프로젝트: #3. EDA 및 문제 정의

이전글:2025.08.30 - [Project] - 부트캠프 / 개인 파이썬 프로젝트: #2. 데이터 셋 정하기 & 문제 정의 부트캠프 / 개인 파이썬 프로젝트: #2. 데이터 셋 정하기 & 문제 정의이전 글:2025.08.05 - [Project] - 부트

yj-data.tistory.com


사용자 참여율 예측

앞장에서 EDA 를 하고 문제 정의까지 한 만큼 이제 사용자 참여율 예측을 하러 가보자.

 

ML분석 개요

  • 사용할 ML 기법: 군집화 실행 후 다중분류 진행(목표변수가 3개의 요소로 이루어짐)
    • 이유: 군집화 진행 후 도출된 군집 번호를, 분류 진행 시 하나의 변수로 넣고자 군집화를 먼저 진행함.
  • 군집화 방식: KMeans, DBSCAN 두 가지 진행.
    • 이유: EDA 진행 시, 데이터에서 크게 두드러지는 특성을 보지못해서 거리 기반 KMeans와 밀도기반 DBSCAN 둘다 진행해서 결과 확인을 하기로 함.
    • 진행방식: 주별 총 게임시간('TotalHourPerWeek')의 계산식에 포함된 변수 2개(주별 접속 수, 접속 별 평균 게임 시간)는 제외한 후 전체 요소를 넣어서 진행.
      • * 명목형 변수는 숫자 활을 진행한 이후 숫자화된 명목형 분수가 포함된 열만 포함시켜서 진행을 했고 그 외 플레이 아이디 같은 특성과 관계없는 요소들도 제거하고 진행함
    • 군집에 포함 시킬 요소 개수 정하기(PCA): 현재 9개 요소가 후보여서, 요소를 줄이기 위해 PCA 를 사용함. 9개 요소가 0.1에서 0.11에 이르는 유사한 설명력을 가지고 있어, 9개 요소 모두 유효한 것으로 결론.
      • 유효 변수: 나이, 구매여부, 게이머 레벨, 업적 달성 개수, 성별, 지리적 위치, 장르, 게임 난이도, 주별 총 게임 시간
    • 군집 개수 정하기(k): 엘보우 기법 사용 => k = 5
    • 군집 모델 평가: 실루엣 점수, ARI, NMI 셋 다 사용해 봄(다양하게 사용해보고 싶었음) (일반적으로 각각 0.3, 0.6, 0.5 이상 정도 되면 의미있는 수치임)
      • 결과: KMeans: (0.08, 0.02,0.01), DBSCAN: (0.12, 0.01, 0.00)

엘보우 기법 시각화

  • 분류: 4가지 사용(회귀 1개, 트리 1개, 앙상블 2개)
    • 데이터 셋 분리: train/val/test 로 데이터 셋을 나눈 후 진행해, 과적합을 방지함(70%/15%/15%) 
    • 모델 선택 이유: 균일분포가 많고, 추세가 뚜렷하지 않은 데이터다 보니, 회귀와 트리 및 앙상블 방식을 모두 진행하고, 트리 방식도 여러 방식을 활용해서 차이가 있는지 확인하고자 함.
      • 회귀: 로지스틱 회귀, 트리: 결정트리, 앙상블: 랜덤포레스트(트리 앙상블), CatBoost(명목형 변수가 많은 데이터에 사용)
    • 선택안한 모델과 이유
      • 거리/유사도 기반 분류(K-NN): 군지퍼 진행했을 때 군집의 의미가 없어서 이 부분은 진행하지 않음
      • 확률 기반: 주로 텍스트 분류에 쓰인다고 하여 사용하지 않음
      • svm: 5000 건 내외의 데이터에 많이 사용되는 경우라고 하여 진행하지 않음 (본 데이터는 약 4만건)
    • 결과
      • 정확도(accuracy): 로지스틱 회귀(0.90), 결정트리(0.91), 랜덤포레스트(0.92), CatBoost(0.93)
      • CatBoost의 경우, iteration을 200으로 두었을때보다, 300으로 두었을 때, val 결과와 test 결과의 차이가 줄어들었기 때문에, 300으로 설정.
      • CatBoost의 경우, 도출 결과가 균형/불균형인지 여부에 따라 정확도 외 추가 결과(recall, precision)를 봐야할지 여부를 볼 수 있음. 
        • 결과가 균형있게 나왔으므로, 정확도로 최종 모델 평가를 진행 후, CatBoost로 모델 설정.

 

*하이퍼 파라미터 튜닝은 이번 프로젝트에서는 진행하지 않았음. 이번 프로젝트는 다양한 머신러닝 기법을 활용하고, 응용하고, 비교평가하는데 있었기 때문. 다음에는 튜닝까지 진행해보는 것도 해봐야 할 것.

 

예측 후 사용자 분석

예측을 끝낸 이후, 예측한 결과를 포함해, 목표변수에 해당하는 값(참여율 높음/중간/낮음) 별로 사용자를 묶어 특성을 분석해보았다. 사용자 별로 차이가 보였던 변수는 4가지이며, 얼만큼 차이를 보였는지 정리를 해보면 다음과 같다.

 


머신러닝 포스트는 여기까지!

다음 포스트는 마지막 포스트! '인사이트 제시' 내용입니다😊