본문으로 건너뛰기

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)에 있습니다. 이 장은 운영자 관점의 요약입니다.

다음으로