문서

패턴 분석

트래픽 데이터의 시각적 패턴 을 분석하여 봇 트래픽의 특징적인 규칙성을 식별합니다. 자연스러운 트래픽은 무작위적인 변동을 보이지만, 봇 트래픽은 기계적인 규칙성을 나타냅니다.

가중치
35%compositeScore 의 1/3 강
알고리즘
4모두 ref impl
탐지 타입
4종정상 / 선형 / 계단 / 반복

패턴 분석의 핵심

실제 사용자는 각자 다른 생활 패턴을 가지고 있어 방문 시간과 행동이 다양합니다. 반면, 봇은 프로그래밍된 규칙에 따라 움직이기 때문에 다음 과 같은 특징을 보입니다:

사람 트래픽

시간대 곡선 + 분단위 노이즈 + 자연스러운 변동성. CV ≥ 0.2 / R² < 0.99 / 시간대 반복성 낮음.

봇 트래픽

선형 증가 / 계단식 / 반복 패턴 / 너무 일정한 분산. 4가지 알고리즘 중 하나 이상이 신호를 잡는다.

정상 패턴 분석 실 구현pattern.cv

방문자 수 변화가 얼마나 자연스러운지를 측정합니다. 정상적인 블로그 는 방문자 수가 자연스럽게 오르내리지만, 조작된 트래픽은 너무 규칙적이 거나 일정한 양상을 보입니다. 마치 심장 박동처럼 자연스러운 변화가 있어야 건강한 것처럼, 트래픽도 적당한 변동이 있어야 자연스럽습니다.

동작 원리 (시각화)

수식

CV=σμCV = \frac{\sigma}{\mu}

변수

  • CVCV — 변동계수. 0.2 이상이면 정상, 미만이면 비정상적으로 일정한 패턴
  • σ\sigma — 표준편차. 데이터가 평균에서 얼마나 흩어져 있는지
  • μ\mu — 평균. 데이터의 중심값

판정 기준

조건의미
CV ≥ 0.2정상적인 변동성
CV < 0.2비정상적으로 일정함
전문가용 기술 설명

변동계수 (Coefficient of Variation) 는 표준편차를 평균으로 나눈 값으로, 서로 다른 스케일의 데이터를 동일한 척도로 비교할 수 있게 해줍니다. 방문자 트래픽처럼 시간에 따라 절대값이 크게 변하는 데이터에 적합한 지표입니다.

도메인 코드: pattern.cv (domain-nocheat-analyzer)


선형 패턴 분석 실 구현pattern.r2

방문자 증가가 직선처럼 너무 규칙적인지 확인합니다. 자연스러운 블로그 성장은 들쭉날쭉하게 증가하지만, 봇 트래픽은 마치 시계처럼 정확하게 일정한 속도로 증가하는 경향이 있습니다.

동작 원리 (시각화)

수식

R2=1−SSresSStot=1−∑(yi−y^i)2∑(yi−yˉ)2R^2 = 1 - \frac{SS_{res}}{SS_{tot}} = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}

변수

  • R2R^2 — 결정계수 (0~1). 1에 가까울수록 완벽한 직선
  • yiy_i — 실제값 (i번째 시점의 방문자 수)
  • y^i\hat{y}_i — 회귀선에서의 예측값
  • yˉ\bar{y} — 방문자 수 평균
  • SSresSS_{res} — 잔차제곱합
  • SStotSS_{tot} — 총제곱합

판정 기준

조건의미
R² ≥ 0.99비정상적 선형 패턴
R² < 0.99자연스러운 변동 포함
전문가용 기술 설명

결정계수는 단순 선형 회귀의 적합도 지표로, 데이터가 직선 모형에 얼마나 잘 맞는지를 01 사이 값으로 표현합니다. 사람이 만든 블로그 성장은 보통 R2R^2 가 0.60.9 정도이고, 봇이 일정한 양을 추가하는 매크로는 0.99 이상 의 R² 를 보이는 경향이 있습니다.


계단식 패턴 분석 실 구현pattern.step

방문자 수가 계단처럼 갑자기 올라가고 멈추는 패턴을 찾습니다. 마치 정해진 시간에 정해진 양만큼 방문자가 추가되는 것처럼 보이면 의심스 럽습니다.

동작 원리 (시각화)

수식

stepConsistency=11+σstepstepˉ\text{stepConsistency} = \frac{1}{1 + \frac{\sigma_{step}}{\bar{step}}}

변수

  • stepConsistency\text{stepConsistency} — 계단 일관성 (0~1, 1에 가까울수록 규칙적)
  • σstep\sigma_{step} — 계단 높이의 표준편차
  • stepˉ\bar{step} — 평균 계단 크기

파라미터

  • minStepSize = 5 — 최소 계단 크기 (이하 무시)
  • flatThreshold = 3 — 평탄 구간 판정 기준

판정 기준

조건의미
consistency ≥ 0.8의심 패턴
consistency < 0.8자연스러운 변동
전문가용 기술 설명

급격한 증가 후 평탄 구간이 반복되는 패턴을 탐지합니다. 도메인 구현은 delta 시퀀스 위에 robust z-score (median + MAD) 를 돌려 step 후보를 추출한 뒤, 추출된 step 의 높이/간격 일관성을 측정합니다.


반복 패턴 분석 실 구현pattern.repeat

같은 패턴이 시간별로 반복되는지 확인합니다. 매일 같은 시간대에 같은 방식으로 방문자가 증가한다면 봇일 가능성이 높습니다.

동작 원리 (시각화)

수식

ρ=∑(xi−xˉ)(yi−yˉ)∑(xi−xˉ)2∑(yi−yˉ)2\rho = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i - \bar{x})^2 \sum(y_i - \bar{y})^2}}

변수

  • ρ\rho — 상관계수 (-1~1, 1에 가까울수록 동일 패턴 반복)
  • xi,yix_i, y_i — 비교할 두 시간 구간의 데이터
  • xˉ,yˉ\bar{x}, \bar{y} — 각 구간의 평균값

파라미터

  • chunkSize = 12 — 비교 단위 크기 (5분 간격 데이터의 1시간 구간)

판정 기준

조건의미
ρ ≥ 0.8반복 패턴 — 봇 의심
ρ < 0.8자연스러운 차이
전문가용 기술 설명

도메인 구현은 ACF (Autocorrelation Function) 의 lag 1~3 자기상관을 직접 계산해 반복 신호를 찾습니다. 사용자에게 노출되는 본 페이지는 "청크 간 상관계수" 라는 더 직관적 표현으로 같은 개념을 설명.


패턴 분석 점수 계산

패턴 분석 점수는 정상성 점수를 기본으로 하고, 의심 패턴이 발견될 때마다 페널티를 적용합니다:

항목가중치/페널티
정상성 기본 점수× 0.4
선형 패턴 페널티최대 -50점
계단 패턴 페널티최대 -30점
반복 패턴 페널티최대 -40점