본문으로 건너뛰기

A.3. 이상 탐지는 이렇게 판정한다

Z-Score·IQR·Isolation Forest·RCF 와 앙상블

"평소와 다르다" 를 무엇으로 판정하는지 다룹니다.

네 가지 한눈에

방법기준분포 가정잘 잡는 것
Z-Score평균 · 표준편차필요 (종 모양)뚜렷하게 벗어난 값
IQR중앙값 · 사분위수불필요치우친 데이터에서 벗어난 값
Isolation Forest얼마나 빨리 혼자 남나불필요여러 값이 얽힌 이상
RCF넣고 뺄 때 구조 변화량불필요계속 들어오는 데이터에서 벗어난 값

기본은 Z-Score 입니다.

1. Z-Score

무엇을 하나

평균에서 표준편차 몇 배만큼 떨어졌는지 셉니다.

Z = (값 − 평균) ÷ 표준편차

표준편차라는 것

값들이 평균에서 얼마나 퍼져 있는지를 나타내는 숫자입니다.

표준편차 — 평균이 같아도 퍼진 정도가 다르다

같은 "평균에서 10 벗어남" 이라도 A 에서는 큰일이고 B 에서는 흔한 일입니다. Z-Score 는 그 지표가 평소에 퍼져 있는 정도를 기준으로 재기 때문에 지표마다 다른 잣대를 자동으로 씁니다.

판정 기준

기본은 |Z| > 3 입니다.

Z-Score 의 판정 기준

정상 데이터의 99.7% 가 ±3 안에 들어옵니다. 그 밖이면 "평소와 다르다" 고 봅니다.

응답시간으로 보면

평소 응답시간 평균 200ms, 표준편차 20ms

210ms → Z = +0.5 정상
250ms → Z = +2.5 경계 — 확인해 볼 만함
320ms → Z = +6.0 이상

한계

  • 종 모양 분포를 가정합니다. 응답시간처럼 한쪽으로 긴 꼬리를 가진 지표에는 덜 맞습니다
  • 이상치가 많으면 평균 자체가 그쪽으로 이동합니다. 크게 벗어난 값이 평균을 올려 놓으면 정작 그 값이 정상으로 보입니다

두 번째가 실무에서 자주 걸립니다. 장애가 길게 이어진 구간을 통째로 넣고 돌리면 장애가 "평소" 가 되어 버립니다.

2. IQR (사분위 범위)

무엇을 하나

값을 줄 세워 4등분한 뒤, 가운데 절반의 범위를 기준으로 삼습니다.

IQR — 가운데 50% 를 기준으로 삼는다

경계선 계산

하한 = Q1 − 1.5 × IQR = 35 − 52.5 = −17.5
상한 = Q3 + 1.5 × IQR = 70 + 52.5 = 122.5

이 밖에 있으면 이상치입니다.

왜 1.5 인가

통계학자 존 터키(John Tukey) 가 정한 값입니다. 정상 데이터의 약 99.3% 가 이 안에 들어옵니다. 민감도로 조절할 수 있습니다.

Z-Score 와 무엇이 다른가

Z-ScoreIQR
기준평균 · 표준편차중앙값 · 사분위수
벗어난 값의 영향기준 자체가 이동한다거의 이동하지 않는다
분포 가정종 모양 필요없음
최소 데이터3개더 필요

중앙값은 몇 개가 크게 벗어나도 잘 움직이지 않습니다. 그래서 이미 이상치가 섞인 구간이나 한쪽으로 치우친 지표에는 IQR 이 낫습니다.

3. Isolation Forest

무엇을 하나

값들을 무작위로 갈라 나가면서, 각 값이 몇 번 만에 혼자 남는지 셉니다.

Isolation Forest — 빨리 혼자 남으면 이상치

빨리 혼자 남으면 이상치입니다.

동작 순서

① 나무 하나 만들기 무작위 지점에서 값을 둘로 가르기를 반복
② 숲 만들기 이런 나무를 100그루 (매번 다른 무작위 기준)
③ 경로 길이 각 값이 혼자 남기까지 걸린 평균 횟수
④ 점수 매기기 빨리 남을수록 높은 점수 (0~1)

100그루를 만드는 이유는 한 번의 무작위 결과에 좌우되지 않기 위해서입니다. 운 나쁘게 정상 값이 빨리 갈라질 수도 있지만, 100번 평균 내면 그 영향이 없어집니다.

민감도와 잡히는 양

민감도대략 몇 %를 이상으로 보나쓰는 상황
1.0 (높음)약 30%의심스러운 것은 다 보겠다
3.0 (중간)약 5%균형
5.0 (낮음)약 1%확실한 것만

미리 "몇 %가 이상" 이라고 정해 놓고 그만큼 잡는 방식입니다. 정상만 있는 구간에 돌려도 뭔가는 잡힌다는 뜻이므로, 잡혔다고 곧 문제인 것은 아닙니다.

다른 둘과 무엇이 다른가

Z-Score · IQRIsolation Forest
방식통계 공식기계학습
분포 가정Z-Score 는 필요불필요
여러 지표 동시어려움가능

"CPU 도 높고 메모리도 높고 응답시간도 긴" 조합처럼 하나씩 보면 정상인데 같이 보면 이상한 경우를 잡아냅니다.

4. RCF (Random Cut Forest)

Isolation Forest 와 바탕이 되는 생각은 같지만 셋이 다릅니다. Amazon 이 2016년에 발표한 방법입니다.

Isolation ForestRCF
가르는 축무작위로 고름넓게 퍼진 축을 더 자주 고름
점수혼자 남기까지의 경로 길이넣고 뺄 때 구조가 얼마나 바뀌나
처리한꺼번에 (배치)들어오는 대로 바로 (스트리밍)

첫 번째 차이 — 넓은 축을 먼저 가른다

값이 넓게 퍼진 축일수록 갈랐을 때 정보가 많습니다. 무작정 무작위로 고르는 것보다 의미 있게 나뉩니다.

두 번째 차이 — 구조 변화량으로 점수를 낸다

어떤 값을 넣었을 때 나무 모양이 크게 달라지면 그 값은 기존 것들과 이질적입니다. 빼도 마찬가지입니다.

"몇 번 만에 갈라지나" 보다 주변에 미치는 영향을 보는 셈입니다.

세 번째 차이 — 계속 들어오는 데이터에 맞다

한 점을 넣고 빼는 비용이 작아, 시간이 흐르며 계속 들어오는 지표에 맞습니다. 오래된 구간을 밀어내면서 최근 창만 유지할 수 있습니다.

5. 앙상블 — 여러 방법을 함께 쓴다

왜 필요한가

방법마다 못 보는 것이 다릅니다.

이런 상황놓치는 방법잡는 방법
한쪽으로 치우친 분포Z-ScoreIQR
이상치가 이미 많이 섞임Z-ScoreIQR · Isolation Forest
여러 지표가 얽힌 이상Z-Score · IQRIsolation Forest · RCF
정상만 있는 구간Isolation Forest (억지로 잡음)Z-Score · IQR

마지막 줄이 중요합니다. Isolation Forest 는 비율로 잡기 때문에 정상만 있어도 뭔가를 내놓습니다. 혼자 쓰면 오탐이 됩니다.

어떻게 합치나

방식판정
투표 (기본)정해진 수 이상이 동의해야 이상
합집합하나라도 이상이라고 하면 이상

기본 동의 수는 쓴 방법 수의 3분의 2(올림)입니다.

2개 방법 → 2개 동의 필요
3개 방법 → 2개 동의 필요
4개 방법 → 3개 동의 필요

혼자만 잡은 것은 이상으로 보지 않습니다. Isolation Forest 가 억지로 잡은 것도 Z-Score 와 IQR 이 반대하면 제외됩니다.

민감도와 방향

민감도

1.0 ~ 5.0 사이로 조절합니다. 낮출수록 더 많이 잡습니다.

빌더 화면에는 이 칸이 없습니다. 필요하면 자유 질문으로 요청하십시오.

"조금 더 민감하게 다시 봐 줘" "여러 방법으로 교차 확인해 줘"

방향

어느 쪽으로 벗어난 것을 잡을지 정합니다.

설정잡는 것맞는 지표
both양쪽 다트래픽 — 급증도 급감도 문제
upper위로만에러율 · CPU · 응답시간
lower아래로만Apdex · 처리량

시나리오가 지표에 맞게 알아서 정합니다 (404 장).

더 자세한 것

Z-Score · IQR · Isolation Forest 의 수식은 Forecast MCP 서버 문서의 알고리즘 가이드(600-algorithm_guide.md) §2 에 있습니다. RCF 는 그 문서에 없으며 구현(pkg/engine/detector/rcf.go)이 근거입니다.

다음으로