문서

고급 분석

머신러닝 기반의 고급 이상 탐지기법을 사용합니다. Isolation Forest, 엔트로피, 시간대별 행동 분석으로 단순 통계로 잡기 어려운 정교한 조작 패턴을 찾아냅니다.

가중치
30%compositeScore 의 1/3
알고리즘
3ref impl + 1 deprecated
탐지 타입
3종고립 / 엔트로피 / 시간대

고급 분석의 핵심

봇 트래픽은 점점 정교해져 단순 통계로는 잡기 어렵습니다. 고급 분석은 다음과 같은 머신러닝/정보이론 기반 방법을 사용합니다:

  • 고립 기반 — Isolation Forest 가 이상치를 빠르게 분리
  • 정보량 기반 — Shannon 엔트로피가 데이터 무작위성 측정
  • 시간대 기반 — KST 일주기 곡선과 비교해 봇 발화 시간 탐지

Isolation Forest 실 구현advanced.iforest

이상한 값은 쉽게 고립됩니다. 숲 속에서 혼자 떨어져 있는 나무처럼, 비정상적인 데이터 포인트는 다른 데이터와 쉽게 분리됩니다.

동작 원리 (시각화)

수식

s(x,n)=2−E[h(x)]c(n)s(x, n) = 2^{-\frac{E[h(x)]}{c(n)}}

변수

  • s(x,n)s(x, n) — 이상 점수 (0~1, 1에 가까울수록 이상)
  • E[h(x)]E[h(x)] — 평균 경로 길이 (분할 횟수)
  • c(n)c(n) — 정규화 상수 (샘플 크기 기준)

파라미터

  • numTrees = 50 — 생성할 Isolation Tree 수
  • sampleSize = 256 — 각 트리 구축 시 샘플링 크기

판정 기준

조건의미
score ≥ 0.6이상치
score < 0.6정상
전문가용 기술 설명

도메인 구현은 일반 IF 와 달리 per-hour MAD 버킷팅 을 적용 — 시간대별 로 데이터를 분리한 뒤 robust z-score (median + MAD) 로 이상치를 추정. 일주기 패턴이 강한 블로그 트래픽에 일반 IF 보다 정밀.


엔트로피 분석 실 구현advanced.entropy

정보의 무질서도를 측정합니다. 자연스러운 방문자 데이터는 다양하고 예측하기 어렵지만, 조작된 봇 트래픽은 너무 깔끔하고 규칙적이어서 엔트로피가 낮습니다.

동작 원리 (시각화)

수식

H=−∑i=1npilog⁡2(pi)H = -\sum_{i=1}^{n} p_i \log_2(p_i)

변수

  • HH — Shannon 엔트로피 (높을수록 무작위)
  • pip_i — i 번째 상태가 발생할 확률
  • nn — 가능한 상태의 총 개수

파라미터

  • numBins = 10 — 히스토그램 구간 수

판정 기준

조건의미
normalized entropy < 0.3비정상적으로 규칙적 — 봇
normalized entropy ≥ 0.3자연스러운 무작위성
전문가용 기술 설명

delta 시퀀스를 10개의 동일 폭 bucket 으로 히스토그램화한 뒤 Shannon 엔트로피를 정규화 (log⁡2n\log_2 n 으로 나눔). 모든 sample 이 한 bucket 에 몰리면 0, 균등 분포면 1.


시간대별 행동 분석 실 구현advanced.hourly

심야 시간대 (00시~05시) 에 비정상적으로 많은 활동이 있는지 확인합 니다. 한국 사용자의 일반적 활동 패턴은 낮 시간에 집중되며, 새벽에 지속적으로 방문자가 늘어나는 패턴은 자동화된 봇 트래픽일 가능성이 높습니다.

동작 원리 (시각화)

수식

nightRatio=∑h∈{0..5}visitsh∑h=023visitsh\text{nightRatio} = \frac{\sum_{h \in \{0..5\}} \text{visits}_h}{\sum_{h=0}^{23} \text{visits}_h}

변수

  • nightRatio\text{nightRatio} — 전체 방문자 중 심야 비율
  • visitsh\text{visits}_h — h 시의 방문자 수

파라미터

  • 심야 시간대: 00~05 시 (KST 기준)

판정 기준

조건의미
nightRatio > 0.3심야 이상 — 봇 의심
nightRatio ≤ 0.3정상 패턴
전문가용 기술 설명

도메인 구현은 hour-of-day binning + KST 보정 (Asia/Seoul UTC+9) 으로 한국 사용자 일주기 곡선과 비교. 시즌성 (주말/평일) 은 별도 모델링 하지 않고 hour-of-day 만 사용 — 단순함이 장점.


분포 분석 (KS 검정) 비활성advanced.ks

방문자 패턴이 어떤 "모양" 인지 확인합니다. 봇 트래픽은 균일하게 분포되는 경향이 있어, 과거 본 알고리즘이 이를 탐지했습니다.

수식

D=max⁡x∣Fn(x)−F(x)∣D = \max_x |F_n(x) - F(x)|

변수

  • DD — KS 통계량 (경험적 ↔ 이론적 분포의 최대 차이)
  • Fn(x)F_n(x) — 관측 데이터의 누적 분포 함수
  • F(x)F(x) — 비교 대상 분포 (균일/지수/정규)

판정 기준 (과거)

조건의미
uniformScore > 0.7균일 분포 의심
왜 비활성화 되었나요?

KS 검정은 분포 가정에 민감해, 실제 한국 블로그 트래픽처럼 일주기 + viral 변동이 섞인 데이터에서 false positive 가 잦았습니다. 동일 신호를 advanced.entropy + pattern.cv 가 더 안정적으로 잡고 있어 de-list.