Data Analysis & ML/시계열분석

[시계열분석] 시계열 변수(빈도/추세/계절성/주기/시계열분해/더미변수/지연값)

YSY^ 2021. 2. 19. 20:34

시계열분석은 어떤문제를 다루나

- regression, regulariRegularization Algorithms, clustering에서 주로 쓰며 ,Regression이 많이 쓰인다.

 

시계열 분석과 기계학습의 차이

  • 확률 과정(Stochastic Process): 상관 관계를 가지는 무한개의 변수의 순서열
  • 시계열 데이터(Time Series Data): 일정한 시간 간격으로 기록된 확률과정의 샘플
  • 독립변수(𝑥𝑡xt)와 알고자 하는 종속변수(𝑦𝑡yt)가 시간단위(𝑡t)를 포함
  • 모델의 출력(Output)은 𝑦y의 시간 𝑡t에서의 예측값
  • 기계학습과 시계열예측 간 큰 차이가 존재하기에, 시계열 변수생성은 약간의 조정들을 요구함

 

시계열 변수

신규 변수를 생성하는 것은 분석에서 가장 중요하고 시간이 많이 걸리는 작업

변수 생성 주의점
1) 미래의 실제 종속변수 예측값이 어떤 독립/종속변수의 FE에 의해 효과가 있을지 단정할 수 없음
2) 독립변수의 예측값을 FE를 통해 생성될 수 있지만 이는 종속변수의 예측에 오류증가를 야기할 수 있음

 

1. 빈도(Frequency)

계절성 패턴(Seasonality)이 나타나기 전까지의 데이터 갯수로 사람이 정해야 함

  • 계절성이 1년에 1회 나타날 경우(1년 1회, 분기 4회, 월 12회, 주 52회)
  • 계절성이 일(day)단위로 나타날 경우(주별 7회, 연 365회)

시계열분석을 위한 사용할 입력데이터는 년단위, 주단위, 일단위가 좋을지 모르기 때문에 다 해봐야한다. 하지만 아래 방법을 이용하면 파이썬에서 이를 자동으로 해준다. 

하지만 하나의 데이터를 가지고 빈도수를 바꾸게 되면 null값이 생길 수 있다. 예를들어 년단위 데이터인데 월단위로 바꾼다면 당연히 null값이 생길것이다. 아래 표는 이를 매꾸는 방법을 보여주는 표이다. 

따라서 frequency를 정확하게 입력했다면 yearly - monthly의 데이터가 자유롭게 바뀔수 있다. 

정리하자면 Frequency를 설정하는 이유는

1. 데이터가 어떠한 Frequency로 있는지 확인

2. Frequency를 바꾸어가면서 분석을 해야하는데 이를 자동으로 채워줌

3. 원 데이터에서 결측값이 있을 때 이를 채워주기 위해서

 

2. 추세(Trend, Tt)

시계열이 시간에 따라 증가, 감소 또는 일정 수준을 유지하는 경우

  • (수학적 이해)
    • 확률과정의 결정론적 기댓값 함수를 알아내는 것
    • 확률과정(Yt)이 추정이 가능한 결정론적 추세함수(f(t))와 정상확률과정(Yst)의 합
    • 𝑌𝑡=𝑓(𝑡)+𝑌𝑠𝑡

 

증가하는 추세

 

3. 계절성(Seasonality, St)

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

계절성을 가지는 데이터

 

4. 주기(Cycle, Ct)

  • 일정하지 않은 빈도로 발생하는 패턴(계절성)
  • 빈도가 1인 경우에도 발생 가능(𝑚m = 1)

 

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

시계열 분해

  • 추세와, 계절성, 추세와 계절성을 제거한 잔차(random)를 볼 수 있다.
  • Yt = T(추세) + S(계절성) + R(잔차)

 

6. 더미변수(Dummy Variables, Di)

  • 이진수(0 또는 1)의 형태로 변수를 생성하는 것으로 휴일, 이벤트, 캠페인, Outlier 등을 생성 가능
  • 생성법:
    1. 범주형 변수(Categorical Variable)의 기준값을 미리 결정 (ex. 계절일 경우 봄)
    2. 기준값을 제외한 채 더미변수를 생성 (ex. D1 = 여름, D2 = 가을, D3 = 겨울)
    3. 각 더미변수의 값을 0 또는 1로 채우며 1은 각 더미변수의 정의와 같음을 의미

확실한 패턴이 존재하는 경우에만 효과가 있으며 더미변수의 무분별한 추가는 오히려 모델의 오류를 증가시킬 수 있음

 

7. 지연값(Lagged values, Lagt(X1))

변수의 지연된 값을 독립변수로 반영하는 것으로, ARIMA/VAR/NNAR 등이 활용

만약 2017년 1월1일에 광고비를 집행했다면 이에 따른 매출변화는 몇일 뒤일 것이다. 이처럼 Xt가 매출로 발생하는데 시간이 걸리는 것이라면 시간정보를 반영하여 매출이 발생할것이라고 하는 시점으로 옮기는 것이다.

위 표에서 만약 1월6일의 데이터는 1월5일과 1월4일의 액션에 영향을 받게 하는 것이다.

즉, 시차, 시간에 따른 차이를 반영할 수 있다.

 

8. 시간변수

  • 시간변수를 미시/거시 적으로 분리하거나 통합하여 생성된 변수
  • 예를 들어 timestamp(ex. 0000-00-00 00:00:00)을 년월일 등으로 세분화 하는 것이다.
  • 요약:

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

 

 

 

 

해당 포스팅은 패스트캠퍼스의 파이썬을 활용한 시계열 데이터 분석 A-Z 올인원 패키지 강의를 듣고 정리한 내용입니다.

 

728x90
반응형