검색
← 모듈 로드맵

시계열 예측 기초: 추세 · 계절성 · 자기상관 · 지수평활 · ARIMA · 평가 지표

강의 · 입문자 · KAITABASE 정리

원제 · Time Series Forecasting Basics (Hyndman · Athanasopoulos, Forecasting: Principles and Practice 3판 참고)

자기상관 · 차분 · 기준선 · 지수평활 · ARIMA와 MAE · MAPE · MASE를 손계산하는 시계열 예측 수업

먼저 알아야 할 것

평균 · 분산 · 상관데이터 나누기와 검증절댓값 · 제곱근 계산순환 신경망 개요(선택)

다루는 내용

시계열을 추세 · 계절성 · 나머지로 나눠 보고, 자기상관 r_k와 차분으로 정상성을 다룹니다. 평균 · 나이브 · 계절 나이브 · 드리프트 기준선과 단순 지수평활, ARIMA(p,d,q)의 구성과 특수한 경우를 FPP3 교재 흐름으로 정리합니다. 시간 순 교차 검증과 MAE · RMSE · MAPE · MASE를 같은 예로 손계산하고, DeepAR · N-BEATS · PatchTST · Chronos 등 딥러닝 · 기초 모델 예측의 위치를 원 논문 초록 기준으로 소개합니다.

해설

시계열 예측 기초: 추세 · 계절성 · 자기상관 · 지수평활 · ARIMA · 평가 지표

매출, 서버 트래픽, 전력 수요, 재고처럼 시간 순서대로 쌓이는 숫자를 시계열(time series) 이라 합니다. 시계열 예측은 일반 머신러닝과 두 가지가 다릅니다. 미래 정보를 절대 쓰면 안 되고(시간 순 검증), "그냥 어제 값"이라는 아주 강한 기준선이 있다는 점입니다. 이 수업은 Hyndman · Athanasopoulos의 『Forecasting: Principles and Practice』(3판) 흐름을 따라 기초 개념과 지표를 손계산하고, 딥러닝 예측 모델의 지형까지 정리합니다.

항목내용
참고 출처Hyndman · Athanasopoulos, 『Forecasting: Principles and Practice』 3판(OTexts, 온라인판) 2.8 · 5.2 · 5.8 · 5.10 · 8.1 · 9.1 · 9.5절, DeepAR(arXiv 1704.04110), N-BEATS(arXiv 1905.10437), PatchTST(arXiv 2211.14730), Chronos(arXiv 2403.07815)
트랙 · 수준시계열 · 기초
이 수업이 다루는 범위추세 · 계절성 · 잡음, 자기상관(ACF), 정상성과 차분, 기준선 예측(평균 · 나이브 · 계절 나이브 · 드리프트), 이동평균 · 단순 지수평활, ARIMA 개요, 시간 순 교차 검증, MAE · RMSE · MAPE · MASE, 딥러닝 · 기초 모델 개요

들어가기 전에

한눈에 보기

  • 시계열을 추세 · 계절성 · 나머지로 나눠 보는 눈을 기릅니다.
  • 자기상관 rkr_k 를 계산하고, 차분으로 정상성을 만드는 이유를 압니다.
  • 평균 · 나이브 · 드리프트 · 단순 지수평활 예측을 손으로 만듭니다.
  • MAE · RMSE · MAPE · MASE를 같은 예로 계산하고, MASE가 1보다 작다는 뜻을 설명할 수 있습니다.
  • 시간 순 교차 검증과, DeepAR · N-BEATS · PatchTST · Chronos 같은 딥러닝 예측의 위치를 압니다.

1. 시계열의 세 성분과 자기상관

직관(해설용 비유). 카페 하루 매출을 떠올립니다. 단골이 늘며 천천히 오르는 흐름(추세, trend), 주말마다 뛰는 반복(계절성, seasonality — 꼭 계절이 아니라 '정해진 주기'), 그리고 비 오는 날 같은 예측 못 할 흔들림(나머지 · 잡음)이 겹쳐 있습니다. 예측은 앞의 두 가지를 잡아내고, 세 번째는 '불확실성'으로 표현하는 일입니다.

자기상관(autocorrelation). "오늘 값이 kk 칸 전 값과 얼마나 같이 움직이나"를 잽니다(교재 2.8절).

rk=∑t=k+1T(yt−yˉ)(yt−k−yˉ)∑t=1T(yt−yˉ)2r_k = \frac{\sum_{t=k+1}^{T}(y_t-\bar y)(y_{t-k}-\bar y)}{\sum_{t=1}^{T}(y_t-\bar y)^2}
기호뜻
yty_t시각 tt 의 값
yˉ\bar y전체 평균
kk시차(lag), 몇 칸 전과 비교하는지
TT관측 개수
rkr_k시차 kk 의 자기상관(−1~1)

읽는 법(교재 설명). 추세가 있으면 작은 시차의 rkr_k 가 크고 양수이며 천천히 줄어듭니다. 계절성이 있으면 주기의 배수 시차(예: 주간 데이터에서 7, 14)에서 rkr_k 가 커집니다. 아무 패턴 없는 잡음(백색 잡음)이라면 rkr_k 의 약 95%가 ±1.96/T\pm1.96/\sqrt T 안에 들어옵니다.

숫자로 해 보기(해설용, numpy로 확인). 학습 데이터 6개 y=(10,12,13,12,15,16)y = (10, 12, 13, 12, 15, 16), 평균 13.

  • 편차: (−3,−1,0,−1,2,3)(-3, -1, 0, -1, 2, 3), 제곱합 =9+1+0+1+4+9=24= 9+1+0+1+4+9 = 24
  • 시차 1 곱의 합: (−1)(−3)+0+0+(2)(−1)+(3)(2)=3−2+6=7(-1)(-3) + 0 + 0 + (2)(-1) + (3)(2) = 3 - 2 + 6 = 7
  • r1=7/24≈0.29r_1 = 7/24 \approx 0.29

2. 정상성과 차분

정상성(stationarity). 통계적 성질(평균 · 분산 · 자기상관 모양)이 언제 관측하든 같은 시계열입니다(교재 9.1절). 추세나 계절성이 있으면 정상이 아닙니다. 많은 고전 모델(ARIMA의 AR · MA 부분)이 정상 시계열을 가정하므로, 먼저 정상으로 만듭니다.

차분(differencing). 바로 앞 값과의 차이를 새 시계열로 씁니다.

yt′=yt−yt−1,계절 차분: yt′=yt−yt−my'_t = y_t - y_{t-1},\qquad \text{계절 차분: } y'_t = y_t - y_{t-m}
기호뜻
yt′y'_t차분한 값(변화량)
mm계절 주기(월별 데이터의 연 주기면 12)

숫자로 해 보기(해설용). 위 yy 의 1차 차분은 (2,1,−1,3,1)(2, 1, -1, 3, 1) 입니다. 올라가던 수준(추세)이 사라지고 '얼마나 변했나'만 남았습니다. 차분 후 시차 1 자기상관은 약 −0.46으로, 원래의 양의 상관이 없어졌습니다. 교재는 정상 시계열의 ACF는 빠르게 0으로 떨어지고, 비정상 시계열은 천천히 줄어든다고 설명하며, 차분이 필요한지 판단하는 단위근 검정(KPSS 검정: 귀무가설이 '정상'이라 p값이 작으면 차분 필요)을 소개합니다.

3. 기준선 예측: 이기기 어려운 단순한 방법들

교재 5.2절의 네 가지 기준선입니다. 새 모델은 반드시 이들과 먼저 비교 해야 합니다.

방법예측식 y^T+h∣T\hat y_{T+h\mid T}뜻
평균yˉ\bar y과거 평균
나이브yTy_T마지막 값 그대로
계절 나이브같은 계절의 마지막 값지난주 같은 요일 값
드리프트yT+h yT−y1T−1y_T + h\,\dfrac{y_T - y_1}{T-1}처음과 끝을 잇는 직선 연장

숫자로 해 보기(해설용). 학습 y=(10,12,13,12,15,16)y=(10,12,13,12,15,16), 실제 미래 값 (18,17)(18, 17).

  • 평균: 13, 13
  • 나이브: 16, 16
  • 드리프트: 기울기 (16−10)/5=1.2(16-10)/5 = 1.2 → 17.2, 18.417.2,\ 18.4

이동평균(moving average). 최근 kk 개 평균으로 흔들림을 걸러 추세를 봅니다. 3칸 이동평균은 (11.67,12.33,13.33,14.33)(11.67, 12.33, 13.33, 14.33) 입니다. 추세를 보는 도구이지 그 자체로 좋은 예측법은 아닙니다(교재 3장의 분해에 쓰임).

단순 지수평활(SES, 교재 8.1절). 최근 값일수록 무게를 지수적으로 더 주는 가중 평균입니다.

ℓt=αyt+(1−α) ℓt−1,y^t+h∣t=ℓt,0≤α≤1\ell_t = \alpha y_t + (1-\alpha)\,\ell_{t-1},\qquad \hat y_{t+h\mid t} = \ell_t,\qquad 0\le\alpha\le1
기호뜻
ℓt\ell_t시각 tt 의 수준(평활값)
α\alpha평활 계수. 클수록 최근 값에 민감(1이면 나이브와 같음)

숫자로 해 보기(해설용). α=0.5\alpha = 0.5, ℓ1=10\ell_1 = 10 으로 시작하면 ℓ\ell 은 11→12→12→13.5→14.7511 \to 12 \to 12 \to 13.5 \to 14.75 가 됩니다. 미래 예측은 모두 14.75입니다. 교재 표대로 α=0.2\alpha=0.2 이면 가장 최근 값의 무게는 0.2, 그 전은 0.16, 그 전은 0.128 … 로 줄어듭니다. SES는 추세가 없을 때 맞는 방법이라, 이 데이터처럼 오르는 시계열에는 늦게 따라옵니다. 추세 · 계절을 더한 확장이 홀트(Holt) · 홀트-윈터스 방법입니다.

4. ARIMA 개요

구성(교재 9.5절). ARIMA(p,d,q)(p,d,q) 는 세 부품의 조합입니다.

  • AR(pp, 자기회귀): 과거 값 pp 개의 선형 결합
  • I(dd, 적분 = 차분 횟수): 정상으로 만들려고 차분한 횟수
  • MA(qq, 이동평균 오차): 과거 예측 오차 qq 개의 선형 결합(위의 '이동평균 평활'과는 다른 개념)
yt′=c+ϕ1yt−1′+⋯+ϕpyt−p′+θ1εt−1+⋯+θqεt−q+εty'_t = c + \phi_1 y'_{t-1} + \cdots + \phi_p y'_{t-p} + \theta_1\varepsilon_{t-1} + \cdots + \theta_q\varepsilon_{t-q} + \varepsilon_t
기호뜻
yt′y'_tdd 번 차분한 값
cc상수
ϕi\phi_iAR 계수
θj\theta_jMA 계수
εt\varepsilon_t시각 tt 의 예측 못 하는 오차(백색 잡음)

특수한 경우(교재 표). ARIMA(0,0,0) = 백색 잡음, ARIMA(0,1,0) = 랜덤워크(상수가 있으면 드리프트 포함 랜덤워크 = 드리프트 예측), ARIMA(pp,0,0) = 자기회귀, ARIMA(0,0,qq) = 이동평균. 즉 앞 절의 나이브 · 드리프트 예측도 ARIMA의 한 경우입니다.

숫자로 해 보기(해설용). AR(1) yt=2+0.5 yt−1+εty_t = 2 + 0.5\,y_{t-1} + \varepsilon_t 에서 yT=10y_T = 10 이면 1칸 뒤 예측은 2+0.5×10=72 + 0.5\times10 = 7, 2칸 뒤는 2+0.5×7=5.52 + 0.5\times7 = 5.5 입니다. 계속 가면 장기 평균 2/(1−0.5)=42/(1-0.5) = 4 로 다가갑니다. 정상 AR 모델의 먼 미래 예측은 평균으로 돌아갑니다.

왜 아직도 배우나. 데이터가 적고 패턴이 단순한 시계열에서 ARIMA · 지수평활은 빠르고, 해석되며, 예측 구간까지 줍니다. 딥러닝이 이기는지는 데이터마다 확인해야 합니다.

5. 평가: 시간 순 검증과 지표

시간 순 교차 검증(교재 5.10절). 무작위로 섞어 나누면 미래로 과거를 맞히는 '정보 누설'이 생깁니다. 대신 예측 기준점을 굴려 가며(rolling forecasting origin) 평가합니다.

mermaid
flowchart LR
  D[시간 순 데이터] --> S1[학습 1..3 → 4 예측]
  D --> S2[학습 1..4 → 5 예측]
  D --> S3[학습 1..5 → 6 예측]
  S1 --> E[오차 모으기]
  S2 --> E
  S3 --> E
  E --> M[MAE · RMSE · MASE 평균]
  M --> C{기준선<br/>나이브 · 계절 나이브보다 나은가}
  C -->|예| U[모델 채택 · 예측 구간 함께 보고]
  C -->|아니오| B[기준선 사용 · 특징 재검토]

지표(교재 5.8절). 예측 오차 et=yt−y^te_t = y_t - \hat y_t 에 대해

MAE=mean(∣et∣),RMSE=mean(et2),MAPE=mean(∣100 etyt∣)\mathrm{MAE} = \mathrm{mean}(|e_t|),\quad \mathrm{RMSE} = \sqrt{\mathrm{mean}(e_t^2)},\quad \mathrm{MAPE} = \mathrm{mean}\Big(\Big|\frac{100\,e_t}{y_t}\Big|\Big)
MASE=mean(∣qj∣),qj=ej1T−1∑t=2T∣yt−yt−1∣\mathrm{MASE} = \mathrm{mean}(|q_j|),\qquad q_j = \frac{e_j}{\frac{1}{T-1}\sum_{t=2}^{T}|y_t - y_{t-1}|}
지표장점주의
MAE원래 단위, 이해 쉬움다른 단위 시계열끼리 비교 불가
RMSE큰 오차에 더 큰 벌점이상치에 민감, 단위 의존
MAPE단위 없음(%)yt=0y_t=0 이면 정의 안 됨, 0 근처에서 폭발
MASE단위 없음, 0 문제 없음분모는 학습 데이터 의 1칸 나이브 오차 평균

계절 데이터는 MASE 분모를 계절 나이브 오차(∣yt−yt−m∣|y_t - y_{t-m}|)로 바꿉니다. 교재는 sMAPE는 쓰지 말라는 Hyndman · Koehler의 권고도 소개합니다.

숫자로 해 보기(해설용, numpy로 확인). 학습 y=(10,12,13,12,15,16)y=(10,12,13,12,15,16), 실제 (18,17)(18,17).

  • MASE 분모: 학습 데이터의 1칸 차이 절댓값 (2,1,1,3,1)(2,1,1,3,1) 의 평균 =1.6= 1.6
예측법예측오차MAERMSEMAPEMASE
나이브16, 162, 11.501.588.50%0.94
평균13, 135, 44.50——2.81
드리프트17.2, 18.40.8, −1.41.10——0.69

나이브의 MAPE는 (2/18+1/17)/2×100≈(11.11+5.88)/2≈8.50%(2/18 + 1/17)/2\times100 \approx (11.11 + 5.88)/2 \approx 8.50\% 입니다. MASE가 1보다 작다 는 것은 "학습 구간의 1칸 나이브 예측 평균 오차보다 작다"는 뜻입니다(교재 설명). 이 예에서는 추세를 반영한 드리프트가 가장 좋습니다. 단, 테스트 점 2개로 결론 내리면 안 되고, 위 그림처럼 여러 기준점에서 평균해야 합니다.

6. 딥러닝 예측과 시계열 기초 모델

언제 딥러닝인가. 비슷한 시계열이 수천 개(상품별 판매량, 센서별 측정값) 있고, 외부 변수가 많을 때 강점이 있습니다. 시계열 하나하나 따로 맞추는 고전 방법과 달리, 여러 시계열을 한 모델이 함께 학습 해 패턴을 공유합니다.

모델핵심 아이디어(원 논문 초록 기준)
DeepAR(2017)관련 시계열 다수로 자기회귀 RNN을 학습해, 값 하나가 아니라 확률분포(예측 구간) 를 예측. 기존 최고 방법 대비 약 15% 정확도 개선 보고
N-BEATS(2019)완전 연결 층을 깊게 쌓고 앞 · 뒤 잔차 연결로 연결. M3 · M4 · TOURISM에서 통계 기준선보다 약 11%, M4 대회 우승 방법보다 약 3% 개선 보고. 해석 가능한 구성도 가능
PatchTST(2023, ICLR)시계열을 구간(패치)으로 잘라 트랜스포머 토큰으로 쓰고, 채널(변수)을 각각 독립된 단변량 시계열로 다룸. 긴 과거를 적은 계산으로 봄
Chronos(2024)값을 스케일링 · 구간화해 이산 토큰 으로 바꾸고, T5 계열 언어 모델 구조(약 20M~710M 파라미터)를 교차 엔트로피로 학습. 42개 데이터셋 벤치마크에서 평가

숫자로 해 보기(해설용). 길이 512인 과거를 패치 길이 16으로 겹치지 않게 자르면 토큰은 512/16=32512/16 = 32 개입니다. 어텐션 점수 행렬은 5122=262,144512^2 = 262{,}144 칸에서 322=1,02432^2 = 1{,}024 칸으로 256배 줄어듭니다. PatchTST가 긴 과거를 볼 수 있는 이유가 이것입니다(실제 논문은 패치를 겹치게도 자릅니다).

기초 모델(foundation model)의 뜻. Chronos처럼 대량의 다양한 시계열로 미리 학습한 모델은 새 시계열에 추가 학습 없이(제로샷) 예측을 냅니다. 언어 모델이 "다음 토큰"을 예측하듯 "다음 값 구간"을 예측하는 셈입니다(→ 언어 모델의 기본). 긴 시퀀스를 효율적으로 다루는 상태 공간 모델 계열은 Mamba 에서 볼 수 있습니다.

실무 체크리스트(해설용 정리).

  1. 나이브 · 계절 나이브 기준선과 MASE부터 계산합니다.
  2. 시간 순 교차 검증만 씁니다(무작위 분할 금지).
  3. 미래 시점에 알 수 없는 특징(예: 당일 확정 매출)을 입력에 넣지 않았는지 확인합니다.
  4. 점 예측뿐 아니라 예측 구간(불확실성)을 함께 보고합니다.

연습 문제

  1. y=(5,7,6,8)y = (5, 7, 6, 8) 에서 나이브 · 드리프트의 1칸 뒤 예측은?
    • 풀이: 나이브 8, 드리프트 8+(8−5)/3=98 + (8-5)/3 = 9 입니다.
  2. 위 데이터의 MASE 분모(1칸 나이브 오차 평균)는? 실제 다음 값이 10이고 나이브 예측을 썼다면 MASE는?
    • 풀이: 차이 (2,1,2)(2, 1, 2) 의 평균 5/3≈1.6675/3 \approx 1.667. 오차 ∣10−8∣=2|10-8| = 2 이므로 MASE =2/1.667=1.2= 2/1.667 = 1.2 입니다.
  3. 실제 값이 (0,4)(0, 4), 예측이 (1,4)(1, 4) 이면 MAPE를 쓸 수 있나요?
    • 풀이: yt=0y_t = 0 인 시점에서 100et/yt100e_t/y_t 가 정의되지 않으므로 쓸 수 없습니다. MAE(0.5)나 MASE를 씁니다.
  4. SES에서 α=1\alpha = 1 이면 어떤 방법과 같아지나요?
    • 풀이: ℓt=yt\ell_t = y_t 이므로 마지막 값 그대로, 즉 나이브 예측과 같습니다.
  5. 월별 데이터에서 계절 차분 yt−yt−12y_t - y_{t-12} 를 하는 이유는?
    • 풀이: 같은 달끼리 빼서 매년 반복되는 계절 패턴을 없애고 정상에 가깝게 만들기 위해서입니다.

스스로 점검

  1. 시계열에서 데이터를 무작위로 섞어 검증하면 안 되는 이유는?
    • 답: 미래 값이 학습에 들어가 과거를 맞히는 정보 누설이 생기고, 실제 사용 상황(과거로 미래 예측)과 달라져 성능이 부풀려지기 때문입니다.
  2. MASE가 0.8이라는 것은 무슨 뜻인가요?
    • 답: 예측 오차의 평균이, 학습 구간에서 1칸 나이브 예측이 낸 평균 오차의 80% 수준이라는 뜻입니다. 1보다 작으면 그 기준보다 낫습니다.
  3. 정상 AR(1) 모델로 아주 먼 미래를 예측하면 어떻게 되나요?
    • 답: 과거 값의 영향이 계수의 거듭제곱으로 줄어들어, 예측이 장기 평균 c/(1−ϕ1)c/(1-\phi_1) 으로 수렴합니다.

용어 정리

용어쉬운 뜻
시계열시간 순서대로 기록한 숫자 줄
추세 · 계절성장기적인 오르내림 · 정해진 주기로 반복되는 패턴
자기상관(ACF)시계열이 몇 칸 전의 자기 자신과 얼마나 같이 움직이는지
백색 잡음패턴 없이 서로 독립인 흔들림
정상성언제 보든 통계적 성질이 같은 성질
차분바로 앞(또는 같은 계절) 값과의 차이를 새 시계열로 쓰는 것
나이브 · 드리프트 예측마지막 값 그대로 · 처음과 끝을 잇는 직선 연장
단순 지수평활최근 값에 지수적으로 더 큰 무게를 준 가중 평균
ARIMA자기회귀 · 차분 · 오차 이동평균을 합친 고전 예측 모델
시간 순 교차 검증예측 기준점을 앞으로 굴려 가며 과거만으로 미래를 평가하는 방법
MAE · RMSE · MAPE · MASE절대 오차 평균 · 제곱 평균 제곱근 · 백분율 오차 · 나이브 대비 비율 오차
예측 구간미래 값이 들어올 것으로 보는 범위(불확실성 표현)
시계열 기초 모델다양한 시계열로 미리 학습해 새 시계열에 바로 쓰는 모델

더 깊이 보려면

  • 『Forecasting: Principles and Practice』 3판 — 3장(분해), 8장(지수평활 · ETS), 9장(ARIMA), 12장(고급 방법). R(fable) 코드가 함께 있습니다.
  • DeepAR · N-BEATS · PatchTST · Chronos 원 논문 — 각 모델이 어떤 데이터에서 어떤 기준선과 비교했는지 확인하는 습관이 중요합니다.

다음에 볼 것

라이선스

본문은 KAITABASE 자체 해설입니다. 참고 교재 『Forecasting: Principles and Practice』(OTexts)는 온라인으로 무료 공개되어 있으나, 첫 화면에서 라이선스 표기는 확인하지 못해 요약 · 인용만 했습니다. 시계열 숫자 예는 이 수업을 위해 만든 해설용 예이며 numpy로 계산을 확인했습니다.

출처

  • Rob J Hyndman · George Athanasopoulos, Forecasting: Principles and Practice, 3rd ed., OTexts: https://otexts.com/fpp3/
    • 2.8 Autocorrelation: https://otexts.com/fpp3/acf.html
    • 5.2 Some simple forecasting methods: https://otexts.com/fpp3/simple-methods.html
    • 5.8 Evaluating point forecast accuracy: https://otexts.com/fpp3/accuracy.html
    • 5.10 Time series cross-validation: https://otexts.com/fpp3/tscv.html
    • 8.1 Simple exponential smoothing: https://otexts.com/fpp3/ses.html
    • 9.1 Stationarity and differencing: https://otexts.com/fpp3/stationarity.html
    • 9.5 Non-seasonal ARIMA models: https://otexts.com/fpp3/non-seasonal-arima.html
  • David Salinas 외, DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks, 2017: https://arxiv.org/abs/1704.04110
  • Boris N. Oreshkin 외, N-BEATS: Neural basis expansion analysis for interpretable time series forecasting, 2019: https://arxiv.org/abs/1905.10437
  • Yuqi Nie 외, A Time Series is Worth 64 Words: Long-term Forecasting with Transformers(PatchTST), ICLR 2023: https://arxiv.org/abs/2211.14730
  • Abdul Fatir Ansari 외, Chronos: Learning the Language of Time Series, 2024: https://arxiv.org/abs/2403.07815

AI 원리부터 이해하기 · 시계열 모듈

시계열 모듈 학습

이 글은 시계열 모듈의 학습 자료입니다. 전체 1개 자료 중 1번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Forecasting: Principles and Practice(OTexts 무료 온라인판, 라이선스 표기 미확인)