건물의 냉난방 에너지는 바깥 기온을 크게 따라갑니다. 한 해 동안 1시간마다 잰 실제 기온 기록으로, 다음 몇 시간의 기온을 맞히는 방법을 가장 단순한 것부터 학습 모델까지 견줘 봅니다.
시계열은 흔히 추세 + 계절 무늬 + 나머지로 읽습니다. 시간별 기온에서 뚜렷한 계절은 하루입니다. 오후에 덥고 밤에 서늘합니다. 고전적 분해는 가운데 24시간 이동 평균을 추세로 삼고, 남은 것을 시각별로 평균해 하루 무늬를 얻고, 그 나머지를 나머지로 둡니다. 자기상관 함수(ACF)는 k시간 전의 자기 자신과 얼마나 닮았는지 보여 줍니다.
자료: 미국 노스캐롤라이나 그린즈버러의 전형 기상년(TMY3). 달마다 서로 다른 해의 실제 시간별 관측 한 달을 골라 이어 붙였습니다(예: 1월은 1988년, 2월은 1996년). 그래서 달이 바뀌는 곳에서 값이 튈 수 있습니다. 1월은 파일 안에 그 전 기록이 없어 예측 탭에서 뺐습니다.
나흘치(96시간) 값을 그림 위에서 끌어 직접 그려 보세요. 그리는 즉시 하루 패턴(시각별 평균)과 자기상관(ACF)을 다시 계산합니다. 하루를 반복하면 지연 24의 ACF가 1에 가까워지고, 잡음만 있으면 지연 1부터 0 근처입니다.
| 기호 | 뜻 | 단위 |
|---|---|---|
| xt | t시의 기온 | °C |
| T, S, R | 추세, 계절(하루) 성분, 나머지 | °C |
| ρ(k) | k시간 차 자기상관 | — |
어떤 모델보다 먼저, 학습이 필요 없는 예측으로 기준을 세웁니다. Naive는 마지막 값을 그대로 씁니다. Seasonal naive는 어제 같은 시각의 값을 씁니다. 이동 평균은 지난 w시간의 평균을 씁니다. 이것들을 이기지 못하는 모델은 복잡할 이유가 없습니다.
그 달 매일 00시에 예측하고, 몇 시간 앞마다 평균 절대 오차(MAE)를 냅니다.
실제 기록에서 날을 하나 골랐습니다. 지난 72시간을 보고, 색칠된 띠 안을 끌어 다음 24시간 기온을 직접 그려 보세요. 정답 보기를 누르면 실제 값과 두 기준선(마지막 값 그대로, 어제 같은 시각)의 오차가 함께 나옵니다.
Holt-Winters는 수준(level), 추세(trend), 시각별 계절 보정값 24개를 들고 다니며, 새 값이 올 때마다 각자의 비율 α, β, γ만큼 그쪽으로 옮깁니다. ARIMA 계열은 값이 앞의 값에 어떻게 기대는지를 모델로 삼습니다. 여기서는 먼저 24시간 차분(오늘 − 어제 같은 시각)을 하고, 차수 p의 자기회귀를 최소제곱으로 맞춥니다: SARIMA(p,0,0)(0,1,0)₂₄.
Holt-Winters의 바탕인 단순 지수 평활은 ℓ_t = αx_t + (1−α)ℓ_{t−1} 하나입니다. 풀어 쓰면 k단계 전 관측에 α(1−α)^k의 무게를 줍니다. 그림을 누르면 그 시점에 수준이 그 높이로 바뀌는 자료로 바뀝니다. α가 크면 빨리 따라가지만 잡음도 따라갑니다.
예측은 회귀 문제로 바꿀 수 있습니다. 과거로 만든 특징, 여기서는 지난 L시간의 값, 24시간 전 값, 하루 중 시각(sin·cos)으로 다음 한 시간을 맞힙니다. Ridge 회귀는 가중치를 작게 묶는 벌점 λ가 붙은 선형 모델이고, 작은 신경망은 관계를 굽힐 수 있습니다. 여러 시간 앞을 예측할 때는 예측값을 관측값처럼 다시 넣으므로(재귀 예측) 오차가 쌓입니다.
학습 모델의 특징은 지난 값들(지연)입니다. 지연 k마다 x(t−k)와 x(t)를 점으로 찍고 상관을 냈습니다. 아래 상관 곡선을 누르면 그 지연의 산점도가 위에 나옵니다. 지연 1은 거의 한 직선이고, 지연 12는 낮과 밤이 엇갈려 음의 상관, 지연 24는 다시 양의 상관입니다.
예측은 보지 못한 데이터로, 시간 순서대로 평가합니다. Rolling origin 평가는 여러 시점에서 그때까지의 과거만으로 예측하고, 몇 시간 앞인지별로 오차를 평균합니다. 오차 지표도 서로 다릅니다. MAPE는 실제 값으로 나누므로 기온이 0 °C 근처면 터집니다. 시계열 행을 무작위로 섞어 학습·시험으로 나누면, 모델이 시험 시각 바로 옆 시간에서 배우게 되어 점수가 부풀려집니다.
직접 모델이 같은 특징(ridge, L = 6)으로 24시간 뒤 기온을 맞힙니다. 한 해 전체에서 행의 80%로 학습하고 20%로 시험하되, 나누는 방법을 두 가지로 합니다.
점 하나 대신 범위를 말하는 방법 중 가장 단순한 것입니다. 2–6월 매일 00시에 naive로 예측해 시간마다 오차를 모으고, 그 분위수를 구간으로 씁니다. 그 구간을 학습에 쓰지 않은 7–12월에 그대로 대 보면, 덮는 비율이 정한 수준과 어긋납니다. 계절마다 오차 분포가 달라서, 지난 계절로 정한 구간은 새 계절에 너무 넓거나 좁을 수 있습니다.
교육용 페이지입니다. 예측은 방법을 비교하려는 것이며 일기 예보가 아닙니다. 오차는 이 자료 한 곳·한 해에 대한 값입니다.