알고리즘 개요
노치트 블로그는 5개 카테고리에서 실제로 11개의 실 구현 알고리즘으로 부정 트래픽을 탐지하고, 1개는 준비 중, 1개는 비활성 상태입니다. 각 알고리즘은 서로 다른 관점에서 데이터를 분석하여 종합적인 판단을 내립니다. 점수에 영향을 주는 알고리즘은 패턴 (35%) · 통계 (35%) · 고급 (30%) 의 세 카테고리로 가중 평균됩니다.
분석 카테고리별 가중치
정상 (CV) · 선형 (R²) · 계단 · 반복 패턴 탐지
EWMA · GARCH(1,1) · CUSUM · 베이지안 변화점 — 시계열 통계 분석
Isolation Forest (per-hour MAD) · 엔트로피 · 시간대별 행동 분석
패턴 분석 (35%)
pattern.cv방문자 수 변화의 상대적 변동성을 측정합니다. 너무 일정한 패턴은 봇 의심.
pattern.r2방문자 증가 곡선이 직선에 너무 잘 맞으면 봇 의심. R² ≥ 0.99 면 비정상.
pattern.step방문자가 계단처럼 규칙적으로 증가하는 패턴 — 정해진 시간마다 정해진 양 봇 의심.
pattern.repeat같은 패턴이 시간대별로 반복되는지 확인 — 매일 같은 시간 같은 방식이면 봇 의심.
통계 분석 (35%)
statistical.ewma최근 데이터에 가중치를 부여해 트렌드를 추적. 시간별 EWMA 가 너무 비슷하면 봇 의심.
statistical.garch방문자 변동성이 시간에 따라 어떻게 변하는지 추적. 변동성마저 일정하면 봇 의심.
statistical.cusum평균에서 벗어난 값들이 한쪽으로 누적되는지 추적. 한 방향 누적이 크면 의심.
statistical.bayesian데이터 특성이 갑자기 바뀌는 시점을 찾는 변화점 탐지. 잦은 변화는 봇 의심.
고급 분석 (30%)
advanced.iforest비정상 데이터 포인트를 빠르게 고립시켜 이상치를 탐지. per-hour MAD 버킷팅 적용.
advanced.entropyShannon 엔트로피로 데이터 무작위성 측정. 너무 깔끔하면 엔트로피 낮음 → 봇 의심.
advanced.hourly심야 시간대 (00~05시) 방문자 비율이 너무 높으면 봇 의심. KST 일주기 분석.
advanced.ksKolmogorov-Smirnov 검정으로 분포 모양 분석. 현재 점수 계산에서 비활성.
집계 정렬 분석 (info)
aggregation.sort_priority패턴 / 통계 / 고급 분석 결과를 가중 평균해 의심 우선순위 산출. 35/35/30 가중.
시계열 보간 분석 (info)
timeseries.interpolate측정이 누락된 비율을 측정하고 다른 알고리즘들의 신뢰도를 깎아 합성 점수가 중립으로 끌려가게 합니다. 데이터를 채우지 않으므로 봇 폭증을 가릴 위험 없음.
종합 점수 계산
최종 점수는 세 가지 분석 카테고리의 가중 평균으로 계산됩니다:
각 카테고리의 점수는 0~100 범위이며, 높을수록 정상적인 트래픽 패턴을 나타냅니다. 개별 알고리즘에서 이상이 감지되면 해당 카테고리의 점수가 감소합니다.