인공지능 시계열 데이터 예측 기법들
최근의 미드 범죄 수사물을 보면, 얼굴 인식 기술을 활용해 CCTV에 잡힌 범죄자의 신원을 특정하는 것이 당연한 절차인 것처럼 느껴집니다. 알파고와 이세돌 9단의 대국을 보며 충격에 휩싸였던 것이 엊그제 같은데, 순식간에 인공지능은 우리 삶에 파고들어 있는 것 같습니다.
인공지능의 역사
1940년대 말부터 산발적으로 연구되던 인공지능의 가능성은 Marvin Minsky, John McCarthy, Claude Shannon, Nathan Rochester 같은 과학자들이 1956년 미국의 다트머스 대학에서 개최한 컨퍼런스를 통해 인공지능이라는 이름을 갖게 됩니다. 그러나 이들이 생각했던 인공지능의 개념은 상당히 추상적이고 포괄적인 측면이 있었는데, 인간의 지능과 유사한 특징을 지닌 복잡한 컴퓨터를 의미했습니다.
IBM의 엔지니어였던 Arthur Samuel은 체스 프로그램을 만들면서 메모리 사용을 최소화하기 위해, 말을 두는 자리에 따라 승률을 계산하여 승률이 가장 높은 자리를 선택하는 함수를 만들었습니다. 그 과정에서 생성된 모든 경우의 수들을 프로그램이 암기하도록 했는데, 1959년 여기에 머신러닝이라는 이름을 붙입니다.
1957년, 코넬 항공우주 연구소의 Frank Rosenblatt는 Arthur Samuel의 시도를 기반으로 초기 형태의 인공 신경망인 Perceptron을 개발했습니다. IBM 704라는 초기 컴퓨터에 탑재되어 이미지 인식 기능을 수행하도록 계획되었지만, 인식률이 저조했고 오류가 자주 발생하면서 기대했던 성능을 보이지 못했습니다. 결국 머신러닝에 대한 회의적 견해가 확산되면서 관련 연구들이 정체되는 계기를 제공하게 됩니다.
2013년, 구글은 토론토 대학의 Geoffrey Hinton 교수와 그 제자들이 2012년 설립한 DNNresearch라는 스타트업을 인수했습니다. DNNresearch는 뇌의 뉴런과 유사한 정보 입출력 계층을 활용해 데이터를 학습하는, 이른바 딥러닝 알고리즘을 개발하기 위해 설립된 회사입니다. 그는 새로운 학습 체계를 통해 과거 인공 신경망 기술의 한계였던 과적합(overfitting) 문제를 해결했고, 때마침 고성능 GPU가 출시되면서 연산에 소요되는 시간을 단축할 수 있게 되었습니다. 그리고 머신러닝은 다시 세상의 관심을 받게 됩니다.
통계 분석 기법
인공지능이 시계열 데이터의 예측에 적극적으로 활용될 수 있게 된 것은 인터넷 검색 엔진들, 모바일 통신사들, 신용카드 회사들이 축적한 빅데이터 덕분입니다. 빅데이터 분석에 필요한 엄청난 양의 연산은 인공지능이 해결해 주었습니다. 인공지능 시계열 데이터 예측 모델들은 전통적인 통계 분석 기법들에 기반을 두고 있는데, 이동평균, 지수평활, 회귀분석 기법이 가장 많이 활용되어 왔던 것 같습니다.
이동평균(moving average)은 수많은 시계열 데이터 값들 중 정해진 수의 직전 값들을 평균하여 시계열 패턴을 분석하는 기법입니다. 다른 변수의 영향을 고려하지 않고 과거 데이터 값들의 패턴만을 분석하는 것이기 때문에, 계산이 쉬운 반면 예측 모델로서의 성능이 높지는 않습니다. 평균을 구하는 데 있어 산술평균을 사용하는 경우를 단순이동평균(simple moving average)이라고 하고, 가중치를 적용하여 평균을 산출하는 경우를 가중이동평균(weighted moving average)이라고 합니다.
지수평활(exponential smoothing)은 가중이동평균과 유사하지만, 전체 시계열 데이터 값들을 사용하고, 최근 값에 '지수적으로' 더 큰 가중치를 부여한다는 차이가 있습니다. 이동평균처럼 계산이 쉬우면서, 불규칙적인 시계열 패턴 예측에는 더 큰 강점이 있습니다. 데이터에 추세와 계절성이 없는 경우 단순지수평활(simple exponential smoothing), 추세가 있는 경우 이중지수평활(double exponential smoothing), 추세와 계절성이 모두 있는 경우 삼중지수평활(triple exponential smoothing)이 사용됩니다.
회귀분석(regression analysis)은 이동평균이나 지수평활과 달리, 독립변수의 종속변수에 대한 영향을 고려할 수 있는 기법입니다. 회귀는 옛날 상태로 돌아가는 것을 의미합니다. 19세기 후반, 부모와 자녀의 키 사이에 선형적인 관계가 있으며 전체 키 평균으로 돌아가려는 경향이 있다는 Francis Galton의 가설에서 출발한 이후, 실증을 거쳐 함수 관계가 도출되면서 수학적 이론으로 정립되었습니다. 독립변수가 하나인 경우를 단순회귀분석(simple regression), 여러 개일 경우를 다중회귀분석(multiple regression)이라고 합니다.
독립변수를 어느 정도 특정할 수 있을 때에는 회귀분석이 가장 우수한 예측 성능을 보였기 때문에 가장 폭넓게 활용되어 왔습니다. 그러나, 가정과 변수에 따라 다양한 변형들이 존재하여, 성능에 커다란 차이가 나타나기도 합니다. 따라서, 모델들의 성능을 평가할 필요가 생겼고, 여기에 모델로부터 예측된 값과 실제 값의 차이를 의미하는 잔차(residual)가 사용되었습니다. 잔차가 정규분포에 따라 고르게 분산되어 있는지를 테스트하여, 0과 1 사이 값을 갖는 P-value가 0.05보다 작고, 마찬가지로 0과 1 사이 값을 갖는 R-squared가 1에 가까울수록 모델의 성능이 우수한 것으로 판단합니다.
인공지능 예측 모델
인공지능 시계열 데이터 예측 모델은 여전히 빠른 속도로 발전해가고 있고, 그 대부분은 회귀분석에 기반을 두고 있습니다. 머신러닝을 통한 시계열 데이터 예측 작업은 크게 새로운 데이터 값이 속하는 카테고리를 결정하는 분류(classification), 데이터 값들을 유사한 특성의 집단으로 묶는 군집화(clustering), 미지의 새로운 데이터 값 자체를 도출해내는 회귀(regression), 연산 속도를 향상시키기 위한 차원축소(dimensionality reduction)로 나뉩니다. 즉, 예측의 결과 값이 카테고리인 작업이 있는 반면, 숫자인 작업이 있는 셈입니다. 그리고 이러한 작업을 수행하는 모델들은 크게 Legacy, Classic, Topical로 분류될 수 있습니다.
Legacy 모델들은 초기에 개발된 것들로, 여전히 후속 모델들의 근간이 되고 있기는 하지만, 연산에 많은 시간이 소모되는 문제 때문에 지금은 많이 사용되지 않는 것들입니다. 여기에는 Recurrent Neural Network (RNN), Long Short-Term Memory (LSTM) 같은 모델들이 포함됩니다.
Classic 모델들은 널리 사용되면서 성능에 대한 검증이 완료된 모델들로, 현재 가장 보편적으로 활용되는 모델들입니다. 분류와 회귀 작업 모두에 사용되는 경우가 많은데, 다음과 같은 모델들이 포함됩니다.
Multi-Layer Perceptron (MLP)은 LSTM에 기반을 두고 개선된 것으로 하나의 데이터 값으로부터 여러 시점의 결과 값들을 예측하거나 여러 데이터 값들로부터 단일 시점의 결과 값을 예측합니다.
Autoregressive Integrated Moving Average (ARIMA)는 예측된 결과 값을 과거의 데이터 값과 예측 오류 간의 선형 관계에 대응시킨 모델로, 여기에 회귀분석과 이동평균의 원리가 함께 적용됩니다.
Bayesian Neural Network (BNN)는 과거의 데이터 값들에서 확률분포 함수를 결정하고, 함수의 결과 값과 실제 값을 비교하며 함수를 개선해가는 모델입니다. 예를 들어, BNN을 통해 질환과 증상 사이의 확률 관계를 나타낼 수 있고, 증상이 주어지면 다양한 질병의 존재 확률을 계산하게 됩니다.
Radial Basis Functions Neural Network (RBFNN)는 비선형 데이터 값들에 대한 함수를 추정해내는 모델로, 변수가 많지 않을 경우에 유용합니다. 웹사이트 일별 트래픽 예측에 널리 활용됩니다.
Generalized Regression Neural Network (GRNN)는 RBFNN에 기반을 두고 조금 더 넓은 범위의 변수들을 포함하도록 개선된 것으로, 비선형 데이터 예측의 새로운 대안으로 각광을 받고 있습니다.
K-Nearest Neighbor Regression Neural Network (KNN)는 여러 변수들의 영향을 받는 데이터 값들을 분류하는 데 강점이 있는 모델입니다. 유사한 속성을 갖는 공간의 인접 데이터 K개로 학습이 진행되는데, 인접 데이터 범위 결정에 상당한 시간이 소요된다는 문제가 아직 숙제로 남아있습니다.
Classification and Regression Trees (CART)는 값을 알지 못하는 변수로부터 결과 값 예측의 규칙을 찾아내는 모델입니다. 데이터 값의 속성이나 추세에 내재하는 변화 포착에 약점이 있습니다.
Support Vector Machine (SVM)은 주어진 데이터 값들을 바탕으로 하여 새로운 데이터 값을 분류하는 모델을 만듭니다. 이 모델은 데이터 값들을 좌표 공간에 표시하여, 가장 큰 거리를 보이는 경계를 찾아 카테고리를 나눕니다. 최근 비선형 데이터 분류에 있어 각광을 받기 시작했습니다.
Gaussian Processes (GP)는 BNN에 기반을 두고 개선된 모델로, 확률분포를 기반으로 하면서, 미리 설정된 확률분포 함수 없이도 다양한 결과 값들의 확률분포를 명시적으로 얻을 수 있습니다.
Topical 모델들은 비교적 최근에 개발된 모델들로, 다른 모델들과 함께 사용되면서 특수한 기능을 담당하는 경우가 많습니다. Convolutional Neural Network (CNN), Attention Mechanism, Transformer Neural Network, Light Gradient Boosting Machine (LightGBM), Decision Trees, XGBoost, AdaBoost 같은 모델들이 여기에 포함됩니다.
한편, 다양한 인공지능 시계열 데이터 예측 모델들이 존재하는 만큼, 이들에 대한 성능을 평가하는 방법 또한 다양합니다. 그중 특히 2개의 방법이 자주 활용되는 것 같습니다. 백분율 기반으로 오차율을 검증한다는 공통점이 있는데, 하나는 Mean Absolute Percentage Error (MAPE)로 실제 값과 예측 값의 차를 실제 값으로 나누어 오차율을 계산합니다. 다만, 실제 값이 0에 가까울 때, 오차율이 무한대에 가까워지는 문제가 있습니다. 이를 보완하기 위해 Symmetric Mean Absolute Percentage Error (sMAPE)로 실제 값의 절댓값과 예측 값의 절댓값 차를 이 둘의 평균으로 나누어 오차율을 계산합니다.
인공지능 데이터 예측 모델을 개발하여 활용하기 위한 인프라 구축에는 이미 상당한 진척이 있습니다. 우선, 개발에 있어 가장 보편적으로 사용되는 프로그래밍 언어는 단연 Python으로, 누구나 무료로 이용할 수 있습니다. 그리고 머신러닝 알고리즘을 Python 기반으로 개발하는 데 있어 참고할 수 있는 방대한 라이브러리도 준비되어 있습니다. 대표적으로, 역시 누구나 무료로 이용할 수 있는 Scikit Learn은 원하는 기능에 따라 라이브러리가 체계적으로 분류되어 있으며, 카테고리별로 API와 모듈들까지 제공하고 있습니다.
다만, 여전히 발목을 잡고 있는 부분은 중구난방인 실제 데이터들입니다. 인공지능 시계열 데이터 예측 모델들이 제대로 활용되기 위해서는 일관된 형식의 과거 데이터가 많아야 하기 때문에, 아직은 이른바 빅데이터를 축적한 분야와 기간에 국한되어 있는 것이 현실입니다. 물론, 지나간 역사를 다시 쓸 수 없는 것처럼, 다시 과거로 돌아가 데이터를 만들어 올 수 없는 일입니다. 그럼에도 불구하고, 사람의 경험과 인공지능 알고리즘이 적절히 결합된다면, 과거의 데이터를 역으로 예측해내는 것도 불가능해 보이지는 않습니다.