Skip to content

Files

Latest commit

877aa4d · Feb 8, 2023

History

History
97 lines (53 loc) · 5.34 KB

README.md

File metadata and controls

97 lines (53 loc) · 5.34 KB

💙애니메이션 추천 시스템💙

OTT 사용자 이탈율 증가를 막기 위해 머신러닝을 활용하여 애니메이션 추천 시스템을 구현

✔️기획 배경

스크린샷 2023-02-09 오전 12 51 32

→ 사용자 이탈이 OTT 플랫폼 전반적으로 문제가 되고 있음

스크린샷 2023-02-09 오전 12 53 46

→ 그러는 와중에 애니메이션 시장은 꾸준히 성장해 한화 약 31조원의 규모에 도달함

스크린샷 2023-02-09 오전 12 56 07

→ 2018년을 기점으로 OTT를 통한 애니메이션 배급이 비디오 배급 방식을 추월했음

=> 오 그럼 애니메이션 특화 추천 시스템을 마련해서 이탈율 증가를 막아보자!

✔️데이터 셋

스크린샷 2023-02-09 오전 1 05 28

  • 애니메이션 ID를 기준으로 병합하여 사용
  • 100만 row로 샘플링 진행

✔️EDA

데이터 전처리

컬럼 추가

스크린샷 2023-02-09 오전 1 10 33

→ 각 장르별 컬럼 추가

스크린샷 2023-02-09 오전 1 12 24

→ 공개 년도 컬럼 추가 (카디널리티 축소를 위해 10년 단위로 묶음)

스크린샷 2023-02-09 오전 1 15 19

→ 유저들의 평점 평균이 8점인 것을 확인. 8점을 기준으로 추천하는 시스템을 고안하면서 8점 이상의 평점을 부여했는지 여부를 새로운 컬럼으로 추가 (Target)

기타

  • 수치형 데이터의 데이터 타입을 정수 및 실수 타입으로 변환
  • 평점 결측치를 각 score 컬럼에서 얻은 정보로 채움

가설 분석

  1. 원작의 형태에 따라 유저들의 평점 평균이 다르다. (O)

image

→ 원작이 소설인 경우 평균적으로 7.75점을 주는 반면, 라디오가 원작인 경우 5.75점으로 상대적으로 2점이나 차이가 나는 것을 확인

  1. 애니메이션 타입에 따라 유저들의 평점 평균이 다르다. (O)

스크린샷 2023-02-09 오전 1 23 28

→ 무비 타입이 7.6점으로 가장 높고, 뮤직 타입이 6.5점으로 가장 낮은 점수를 보임. 영화와 티비 프로그램처럼 익숙한 타입과 그렇지 않은 타입간의 격차도 확인됨

✔️모델링

  • 추천 여부를 8점을 기준으로 나눌 것이므로 이진분류모델
  • 기준 모델은 최빈 클래스로 지정

스크린샷 2023-02-09 오전 1 28 20

→ 기준 모델의 학습 데이터에 대한 정확도는 0.54

  1. XGBoost

스크린샷 2023-02-09 오전 1 30 19

→ 검증 결과 정확도 0.78로 기준 모델의 베이스라인 통과

  1. LightGBM

스크린샷 2023-02-09 오전 1 30 27

→ 검증 결과 정확도 0.78로 기준 모델의 베이스라인 통과

=> 근소하지만 XGBoost가 더 좋은 성능을 보였기 때문에 최종 모델은 XGBoost로 결정

image

→ 최종적으로 교차검증을 통해 평가 데이터의 일반화 성능을 확인. 정확도 0.78로 측정됨

✔️모델 해석

순열 중요도

스크린샷 2023-02-09 오전 1 36 12

→ 각 유저당 평가한 모든 점수들의 평균값이 가장 큰 영향을 줌


Python EDA Feature Engineering Data Manipulation Data Visualization XGBoost LightGBM Permutation Importance PDP