문서

알고리즘 개요

노치트 블로그는 5개 카테고리에서 실제로 11개의 실 구현 알고리즘으로 부정 트래픽을 탐지하고, 1개는 준비 중, 1개는 비활성 상태입니다. 각 알고리즘은 서로 다른 관점에서 데이터를 분석하여 종합적인 판단을 내립니다. 점수에 영향을 주는 알고리즘은 패턴 (35%) · 통계 (35%) · 고급 (30%) 의 세 카테고리로 가중 평균됩니다.

분석 카테고리별 가중치

35%
35%
30%
패턴 분석(35%)

정상 (CV) · 선형 (R²) · 계단 · 반복 패턴 탐지

통계 분석(35%)

EWMA · GARCH(1,1) · CUSUM · 베이지안 변화점 — 시계열 통계 분석

고급 분석(30%)

Isolation Forest (per-hour MAD) · 엔트로피 · 시간대별 행동 분석


패턴 분석 (35%)

자세히 보기 →

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

방문자 수 변화의 상대적 변동성을 측정합니다. 너무 일정한 패턴은 봇 의심.

선형 패턴 분석Linear Pattern Analysis (R-squared)
실 구현pattern.r2

방문자 증가 곡선이 직선에 너무 잘 맞으면 봇 의심. R² ≥ 0.99 면 비정상.

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

방문자가 계단처럼 규칙적으로 증가하는 패턴 — 정해진 시간마다 정해진 양 봇 의심.

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

같은 패턴이 시간대별로 반복되는지 확인 — 매일 같은 시간 같은 방식이면 봇 의심.

통계 분석 (35%)

자세히 보기 →

지수가중이동평균EWMA (Exponentially Weighted Moving Average)
실 구현statistical.ewma

최근 데이터에 가중치를 부여해 트렌드를 추적. 시간별 EWMA 가 너무 비슷하면 봇 의심.

GARCH(1,1) 변동성 모델GARCH(1,1) Volatility Model
실 구현statistical.garch

방문자 변동성이 시간에 따라 어떻게 변하는지 추적. 변동성마저 일정하면 봇 의심.

누적합 관리도CUSUM (Cumulative Sum Control Chart)
실 구현statistical.cusum

평균에서 벗어난 값들이 한쪽으로 누적되는지 추적. 한 방향 누적이 크면 의심.

베이지안 변화점 탐지Bayesian Change Point Detection
실 구현statistical.bayesian

데이터 특성이 갑자기 바뀌는 시점을 찾는 변화점 탐지. 잦은 변화는 봇 의심.

고급 분석 (30%)

자세히 보기 →

Isolation ForestIsolation Forest
실 구현advanced.iforest

비정상 데이터 포인트를 빠르게 고립시켜 이상치를 탐지. per-hour MAD 버킷팅 적용.

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

Shannon 엔트로피로 데이터 무작위성 측정. 너무 깔끔하면 엔트로피 낮음 → 봇 의심.

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

심야 시간대 (00~05시) 방문자 비율이 너무 높으면 봇 의심. KST 일주기 분석.

분포 분석 (KS 검정)Distribution Analysis (Kolmogorov-Smirnov Test)
비활성advanced.ks

Kolmogorov-Smirnov 검정으로 분포 모양 분석. 현재 점수 계산에서 비활성.

집계 정렬 분석 (info)

자세히 보기 →

집계 정렬 우선 순위 분석Aggregation Sorting Priority Algorithm
실 구현aggregation.sort_priority

패턴 / 통계 / 고급 분석 결과를 가중 평균해 의심 우선순위 산출. 35/35/30 가중.

시계열 보간 분석 (info)

자세히 보기 →

결측 데이터 신뢰도 보정Missing-Data Confidence Damper
실 구현timeseries.interpolate

측정이 누락된 비율을 측정하고 다른 알고리즘들의 신뢰도를 깎아 합성 점수가 중립으로 끌려가게 합니다. 데이터를 채우지 않으므로 봇 폭증을 가릴 위험 없음.


종합 점수 계산

최종 점수는 세 가지 분석 카테고리의 가중 평균으로 계산됩니다:

Scoretotal=0.35×Scorepattern+0.35×Scorestatistical+0.30×Scoreadvanced\text{Score}_{\text{total}} = 0.35 \times \text{Score}_{\text{pattern}} + 0.35 \times \text{Score}_{\text{statistical}} + 0.30 \times \text{Score}_{\text{advanced}}

각 카테고리의 점수는 0~100 범위이며, 높을수록 정상적인 트래픽 패턴을 나타냅니다. 개별 알고리즘에서 이상이 감지되면 해당 카테고리의 점수가 감소합니다.