BATS & TBATS
오늘은 BATS와 TBATS에 대해 알아본다. 여러개의 계절성을 가지는 시계열이 존재한다.
아래의 이미지를 보자. 전기 수요의 경우 9시부터 18시, 평일이 주말보다 높다. 이 경우 2가지의 계절성을 가진다.
2개 이상의 계절성을 가질 때, SARIMA(Seasonal ARIMA) 모델을 사용하면 안된다. 왜냐하면 애초에 SARIMA 모델은 단일 계절 주기를 가정하기 때문이다. 이를 처리하기 위해 BATS와 TBATS를 사용한다.
BATS (Box-cox, ARMA erros, Trend, Seasonal components)
BATS는 지수평활법( Exponential Smoothing)을 연장한 버전이다. 구체적으로 알아보자.
Box-Cox
- 평균과 분산을 안정화시켜, 정상성을 띄게 한다. 그리고 데이터를 정규분포에 가깝게 변환한다.
- 비선형 데이터를 다루기 위해 Box-Cox를 사용해 선형 데이터로 변환한다.
예) 매출과 광고 지출 간 관계가 지수적이라고 가정
-> 매출 = a * e^(b * 광고지출) : 비선형 관계인데, 여기에 자연 로그를 취해주자.
-> log (매출) = log ( a * e^(b * 광고지출))
-> log (매출) = log a + b * 광고지출 : 선형 데이터 변환 성공
ARMA errors
ARMA erros는 잔차에 있는 자기 상관을 포착하기 위해 사용한다.
ARMA
AR 모델과 MA 모델을 결합한 모델이다. AR은 '과거의 데이터가 현재 또는 미래에 어떤 영향을 미치는지'다. 예를 들어, 어제 더웠다면 오늘도 더울 가능성이 높다. 이런 식으로 AR은 과거 데이터가 현재 또는 미래에 어떤 영향을 끼치는지 분석하는 모델이다.
MA는 '과거의 오차가 미래에 어떤 영향을 미칠까'다. 여기서 말하는 오차는 실제값과 예측값의 차이다. 과거에 얼마나 잘못 예측했는지를 보고, 이게 현재의 데이터에 어떤 영향을 미치는지 분석하는 모델이다.
자기 상관
과거의 값이 현재의 값과 얼마나 관련이 있는지 측정하는 것이다. 예를 들어, "어제가 매우 더웠는데, 오늘도 더울까?" 어제와 오늘의 기온 사이에 관계가 있다면, 우리는 '자기 상관이 있다'고 한다.
Trend & Seasonal compoent
- 추세와 계절성 요소다. 추세는 시계열 데이터가 증가 또는 감소하는지에 대해 관심 있다. 계절성은 어떤 주기를 가지는지 확인하는 것이다.
정리해보면, BATS는 비선형 데이터를 처리해주고, ARMA 모델로 잔차 내 자기상관 문제를 해결한다. 또한, Trend와 Seasonal component를 사용한다.
그러나, 단점이 있다.
- 계절성 주기가 정수형일 때만 가능하다. 예를 들어, 계절성 주기가 168은 되는데 168.5는 안된다는 것.
- 계절성 주기가 매우 크면 모델 적합 시간이 오래 걸린다. 예를 들어, 한 시간씩 기록된 월별 데이터를 생각해보자. 월별 주기를 가질 때, 24h * 30 = 720의 계절성 주기를 가진다.
이후 BATS의 단점을 보완하는 TABTS 모델이 개발되었다.
TBATS (Trigonometric seasonality, Box-Cox, ARMA errors, Trend, Seasonal compoenents)
TBATS는 BATS의 단점을 보완한다. BATS와 유사하지만, 한 요소에서 큰 차이를 가져온다.
Trigonometric seasonality
- 계절성을 모델링하는 방법이며, 주로 삼각함수 (sin, cos)를 사용해서 계절성의 변화를 나타낸다.
- 삼각함수를 사용함으로써 계절 패턴의 크기와 위치를 유연하게 조정할 수 있다. 이는 계절적 변동성을 보다 정확하게 파악할 수 있게 한다.
예) 전력 사용량은 일간, 주간, 계절간 변화에 따라 달라질 수 있으며, 이런 복잡한 패턴을 Trigonometric seasonality 방법으로 모델링할 수 있다.
계절적 주기가 큰 경우 BATS보다 빠르게 모델 적합을 할 수 있으며, 계절성 주기가 정수형이 아니어도 사용 가능하다.
그러면, 실제로 어떻게 사용해볼 수 있을까?
예를 들어, 교통량 데이터를 생각해보자. 오전과 오후의 주기를 가지고, 평일과 주말의 주기를 가진다. 즉 2개의 계절성 주기를 가진다. 이 때 우리는 BATS와 TBATS를 사용해볼 수 있다. 파이썬 유저는 sktime에 BATS, TBATS가 있으니 사용해보면 된다.
결론
1. BATS와 TBATS는 다중 계절성을 가지는 시계열을 처리한다.
2. BATS는 Seasonal Periods가 짧고 정수형일 때 사용가능하다.
3. TBATS는 계절성을 삼각함수를 사용해 BATS를 보완하는 모델이다.
4. TBATS의 Trigonometric seasonality는 수식을 찾아보는 걸 추천한다.
'Algorithm' 카테고리의 다른 글
Algorithm - [Search Tree] (0) | 2023.01.11 |
---|---|
Algorithm - [Stack & Queue] (0) | 2023.01.11 |
Algorithm - [Asymptotic notation] (0) | 2023.01.10 |
Algorithm - [Sort Algorithm] (0) | 2023.01.10 |