시계열분석은 어떤문제를 다루나
- 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 등을 생성 가능
- 생성법:
- 범주형 변수(Categorical Variable)의 기준값을 미리 결정 (ex. 계절일 경우 봄)
- 기준값을 제외한 채 더미변수를 생성 (ex. D1 = 여름, D2 = 가을, D3 = 겨울)
- 각 더미변수의 값을 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 올인원 패키지 강의를 듣고 정리한 내용입니다.