Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kaggle
- 자료의요약
- google.cloud
- AE
- AutoEncoder
- 게임 데이터분석
- 게임
- 데이터 분석
- 자기유사도
- 대회
- LTV예측
- LTV
- anomaly
- dacon
- 통계학
- self-similarity
- 게임 이탈 분석
- 게임분석
- 유저이탈
- 기초통계학
- Detection
- 사례
- 데이터분석
- PYTHON
- google.oauth2
- 이상탐지
- 딥러닝
- 봇탐지
- 오토인코더
- anomaly detection
Archives
- Today
- Total
사쿠의 데이터 블로그
self-similarity 게임 봇 탐지를 위한 자기 유사도 분석 본문
논문 링크: https://koreascience.kr/article/JAKO201609562997970.pdf
제목: 자기 유사도를 이용한 MMORPG 게임봇 탐지 시스템
예전에 알게된 논문인데, 실제로 적용해본건 이번이 처음이다.
- 단위 시간동안(=위 사진은 1분) 발생한 로그를 수집한다.
- 수집된 로그가 몇회나 발생했는지 체크하여, 가장 오른쪽 그림과 같이 만든다.
- 특정 유저 A의 시점마다 코사인 유사도를 구하면 된다. --> t-1 시점과 t 시점의 코사인 유사도 구하기
- 그럼, 유저마다 데이터가 N개씩 있었다면 유사도는 N-1 개씩 생성되는데
- 유사도들의 표준편차(delta)를 구하고 다음과 같이 H를 구한다
사실 H는 별거 없다.
유사도들의 표준편차가 작을수록 즉, 비슷한 행동을 반복적으로 하는 유저일수록 1에 가까워진다.
H를 만들지 않아도, 표준편차가 작은 유저들을 뽑아내면 동일한 결과를 얻을 수 있다.
나는 30분 간격, 53가지 로그를 추출해 Matrix를 만들었다. (=위 그림의 가장 오른쪽 그림)
다음으로, 유저별 자기유사도 H를 구한다.
유저별로 접속시간(=rn)이 다를텐데 그것까지 고려해서 H가 가장 높은 유저들을 발라냈다.
결과는 꽤 만족스러웠다.
다음으로, 이렇게 걸러진 유저들이 어떤 특징이 있는지 사후분석을 실시했다.
논문에는 이부분은 없지만 그냥 간단하게 실행했다.
- 각 유저별 단위시간마다 몇개의 행동로그가 발생했는지 확인
--> Bot은 행동을 반복하기 때문에 단위 시간마다 발생하는 로그 종류도 거의 동일했다 - 1번에서 A라는 유저가 단위시간 마다 4가지 행동을 반복했다면, 해당 로그만 가져와서 어떤 행동을 했는지 확인한다.
- 그 행동들 가운데, 다시 반복되는 행동을 찾아 확인한다.
이제, 간단한 방법으로 Bot 계정을 찾아냈고, 어떤 행동들을 했는지 알게되었다.
요즘은 반복행동을 하기 전 단계, 비 정상적인 방법으로 레벨업하는 유저들을 찾고있다.
참고:
1) https://battlecook.github.io/2021/02/10/You-are-a-game-bot-self-similarity.html
'게임 데이터 분석' 카테고리의 다른 글
어림짐작 금지! sample 추출시, 비율을 봐야하는 이유 (0) | 2022.07.20 |
---|---|
유저 이탈 기준 정하기 (0) | 2020.11.20 |
LTV 예측하기 (2) | 2020.05.24 |
Stacking 혹은 Meta모델링 적용하기 (0) | 2020.04.26 |
[R code] 유저 플레이 타임(Play time) 군집화 (6) | 2020.03.26 |