AI/시계열

[시계열] 시계열 데이터의 패턴과 성능 평가, 이동 평균으로 간단 예측하기

공부하는 sum 2024. 1. 7. 19:10
728x90

 

시계열 데이터란?
  • 시간의 흐름에 따라 기록된 데이터
  • 일정한 시간 간격에 의해서 기록된 시계열도 있고, 그렇지 않은 시계열도 존재함

 

시계열 분석의 활용 분야
  • forecasting : 데이터를 기반으로 향후 수치를 예측
  • imputation : 과거의 비어있는 데이터를 채움
  • detect anomalies : 정상 패턴과 다른 형태를 나타내는 이상치를 탐지
  • spot pattern : 데이터 내 특정 패턴을 감지

 

시계열 데이터에서 자주 나타나는 패턴

 

  • 현실에 존재하는 시계열은 각 경우들을 조금씩은 가지고 있음

추세가있는 경우

  • Trend
  • 데이터가 증가하거나 감소하는 등 특정 방향으로 움직이는 경우
  • 꼭 선형적일 필요는 없음

 

계절성이 있는 경우

  • Seasonality
  • 패턴이 예측 가능한 간격으로 반복될 때 관측되는 것
  • 일정한 빈도로 발생 가능한 경우를 말함

 

자기상관이 있는 경우

  • Autocorrelation
  • 현재 시점과 지연된(lagged) 시점의 데이터간의 상관관계가 있는 경우
  • 자기상관이란, 특정 시점이 이전 시점과 얼마나 관련이 있는지를 나타내는 개념
  • 시간이 이전 단계에 의존성을 가지고 있기 때문에 '기억'을 가지고 있다고 표현하기도 함
  • 과거를 기반으로 예측할 수 없는 급등 현상에 대해서는 'inovation'이라고 부르기도 함

 

백색잡음인 경우

  • white noise
  • 예측이 불가능하고, 시간에 따라 무작위로 발생하는 값들로 이루어진 경우
  • 각각의 데이터가 독립적이고 어떠한 패턴이나 추세가 없음

 

시계열 데이터의 성능 측정

 

Train test split

  • 시계열에서도 train, valid, test set을 나눔
  • test에서 잘 나오면 test까지 학습을 시켜서 모델을 최종적으로 완성
  • 혹은 test set을 제외하고 train, valid로만 구성하기도 함
  • fixed partitioning과 roll-forward partitioning 등의 방법이 있음

 
Fixed Partitioning

 

  • 전체 시계열을 train, valid, test로 나누고 그것을 유지하는 방법

Roll-forward partitioning

  • 짧은 triaining기간에서부터 시작해서 조금씩 기간을 늘려나가는 방식

 

기준점 설정

  • 우리가 만든 모델이 잘 되었다는 기준은 어떻게 판단할 수 있을까?
  • 가장 간단한 방법은 1시점 전의 값을 그대로 가져다 사용하는 naive forecast를 사용할 수 있음
  • naive forecast결과는 상당히 잘 나오는 편임
  • 실제로 lstm과 같은 모델을 사용했을 때 naive forecast한 결과가 나오는 경우를 심심치 않게 볼 수 있다

 

평가방법

MSE(Mean Squared Error)

  • 예측값과 실제 값의 차이를 제곱하여 평균화한 값
  • 큰 오차에 민감

RMSE(Root Mean Squared Error)

  • MSE에 제곱근을 씌운 값
  • 예측 오차의 표준 편차를 나타냄
  • 오차의 크기와 방향을 고려하는 경우 사용

MAE(Mean Absolute Error)

  • 예측값과 실제값 차이의 절대값 평균
  • 큰 오차에 덜 민감함

MAPE(Mean Absolute Percentage Error)

  • 예측값과 실제값의 차이를 백분율로 나타냄
  • 상대적인 오차를 측정하는데 사용됨
  • 예측값이 0이거나 매우 작은 경우 값이 무한대로 발산할 수 있어 주의가 필요함

 

간단히 예측하기

 

이동평균을 이용하기

  • 가장 일반적이고 간단하게 예측을 수행할 수 있는 방법
  • 고정 시점의 평균값을 활용함
  • 잡음을 제거하는 효과가 있음

Centered Moving Average

  • 기본적으로 사용하는 건 Trailing Moving Average, 이전시점의 값만을 가지고 평활화 하는 방법
  • Centered Moving Average는 주어진 시점을 중심으로 양쪽으로 이동하는 창(window)을 사용하여 시계열 데이터를 평활화하는 방법
  • centered MA를 이용하면 과거 데이터만을 이용하여 이동평균을 구하는 것 보다 정확한 값을 얻을 수 있음
  • 하지만 미래 값을 알 수 없기 때문에 현재 값에는 사용하지 못함

 

이동평균에 차분을 이용하기

  • differencing, 차분이란 시계열에서 트렌드와 계절성을 제거하는 기법
  • t시점의 값과 이전 시점간의 차이를 연구하며, 이전 시점은 설정하기 나름

 


 
참고
https://otexts.com/fppkr/
https://www.coursera.org/learn/tensorflow-sequences-time-series-and-prediction


coursera 시계열 강의를 들으며 해당 내용을 정리해보았습니다.
이전에 많이 알려져있던 FPP와 비슷하면서도 더 최근, 다양한 내용들이 있어서 꽤나 흥미롭네요. 
2월 내로 완강해보려고 합니다!

728x90