statduck
Time Series Forecasting 본문
ARIMA 모형
모형의 정상성 가정을 먼저 만족해야한다.
AR(Auto Regressive)모형은
$$Z_t = \phi_1Z_{t-1}+ + \phi_2 Z_{t-2} + \phi_3 Z_{t-3} + \cdots + \phi_p Z_{t-p} + a_t $$
이와 같이 나타나며, 이는 이전 시점의 데이터들을 t시점의 데이터에 회귀시킨 모형이다.
* 단 회귀모형과는 달리 독립변수들간 독립성이 가정되지 않으며 독립변수 개수가 사전적으로 결정되는 것이 아니다.
MA(Moving Average)모형은
$$ Z_t = a_t - \theta_1 a_{t-1} - \theta_2 a_{t-2} - \theta_3 a_{t-3} - \cdots - \theta_q a_{t-1} $$
이는 $\{ a_t, a_{t-1}, a_{t-2}, \cdots \}$들을 t시점의 데이터에 회귀시킨 모형이다.
이 때 $\{ a_t, a_{t-1}, a_{t-2}, \cdots \}$ 는 white noise process로서 AR모형에서 설명되지 못한 에러들(과거의 예측오차)을 독립변수로 사용한다. 비정상 모형의 경우 분산안정화 및 차분(평균정상화)을 통하여 정상화를 진행하고 그 후 ARIMA모형을 적합한다.
ARIMA모형은 AR model + Integration(차분) + MA model을 합친 것이다.
즉, 이전 시점의 데이터들과 설명되지 못한 에러 전체를 독립변수로 넣은 모델로 볼 수 있다.
참조) https://people.cs.pitt.edu/~milos/courses/cs3750/lectures/class16.pdf
Machine Learning 모형
ARIMA 모형의 아이디어는 결국 이전 시점의 데이터들과 에러를 통하여 미래 데이터를 예측하겠다는 것이다. 이를 ML의 관점에서 적용하기 위해서는 위의 ARIMA의 아이디어를 피쳐 엔지니어링에 적용시켜야 한다. t시점의 데이터를 예측하고 싶으면 t-1, t-2, ... , t-p 데이터를 피쳐(설명변수)에 넣고 t시점 데이터를 타겟변수로 설정하면 된다. 이 때 언제까지의 시점을 피쳐로 넣는지를 결정할 때, ARIMA에서 사용되는 ACF, PACF를 참조하면 좋다. 왜냐하면 ACF, PACF는 결국 과거의 몇 시점까지의 데이터가 현재의 데이터와 관련이 있는지를 패턴을 통해 보여주기 때문이다. 그리고 과거 시점 데이터 뿐만 아니라 과거 시점을 적합했을 때의 에러, 혹은 다른 설명변수들을 추가시키면 된다.
DLinear
https://github.com/cure-lab/DLinear
run_longExp.py
⌙ exp.exp_main
⌙data_provider.data_factory
⌙data_provicer.data_loader # size [seq_len, label_len, pred_len]
default: seq_len = 24*4*4, label_len=24*4, pred_len=24*4(시간단위이면 4일예측)
seq_len: 과거 데이터 몇개를 인풋으로 쓸건지?
⌙exp.exp_basic
⌙models
⌙utils.tools
⌙utils.metrics
--data custom
--features S
--freq d
--seq_len 60
--freq_len 30
--lable_len 30
'Machine Learning' 카테고리의 다른 글
Detecting Seasonality With Fourier (0) | 2022.12.19 |
---|---|
크롤링 & 워드클라우드 (0) | 2022.12.18 |
Kernel Smoothing (0) | 2022.06.09 |
Smoothing Splines & Smoother Matrices (0) | 2022.06.09 |
Basis Expansions & Regularization (0) | 2022.06.09 |