머신러닝을 이용한 시계열 예측(Part-1)

JungKap Park
XBrain
Published in
9 min readNov 12, 2020

시계열 예측 (time-series forecasting)이란 무엇인가요?

시계열(time-series) 데이터란 시간의 흐름에 따라 순차적으로(sequentially) 기록된 데이터를 가리키며, 관찰된 시계열 데이터를 분석하여 미래를 예측하는 문제가 바로 시계열 예측 문제입니다. 시계열 예측 문제는 우리 주변에서 흔하게 접하는 문제로써 주요 경제 지표를 예측하거나, 어떤 상품의 수요를 예측하는 문제에 이르기 까지 다양한 어플리케이션을 가지고 있습니다. 특히 예측된 결과를 바탕으로 여러 정책이나 비지니스 전략을 결정하는 과정에 활용되기 때문에, 실제 비지니스 영역에서는 시계열 예측 문제가 매우 중요하게 여겨지고 있습니다. 일례로 McKinsey Global Institute의 연구에 따르면, 시계열 데이터가 텍스트나 이미지 데이터 보다 더 큰 잠재적 가치를 가지고 있다고 보고있습니다 (Figure 1).

Figure 1. 데이터 유형에 따른 잠재적 인공지능 활용 가치 (Source: McKinsey Global Institute analysis)

시계열 예측 문제의 주요 챌런지

무엇보다 시계열 문제가 어려운 점은 불확실한 미래를 예측한다는 것입니다. 예측값은 결코 완벽할 수 없으며, 항상 변동의 가능성을 내포하고 있습니다. 따라서 시계열 예측에 있어서는 불확실성(uncertainty)이 고려되어야 합니다. 다시 말해 예측값에 대하여 적합한 확률 분포 모델(probability distribution)이 고려되어 합니다. 단순히 어떤 예측 값을 제공하기 보다는 그 예측값의 불확실성(또는 신뢰도)에 대하여 정량적인 평가가 함께 고려되어야 예측 모델로써 더욱 가치가 있습니다.

두번째로, 시계열 데이터에 숨겨진 여러 형태의 패턴을 찾아 학습하는 문제입니다. 보통, trend, seasonality, cycle 등의 유형으로 패턴을 구분하곤 합니다. 대게의 시계열 데이터에는 이러한 패턴이 복잡하게 섞여있고 데이터 길이가 불충분 하거나, 노이즈, 아웃라이어 데이터로 인해서 손쉽게 패턴을 구분해 내어 찾기가 어렵습니다.

세번째로, 과거에는 주로 단변량의 시계열 데이터 (univariate time-series)의 분석과 예측 문제가 주로 다루어졌지만 근래에는 다변량 시계열 데이터 (multiple time-series)를 다뤄야 하는 경우가 많아지고 있습니다. 순차적으로 관찰된 수많은 변수들에 대하여, 이 변수들간에 상관 관계를 학습할 수 있어야 합니다. 가령, 어떤 상품의 수요가 다른 상품들의 수요 변화에 영향을 받거나, 어떤 지역의 택시 수요가 다른 지역의 택시 수요와 일정한 시간 차이을 두고 상관 관계를 보일 수 있습니다. 이 변수가 적게는 수백에서 많게는 수백만에 이를 수 있으므로, 이를 효율적으로 처리, 학습할 수 있는 알고리즘이 매우 중요해 지고 있습니다.

마지막으로, 시계열 데이터에는 노이즈 데이터 또는 관찰되지 못한 기간이 종종 존재합니다. 이는 측정하고 데이터를 기록하는 과정에서의 오류나 예측치 못한 상황으로 인해 발생할 수 있습니다. 예를들어 상품의 품절로 인하여 장기간 판매량이 없는 경우, 해당 상품에 대한 실제 수요를 판매량으로 유추할 수 없는 경우가 그것입니다. 시계열 예측 문제에 있어서는 이에 대한 적절한 전처리 과정이 매우 중요합니다.

시계열 예측 모델의 평가

일반적으로 supervised machine learning 모델은 데이터 셋을 학습 데이터와 테스트 데이터를 랜덤하게 나누어 평가가 이루어 집니다. 하지만 시계열 예측 문제는 평가와 학습 대상의 데이터를 특정 시간 기준으로 엄밀하게 분리시켜, data leak이 없이 평가가 이루어져야 합니다 (chronological testing). 가령 시계열 데이터의 중간 구간을 잘라내 테스트용으로 쓰고, 그 이전과 이후를 학습용으로 사용하면 정확한 평가가 이루어질 수 없습니다. 학습 데이터는 반드시 테스트 데이터 보다 이전에 관찰된 것이어야 합니다.

모델링 과정에서는 최선의 성능을 가지되 robust한 모델을 찾기 위하여 cross validation을 통해 성능 평가를 합니다. 제한된 데이터 셋으로 부터 여러 쌍의 학습 및 테스트 데이터를 샘플링해서 모델의 성능이 기대치에 부합하며, 안정적인지를 확인하게 됩니다. 시계열 예측 모델에서는 앞서 언급한 chronological testing 기준을 지키며 cross validation을 할 수 있는 방법으로 크게 두가지가 고안되어 있습니다. 첫번째로 sliding window 방법은 고정된 사이즈의 2개의 window를 움직여가며 학습과 테스트 데이터를 추출하여 cross validation 을 하는 방법입니다. 다른 방법으로는 time-series 데이터 길이가 충분치 않을 때 유용한 방법으로써 expanding window 방법이라 불립니다 (Figure 2).

Figure 2. Cross-validation for time-series forecasting model (Source: https://eng.uber.com/forecasting-introduction/)

시계열 예측 모델의 평가는 문제에 따라 다양한 지표가 활용될 수 있습니다. Root Mean Squared Error (RMSE) 또는 Mean Absolute Percentage Error (MAPE)가 많이 사용되는 지표입니다. 일반적으로 baseline 예측 모델 (e.g. 최근 평균값으로 예측)과의 비교가 매우 유용합니다. 머신러닝을 도입하기 이전의 다소 단순한 방식과의 비교를 통해 개발된 예측 모델의 도입 효과를 가늠해 보곤 합니다. 예측 모델의 평가는 특정 성능 지표 뿐만 아니라 residual error의 분포, 시간축에 따른 에러의 propagation 패턴을 분석하여 모델에 bias가 있는지 혹은 overfitting 여부 등에 대한 검토가 반드시 필요합니다.

주요한 시계열 패턴

전통적으로 시계열 데이터를 분석할 때 보통 trend, seasonality, cycles 그리고 random noise의 패턴으로 분류하여 분석합니다 (Figure 3). Trend는 전체적으로 긴구간에 걸쳐 일정하게 증가 또는 감소하는 패턴을 가리킵니다. Seasonal component는 규칙적인 주기에 따라 반복되는 패턴을 나타내며, 주기가 규칙적이지 않지만 wave형태로 반복되는 패턴을 cyclical component로 분류하여 분석합니다. Trend, seasonality, cycles를 제외한 그외 불규칙한 fluctuation은 random component 로 분류합니다.

Figure 3. Decomposition of time-series data (Source: Forecasting: Principles and Practices)

일반적으로 전통적인 시계열 분석 모델에서는 이 4가지 유형이 패턴이 linear한 조합으로 이루어진 모델 (additive model)을 가정합니다. 간혹 seasonal 또는 cyclic 패턴의 변동폭이 시계열 값의 크기에 따라서 함께 변하는 경우 multiplicative model을 가정하기도 합니다. 분석 모델안에서 패턴이 어떻게 구성 되느냐에 이어서, 개별 component에 대한 수학적인 모델 또한 매우 다양합니다. 주어진 시계열 데이터에 맞는 모델을 찾아가는 과정이 예측 모델을 만들어 가는 과정이라고 볼 수 있습니다.

대표적인 전통 시계열 예측 모델: ARIMA

전통적으로 시계열 데이터에서 패턴을 추출하고 그 패턴을 이용하여 미래를 예측하는 모델로 Autoregressive integrated moving average (ARIMA)가 있습니다. ARIMA 모델은 크게 세가지 component로 조합되어 만들어진다고 볼 수 있습니다. 먼저, Autoregressive 는 예측 시점(t-0)이 과거 p 개의 데이터 포인트(t-1, t-2,…, t-p)와 연관이 있다는 의미입니다. 일련의 과거 관측값을 이용하여 미래의 값을 예측하는 regression 모델인 것입니다. Moving average는 과거의 예측 에러를 예측 대상과 연관 시키는 component입니다. 가령 autoregressive 모델로 미래를 예측함에 있어서, 과거의 에러들을 고려하여 그 예측값을 보정하는 역할을 한다고 볼 수 있습니다. 마지막으로 integrated의 의미는 non-stationary time-series 의 데이터를 differencing을 통해 시간에 따라 데이터의 통계적 특성(e.g. 평균, 표준편차)이 변하지 않는 stationary time-series 데이터로 변환하는 모델을 의미합니다. 적합한 ARIMA 예측 모델을 만들기 위해서는 differencing order 조절하여 데이터로부터 non-stationarity 를 반드시 제거해야 합니다.

ARIMA 모델은 추가적인 component를 고려함으로써 다양한 형태로 변형, 발전될 수 있습니다. 예를들어 추가적인 seasonal component를 고려하는 SARIMA가 있으며, univarite time-series가 아닌 추가적인 covariates를 함께 고려하여 예측을 할 수 있는 ARIMAX 모델이 존재합니다. 물론, 이 두가지를 모두 혼합한 SARIMAX 모델도 사용되곤 합니다.

Part-1을 마무리하며…

학계에서는 텍스트나 이미지 데이터에 대한 deep learning 알고리즘에 대한 연구가 활발히 이루어지고 있지만, 산업에서는 시계열 데이터의 중요성이 나날이 높아지고 있습니다. 매일 생산되는 다양한 지표를 분석하여, 중요한 비지니스 결정을 도출하는 과정에 머신러닝을 도입하고자 하는 시도가 늘어나고 있습니다. 이에 맞춰 시계열 예측 문제에 특성화된 다양한 머신러닝 알고리즘은 물론이고, 데이터 분석가들이 클라우드 환경에서 예측 모델을 손쉽게 개발하고 배포할 수 있는 플랫폼이 개발되고 있습니다 (e.g., Amazon Forecast, Automated ML Time-series Forecasting at Microsoft Azure, Time Series Forecasting with Google Cloud AI Platform).

Part-2에서는 최신의 시계열 예측 알고리즘과 연구 동향을 소개하고, 엑스브레인에서 시계열 예측 알고리즘과 AutoML기술의 융합에 관한 연구개발을 소개할 예정입니다. 많은 관심 부탁드리며, 시계열 예측 문제 모델링과 나아가 알고리즘 개발에 관심있는 분은 apply@xbrain.team 으로 연락 바랍니다.

Xbrain Machine Learning Engineer 채용 페이지

--

--