본문으로 건너뛰기

A.2. 예측은 이렇게 계산한다

선형회귀·홀트윈터스·ARIMA·SARIMA

예측선과 신뢰구간이 어떻게 나오는지 다룹니다. 고를 필요는 없습니다. 데이터를 보고 자동으로 정해집니다. 다만 왜 이 방법이 쓰였는지 알면 결과를 얼마나 믿을지 판단할 수 있습니다.

네 가지 한눈에​

방법무엇을 보고 예측하나필요한 데이터잘 맞는 것
선형 회귀전체를 관통하는 직선2개 이상꾸준히 오르내리는 것
홀트-윈터스수준 + 추세 + 되풀이 무늬2주기 이상하루·주 단위로 되풀이되는 것
ARIMA직전 값들 + 직전 예측 오차30개 이상 권장앞 값의 영향을 받는 것
SARIMAARIMA + 계절 항더 많이되풀이 + 앞 값 둘 다

1. 선형 회귀​

무엇을 하나​

점들 사이로 가장 잘 맞는 직선 하나를 긋고 그대로 늘립니다.

직선은 값 = 시작점 + 기울기 × 시간 형태입니다. 기울기가 곧 "시간당 얼마씩 늘어나는가" 입니다.

직선을 어떻게 정하나 — 최소제곱법​

  1. 직선을 하나 가정합니다
  2. 각 실측점에서 직선까지의 세로 거리를 잽니다
  3. 그 거리들을 제곱해서 더합니다
  4. 이 합이 가장 작아지는 직선을 고릅니다

제곱하는 이유가 있습니다. 그냥 더하면 위로 벗어난 것과 아래로 벗어난 것이 서로 상쇄되어 엉터리 직선도 좋아 보입니다.

신뢰구간은 어디서 나오나​

과거 점들이 직선에서 얼마나 벗어났는지로 정합니다.

실측이띠가
직선에 가깝게 모여 있었다좁게
위아래로 크게 벗어났다넓게

그래서 띠가 넓다는 것은 "이 지표는 원래 들쭉날쭉했다" 는 뜻입니다.

언제 쓰이나​

조건왜
데이터가 10개 미만다른 방법은 배울 것이 있어야 하는데 그럴 양이 안 됩니다
뚜렷한 직선 추세굳이 복잡하게 갈 이유가 없습니다
다른 조건에 다 안 걸림기본값입니다

디스크 사용률처럼 한쪽으로만 가는 지표에 잘 맞습니다.

한계​

  • 직선만 그립니다. CPU 가 80% 를 넘고서야 응답시간이 급격히 오르는 관계는 못 그립니다
  • 되풀이 무늬를 무시합니다 — 낮과 밤이 다른 지표를 평평한 직선 하나로 뭉뚱그립니다
  • 급변에 약합니다

2. 홀트-윈터스​

무엇을 하나​

지표를 세 겹으로 나눠 각각 따로 추적한 뒤 다시 합칩니다.

겹무엇트래픽으로 치면
수준지금 어느 정도인가"요즘 평균 초당 300건"
추세어느 쪽으로 가는가"주마다 20건씩 늘고 있다"
계절성되풀이되는 높낮이"낮에 높고 새벽에 낮다"
예측값 = 수준 + 추세 × 앞으로 몇 칸 + 그 시점의 계절 효과

세 겹으로 나누기 때문에 "추세는 오르는데 지금은 새벽이라 낮다" 같은 상태를 제대로 표현합니다. 선형 회귀는 이것을 하나의 직선으로 뭉뚱그립니다.

세 개의 조절값 — α · β · γ​

각 겹을 얼마나 최근 값 위주로 갱신할지 정하는 값입니다. 셋 다 0~1 사이입니다.

값무엇의 민감도크면작으면
α수준최근 값에 빠르게 반응과거를 고르게 반영
β추세추세가 꺾이면 바로 따라감추세를 안정적으로 유지
γ계절성무늬 변화에 민감과거 무늬를 유지

조절값을 어떻게 찾나 — 2단계 격자 탐색​

사람이 정하지 않습니다. 다 해 보고 가장 잘 맞는 것을 고릅니다.

홀트-윈터스 조��절값 찾기 — 2단계 격자 탐색

넓게 살펴본 뒤 좁혀 들어가는 방식입니다. 처음부터 0.05 단위로 전부 하면 너무 오래 걸립니다.

언제 쓰이나​

되풀이 무늬가 감지되고 데이터가 2주기 이상 있을 때입니다.

데이터가 30개 미만이라 ARIMA 계열을 쓸 수 없을 때, 계절성이 있으면 이쪽이 선택됩니다.

한계​

  • 최소 두 주기가 있어야 무늬를 배웁니다. 한 주기로는 그것이 무늬인지 그냥 오르내린 것인지 구별할 수 없습니다
  • 무늬가 갑자기 바뀌면 따라가는 데 시간이 걸립니다
  • 되풀이가 없는 데이터에 쓰면 없는 무늬를 만들어 냅니다

3. ARIMA​

세 글자를 합친 이름입니다.

글자이름하는 일
AR자기회귀직전 값들을 보고 다음을 정한다
I차분값 자체가 아니라 변화량을 본다
MA이동평균직전에 얼마나 틀렸는지를 반영한다

AR — 직전 값들을 본다​

지금 응답시간이 200ms 라면 1분 뒤도 200ms 근처일 가능성이 높습니다. 5분 전 값도 조금은 참고가 됩니다.

다음 값 ≈ 가중치₁ × 직전 값 + 가중치₂ × 그 앞 값 + …

몇 개까지 볼지가 p 입니다.

I — 변화량으로 바꾼다​

계속 오르는 지표는 값 자체보다 오르는 양이 더 규칙적입니다.

차분 — 값 대신 변화량을 본다

이렇게 바꾸는 것이 차분이고, 몇 번 할지가 d 입니다.

MA — 틀린 만큼 보정한다​

직전 예측 100, 실제 105 → 5만큼 모자랐다
다음 예측 = 계산값 + 보정 × 5

과거 오차를 몇 개까지 볼지가 q 입니다.

p·d·q 를 어떻게 정하나​

자동으로 찾습니다.

ARIMA 의 p·d·q 를 정하는 과정

AICc 는 "얼마나 잘 맞았나" 와 "얼마나 복잡한가" 를 함께 점수로 매깁니다. 복잡한 모델에는 벌점이 붙습니다. 과거에만 잘 맞고 앞날은 못 맞히는 것을 막기 위해서입니다.

안정적이라는 것​

ARIMA 는 데이터가 안정적이어야 잘 동작합니다. 두 가지를 뜻합니다.

  • 평균이 시간에 따라 크게 변하지 않는다
  • 값이 오르내리는 폭이 시간에 따라 크게 변하지 않는다

계속 올라가는 지표는 안정적이지 않습니다. 그래서 차분해서 안정적으로 바꾼 뒤 계산합니다.

언제 쓰이나​

바로 앞 값과의 상관이 0.5 를 넘을 때입니다. 즉 앞 값의 영향을 강하게 받는 지표입니다.

4. SARIMA​

ARIMA 에 계절 항을 더한 것입니다.

ARIMA 가 "직전 몇 개" 를 본다면, SARIMA 는 거기에 "한 주기 전 같은 자리" 를 더 봅니다.

SARIMA — 한 주기 전 같은 자리를 함께 본다

파라미터가 두 벌입니다​

SARIMA(p,d,q)(P,D,Q,s) 로 씁니다.

파라미터무엇
p · d · q일반 항 — ARIMA 와 같음
P한 주기 전 값을 몇 개까지 볼지
D계절 차분 횟수
Q한 주기 전 오차를 몇 개까지 볼지
s주기 길이 (하루 주기면 하루치 점 개수)

계절 차분​

일반 차분이 "지금 − 직전" 이라면, 계절 차분은 "지금 − 한 주기 전 같은 자리" 입니다.

주기적인 높낮이를 없애고 주기를 넘어선 변화만 남깁니다.

5. 어느 것이 쓰일지 — 자동 선택​

순서대로 확인해서 정합니다.

예측 알고리즘 자동 선택

판단 기준 셋​

무엇을어떻게기준
되풀이 무늬자기상관(ACF) 분석신뢰도 0.5 이상이면 있음
앞 값의 영향을 받는지바로 앞 값과의 상관0.5 초과이면 높음
직선 추세기울기 + 설명력(R²)기울기가 유의하고 R² > 0.1

데이터가 적으면 무조건 선형 회귀로 정해집니다. 복잡한 방법은 배울 데이터가 있어야 쓸 수 있기 때문입니다.

근거 구간이 3일이라 생기는 일​

위젯의 조회 기간은 1시간 · 6시간 · 1일 · 3일 넷뿐입니다. 이것이 위 선택 과정에 그대로 영향을 줍니다.

고른 구간실제로 쓰일 만한 방법
1시간점이 적어 거의 선형 회귀
6시간선형 회귀 또는 ARIMA
1일하루 주기는 한 번뿐이라 계절성 학습 불가
3일하루 주기라면 홀트-윈터스가 쓰일 수 있음

주 단위 되풀이는 어느 구간으로도 배울 수 없습니다. 두 주기, 즉 2주치가 필요한데 최대가 3일이기 때문입니다.

주말에 트래픽이 줄어드는 서비스인데 예측이 주말을 반영하지 않는 이유가 이것입니다. 금요일에 3일치로 예측하면 주말 감소를 모른 채 평일 추세를 그대로 늘립니다.

어떻게 잘 맞았는지 재는가​

예측이 실제와 얼마나 맞았는지는 다섯 지표로 잽니다. 부록: 믿어도 되는가에서 다룹니다.

더 자세한 것​

수식과 계산 과정은 Forecast MCP 서버 문서의 알고리즘 가이드 (600-algorithm_guide.md)에 있습니다. 이 장은 운영자 관점의 요약입니다.

다음으로​