시계열 데이터라고 불리는 time series data는 쉽게 생각해서 일정한 시간 간격으로 배치된 seqence (수열) 을 가르킨다.
- 이는 엄밀하게 애기하면 discrete time series data라고 생각할 수 있다.
- continuous time series data의 경우엔 sampling interval $T_0=0$인 경우를 가르킨다.
tiem series data는 순서가 의미를 가지는 sequential data의 일종이다.
2023.07.21 - [.../Math] - [Math] Sequence (수열) and Series (급수)
Time series 와 auto-correlation
Time series data는 일반적으로 autocorrelation을 가지는 일종의 random variable로 표시 될 수 있다.
- autocorrelation을 가진다는 것은 과거의 데이터 (index가 앞에 놓이는 데이터 포인트의 값)가 현재와 미래의 데이터에 영향을 준다는 뜻임.
- 때문에 time series data에 대한 분석은 결국 "과거가 미래에 어떤 영향을 미치는가?" 를 알아내는 것임.
autocorrelation은
하나의 random variable에서
서로 다른 데이터 포인트 간의 값들 사이에서 나타나는 correlation 을 의미한다.
time series data에선
한 random variable이 서로 다른 두 시점에서 가지는 값(=보통 값은 vector임)들 사이의 correlation이지만,
image data 등에서
서로 다른 공간에 데이터 포인트 간의 correlation일 수 있음.
auto-correlation은 같은 random variable (or signal, function)간의 correlation이고 다른 random variable간의 correlation은 cross correlation임.
2022.10.14 - [.../Signals and Systems] - [SS] Cross Correlation
2022.05.01 - [.../Math] - [Statistics] Covariance vs. Correlation
Time series data의 주요 components
Time series data는 일반적으로
- level,
- trend,
- seasonality,
- noise (or irregular)
의 4개의 component로 구성되며,
trend와 seasonality 에 의해 autocorrelatoin을 가지게 되고, noise는 iid (independent and identically dsitribution, 독립항등분포)를 만족함.
- Trend (추세) : 장기적으로 증가 또는 감소하는 등의 경향성의 존재를 의미함. noise등으로 인해 짧은 구간에선 잘 안보이지만 큰 구간에서는 보이는 어떤 패턴이라고 볼 수 있음.
- Seasonality (계절성) : 특정 기간에 반복적으로 나타나는 패턴을 의미함. 유사한 것으로 Cycle(주기성)을 들 수 있음.
- Level : time series data의 평균값을 의미함.
Sytematic components and Non-systematic components
- level, trend, seasonality는 일관성 또는 반복적인 component로 분석 및 modeling이 용이하기 때문에 systematic component 라고 불림.
- noise (or irregular)의 경우엔 직접적인 modeling이 용이하지 않기 때문에 non-systematic component임.
Additive model and Multiplicative model decomposition
흔한 time series data에 대한 model은 additive model와 multiplicative model로 구분한다.
$$y(t)= \text{Level} + \text{Trend} +\text{Seasonality} +\text{Noise}$$
- 위의 식은 additive model을 나타내며, linear함.
- seasonality의 빈도와 진폭이 time invariant임.
$$y(t)= \text{Level} \times \text{Trend} \times \text{Seasonality} \times \text{Noise}$$
- 위의 식은 multiplicative model을 나타내며, non-linear함.
- seasonality의 빈도와 진폭이 time varying.
Example
다음은 1949년부터 1960년까지의 월간 항공기 이용승객수를 기록한 Time series data ($T_0$가 1 month임)를 trend와 seasonality, noise로 분리하여 표시한 것임.
맨 하단의 residuals는 noise (or random, irregular)이며, erratic, unsystematic, 'residual' flutuations을 가르키고 일정하게 반복 등이 되지 않음. white guassian noise등도 이 irregular에 포함됨 (가장 예측이 어려운 component임).
code
from pandas import read_csv
series = read_csv(
'AirPassengers.csv',
header=0,
index_col=0,
parse_dates=True,
# squeeze=True,
).squeeze('columns')
# multiplicative decompose time series
from statsmodels.tsa.seasonal import seasonal_decompose
result_m = seasonal_decompose(series, model='multiplicative') #additive multiplicative
result_a = seasonal_decompose(series, model='addictive') #additive multiplicative
from matplotlib import pyplot
result_m.plot()
pyplot.show()
result_a.plot()
pyplot.show(
관련자료
https://gist.github.com/dsaint31x/4a3bf8ab982dc89b5dc58b85f478199c
'Computer' 카테고리의 다른 글
[DL] Keras를 위한 Scikit-Learn Wrapper : Scikeras (1) | 2023.11.13 |
---|---|
[ML] No Free Lunch Theorems (0) | 2023.09.06 |
[Keras] 현재의 Learning Rate를 확인하는 Custom Callback (0) | 2023.08.30 |
[DL] Hyperbolic Tangent Function (tanh) (0) | 2023.08.13 |
[Util] ZoomIt (0) | 2023.05.20 |