시계열 보간 분석
누락된 시계열 데이터를 보간법으로 복원하고 잔차를 분석해 데이터 조작 여부를 판단합니다. 현재는 placeholder 상태로 점수에 영향을 주지 않습니다.
- 가중치
- info점수에 직접 영향 없음
- 알고리즘
- 1placeholder (준비 중)
- 역할
- 보간누락 데이터 복원 + 잔차 분석
결측 데이터 신뢰도 보정 실 구현timeseries.interpolate
업스트림 일시 장애 (네이버 응답 지연, 프록시 풀 503, 일시적 차단 등) 로 5분 주기 자동 측정이 실패하면 측정 데이터에 빈 구간이 생깁니다. 빈 구간이 그대로 분석에 들어가면 일부 알고리즘이 노이즈를 잡아 점수가 흔들립니다. 이 알고리즘은 빈 구간 비율 만 측정하고, 다른 알고리즘들의 신뢰도 (confidence) 만 깎아 합성 점수가 자연스럽게 중립 (50점) 으로 끌려가게 합니다.
왜 보간하지 않나요
수학적으로 빈 구간을 앞뒤 값으로 직선 보간 (linear interpolation) 하는 것이 가능하지만, 봇 폭증이 장애 직후에 일어나면 그 폭증 구간을 매끈한 직선으로 메워 anomaly 가 안 잡히는 위험 이 있습니다. 합법적으로 보이는 데이터 fabrication 은 분석 정직성을 훼손합니다. 대신 "빈 구간이 있을 때는 결과를 덜 확신한다" 를 정량적으로 표현하는 쪽이 안전합니다.
어떻게 측정하나
각 인접 측정점 사이의 시간 간격이 기대치 (5 분 × 1.5 = 7.5 분) 를 초과하면 그 구간을 빈 구간으로 봅니다. 25 분 빈 구간 = 4 슬롯 누락으로 카운트합니다.
- 기대 슬롯 수 = 측정 윈도우 / 5분
- 누락 슬롯 수 = 7.5 분을 넘는 모든 간격에서 누락된 슬롯의 합
어떻게 점수에 반영되나
다른 모든 알고리즘 (결측 측정 자기 자신은 제외) 의 신뢰도에 다머 (damper) 계수를 곱합니다.
| ratio | factor=0.7 일 때 conf 곱 | 점수 영향 |
|---|---|---|
| 0.05 (5%) | × 0.965 | 거의 영향 없음 |
| 0.10 (10%) | × 0.93 | 합성 약 ±3.5 점 보수화 |
| 0.30 (30%) | × 0.79 | 합성 약 ±10 점 중립화 |
| 0.50 (50%) | 적용 안 됨 (스킵) | 분석 자체 보류 |
매우 부족한 측정 — 분석 자체 보류
빈 구간 비율이 50% 를 넘거나 정상 측정 횟수가 6 회 미만이면, 신뢰도를 아무리 깎아도 의미 있는 신호 추출이 불가능합니다. 이 경우 분석 결과를 새로 기록하지 않고 이전 상태를 유지 합니다. 사용자는 "마지막 측정 N분 전" 표시로 측정이 부진했음을 자체적으로 추론할 수 있습니다.
파라미터
| 이름 | 값 | 의미 |
|---|---|---|
expectedIntervalMs | 5 분 | 기대 측정 주기 |
gapThresholdMs | 7.5 분 (1.5×) | 빈 구간으로 인정할 최소 간격 |
damperFactor | 0.7 | 신뢰도 다머 계수 (보수적 강화) |
skipThreshold | 0.5 | 분석 자체 보류 임계 비율 |
minObservedSamples | 6 | 분석 최소 정상 측정 횟수 |
왜 직선 보간이 아니라 다머 인가요
직선 보간은 두 정상 측정값 사이의 빈 구간을 직선으로 메우는 방식입니다. 수학적으로 단순하고 차트가 매끄러워지지만, 봇이 outage 직후에 폭증을 일으키는 시나리오에서는 그 폭증 구간 일부가 직선으로 가려져 anomaly detector 가 못 잡습니다.
이 위험은 outage 가 잦은 환경 (현재 운영) 에서 false negative 비용이 큽니다. 그래서 직선 보간은 채택하지 않았고, 대신 합성 layer 의 기존 neutral pull 메커니즘을 활용해 "빈 구간이 많을수록 답을 50 으로 끌어당기는" 식으로 정직하게 처리합니다.
운영 데이터 6 개월 누적 후 직선 보간이 false negative 를 낼 만한 패턴이 실제로 거의 없다는 것이 확인되면 비선형 (Kalman / cubic spline) 보간 도입을 별도 알고리즘으로 재고려할 수 있습니다.