Time Series Model

시계열 데이터 - (one step ahead cross validation)

robin0309 2021. 7. 16. 22:16
  • 빈도(Frequency): 계절성 패턴(Seasonality)이 나타나기 전까지의 데이터 갯수로 사람이 정해야 함
  • Frequency 설정 이점 : 데이터의 시간차원중에서 사람이 지웠거나 실수로 빠졌거나 한 것들을 체크해줌 -> 빠진 것들을 NAN 설정

예시: 계설성이 1년에 1회 나타날 경우,

Datafrequency

Annual 1
Quarterly 4
Monthly 12
Weekly 52

예시: 데이터가 "일(Day)" 단위로 수집된 경우,

Seasonalityfrequency

Weekly 7
Annual 365

예시: 데이터가 "분(Minute)" 단위로 수집된 경우,

Seasonalityfrequency

Hourly 60
Daily 24 x 60
Weekly 24 x 60 x 7
Annual 24 x 60 x 365

빈도 설정을 위한 Python 함수 옵션:

AliasDescription

B Business day
D Calendar day
W Weekly
M Month end
Q Quarter end
A Year end
BA Business year end
AS Year start
H Hourly frequency
T, min Minutely frequency
S Secondly frequency
L, ms Millisecond frequency
U, us Microsecond frequency
N, ns Nanosecond frequency

MethodDescription

bfill Backward fill
count Count of values
ffill Forward fill
first First valid data value
last Last valid data value
max Maximum data value
mean Mean of values in time range
median Median of values in time range
min Minimum data value
nunique Number of unique values
ohlc Opening value, highest value, lowest value, closing value
pad Same as forward fill
std Standard deviation of values
sum Sum of values
var Variance of values
  • 추세(Trend, 𝑇𝑡Tt): 시계열이 시간에 따라 증가, 감소 또는 일정 수준을 유지하는 경우
    • (수학적 이해)
      • 확률과정의 결정론적 기댓값 함수를 알아내는 것
      • 확률과정(𝑌𝑡Yt)이 추정이 가능한 결정론적 추세함수(𝑓(𝑡)f(t))와 정상확률과정(𝑌𝑠𝑡Yts)의 합𝑌𝑡=𝑓(𝑡)+𝑌𝑠𝑡Yt=f(t)+Yts
      •  

  • 계절성(Seasonality, 𝑆𝑡St): 일정한 빈도로 주기적으로 반복되는 패턴(𝑚m), 특정한 달/요일에 따라 기대값이 달라지는 것
  • 계설정 반영 방법큰 크게 2가지: 수치값 그대로, 발생 시점으로 분리
    주기적 패턴이 12개월마다 반복(𝑚m = 12)

 

  • 주기(Cycle, 𝐶𝑡Ct): 일정하지 않은 빈도로 발생하는 패턴(계절성)
  •  
  • 빈도가 1인 경우에도 발생 가능(𝑚m = 1).

 

 

 

  • 시계열 분해(추세/계절성/잔차(Residual, 𝑒𝑡et)):

  • 지연값(Lagged values, 𝐿𝑎𝑔𝑡(𝑋1)Lagt(X1)): 변수의 지연된 값을 독립변수로 반영하는 것으로,ARIMA/VAR/NNAR 등이 활용

 

 

1/3일에 발생한 매출은 1/2일에 발생한 광고비와  1/3일에 발생한 광고비에도 영향을 미침

y=a1x1+a2lag1(xt)+a3lag2(xt)

근데 보통 p-value가 a1 과 a2는 유의하지 않다고 나옴

결국 -> y=a1x1+lag1(xt)+lag2(xt)

ex) Arimar/var/nnar에서 활용

  • 시간변수: 시간변수를 미시/거시 적으로 분리하거나 통합하여 생성된 변수
  • EX) 2010-10-05 -5:50  -> year/month/day/time  으로 바꾸는 것   
  • 장점: 1. 세분화 된 시간해석
    •   2. 예측 / 적합력에 훨씬 도움이 됨

 

 

* 시계열 데이터를 1스텝 교차 검사를 시키는 이유 (Time Series cross-validation 기법)

-> 비시게열은 통합적인 퍼포먼스 산출이 가능하지만 시계열은 

ex) 1,2월이 train ,3월이 Test일 때  3월 한달간 각각의 날짜마다 performance가 달라질 수 밖에 없음

-> 가까운미래는 예측력이 높지만 먼 미래는 예측력이 떨어짐

* one step 이 일반적이지만 one과 two step은 따로 모델을 만들어야하고 각각의 필요에 따라 (단기,장기예측) 진행

 

 

 

  • 가장 가까운 최근시점을 예측하고 그것을 다시 예측값에 넣어서 분석진행하는 방법
  • 요약:
    • 시계열 구성요소는 각 변수의 시간패턴을 파악하는데 중요
    • FE를 통해 생성된 변수의 입력(Input) 형태로 모형 선택을 하는데 필요
    • 생성된 변수의 패턴이 기존 모델에서 반영하지 않던 패턴이라면 예측 성능을 높임
    • 예측성능 향상 뿐 아니라 결과를 해석하고 해당 속성을 분석하며 가능한 원인 식별에 도움
반응형
반응형