스터디노트 5월 15일

Jenny·2024년 5월 16일

샘플프로젝트 : 게임 어뷰즈 유저 이상 탐지하기

문제상황 시나리오 요약

: FPS 게임을 운영하는 도중 버그유저가 증가하고 있다. 게임 플레이 데이터를 활용하여 이러한 버그 의심 유저로 판단되는 유저를 찾고 페널티 정책을 수립하고자 한다.

데이터 보기
ColumnDescription
groupId그룹ID
matchId경기ID
assists서포트횟수
boosts부스트 아이템 사용횟수
damageDealt총 입힌 데미지
DBNOs적을 기절시킨 횟수
headshotKills헤드샷킬수
healsheal 아이템 사용횟수
killPlace적을제압한위치
killPoints적제압포인트
kills적 제압횟수
killstraks가장 많이 적 제압횟수
longestKill멀리서 적 제압횟수
maxPlace최악의배치넘버
numGroups그룹넘버
revives부활횟수
rideDistance이동수단 타고 이동거리
roadKills이동수단으로 적 제압횟수
swimDistance수영한거리
teamKills같은팀 제압횟수
vehicleDestroys자동차 파괴횟수
walkDistance도보이동거리
weaponsAcquired무기 획득횟수
winPoints승점
winPlacePerc승률

Process 01 Data 전처리 및 EDA

Data 전처리

(1) Data shape 확인
(2) Data type 확인
(3) Null값 확인
(4) Outlier 확인

#(1)
print ('df: ', df.shape)
#(2)
df.info()
#(3)
print (df.isnull().sum())
df [ df ['winPlacePerc'].isna() ].head() ##Null값 존재 row 확인
df = df.dropna()
#(4)
df.describe()
Data EDA
#기본정보
for i in ['id', 'groupId', 'matchId']:
	print (f'unique [{i}] count:', df[i].nunique()
#boxplot 통한 kills수와 승률 관계정보 확인
kills = df.copy()
kills['killsCategories'] = pd.cut ( kills['kills'], [-1,0,2,5,10,60], labels=['0_kills', '1-2_kills', '3-5_kills', '6-10_kills', '10+_kills'])
plt.figure (figsize=(15,8))
sns.boxplot (x='killsCategories', y='winPlacePerc', data=kills)
plt.show()
#joint plot 통한 val1, val2 관계 확인
sns.jointplot (x='winPlacePerc', y='headshotKills', data=df, height=10, ratio=3)
plt.show()

Process 02 이상 데이터 정의

  • 가설을 수립하고, 데이터로 검증
    - Automated aiming
    total distance v.s. headshotkill ratio
    • Inhuman kills
      number of heals usage v.s. number of kills
    • 100% Headshot kills
      headshotkill ratio v.s. kill ratio
    • Anomalies in heals
      number of heals usage
    • Without moving & weapons acquired
      total distance v.s. number of weapons acquired

    Process 03 이상 탐지 모델링

  • 가설에 대한 모델링
    - Automated aiming
    total distance <= distance quantile(0.1) v.s. headshotkill ratio >= 0.8
    • Inhuman kills
      heals usage quantile(0.1) v.s. kills over 6 sigma
    • 100% Headshot kills
      headshotkill ratio v.s. kill ratio over 6 sigma
    • Anomalies in heals
      number of heals usage over average
    • Without moving & weapons acquired
      mimimal total distance v.s. number of weapons acquired over average
  • 실제 현업에서 데이터로 분석을 하게되면 데이터 엔지니어와 소통하면서 데이터가 나타내는 상황에 대해 더 잘 이해할 수 있을 것 같다. 데이터로 할 수 있는 분석 방식을 배울 수 있었고 다른 장르의 게임에도 적용해보고 싶다.


_이 글은 제로베이스 데이터 분석 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다._
profile
I like to movie movie

0개의 댓글