본문 바로가기
엑셈 경쟁력/전문가 기술기고

AI전문가, 강 인규 이사님이 들려주는 AI 이야기 - 시스템 관제 데이터 인공지능 분석 (시계열 분석)

by EXEM 2018. 6. 26.

 

엑셈 강남 인공지능 연구소에서는 2018년 초부터 시스템 관제 데이터에 대한 인공지능 분석과 관련된 작업을 수행하고 있다.

 

 


엑셈 강남AI연구소의 일차적인 목표는 엑셈이 가지고 있는 모니터링 솔루션(인터맥스/맥스게이지)에 인공지능 분석기능을 결합하여,


고객에게 전보다 자동화되어 편리하게 시스템을 통합 관제할 수 있는 기능을 제공하는 것이다.


 

이에 다음과 같은 여섯가지 기능을 목표로 작업을 진행하고 있습니다.

                                                                                                                                                                             


[1] 부하 예측 (Workload Forecast)

 

[2] 비정상 탐지 (Anomaly Detection)

 

[3] 장애 예측 (Failure Forecast)

 

[4] 부하 패턴 분석 (Workload Pattern Analysis)

 

[5] 인과 관계 분석 (Causality Analysis)

 

[6] 근본 원인 분석 (Root Cause Analysis)

                                                                                                                                                                             


 

오늘은 이 중에서 비정상 탐지 기능 구현을 위한 기반 기술인 시계열 분석에 대한 내용을 공유하려고 한다.

 

 

 

【시계열 분석이란 ?】 

 

시간의 흐름에 따라 분석 대상 데이터가 어떤 형태로 변화하는지를 분석하는 것이다.

 

 

 

분석 대상 데이터가 경향성(trend), 주기성(seasonality)를 나타내는지 확인하고 만약 데이터에 경향성이나 주기성이 있다면

이러한 특성을 이용하여 미래의 값까지 예측해 볼 수 있다.

 


우리가 사용하는 시스템 관제 데이터의 경우, 대부분 하루를 주기로 데이터가 주기성을 나타내는 경우가 많고, 주말 혹은 평일에 따라 서로 다른 양상을 보이기 때문에 이런 시계열 분석을 이용하면 다음날의 데이터 추세를 예측할 수 있고, 확률분포에 기반하여 실제 데이터가 예측값과 비교하여 차이가 많이 나는 경우 이를 비정상으로 보고 사용자에게 알람을 줄 수 있을 것이다.

 

 


본 문서에서는 Python을 이용하여 실제로 시계열 데이터를 분석하는 것을 설명할 예정이다. 특정 시스템(DB나 WAS)의 모니터링 데이터 대신,

최근 사람들의 관심을 많이 받고 있는 비트코인의 과거 가격 데이터를 분석하여 미래의 비트코인 가격을 예측하는 사례를 들어 설명할 예정이다.

 

 


단, 비트코인에 대한 가격 예측의 경우, 모델을 구성하기 위한 데이터 주기성이라든지 트랜드 등은 모두 글의 작성자가 임의로 선택한 값이기 때문에, 독자가 여기있는 내용을 기반으로 비트코인에 투자하는 것을 권하지 않고, 글의 작성자는 비트코인 투자에 대한 책임을 지지 않는 것을 명확히 해둔다.

 


 

우선 비트코인에 대한 가격 예측을 하기 위해서는 과거 데이터가 필요한데, 다행히 CoinGecko라는 사이트에서

2013년 4월부터의 비트코인의 USD 가격 데이터를 csv 형태로 다운받을 수 있다.

 

 


[ 데이터 출처 ]

 


비트코인 시세 차트 정보 출처 

 

https://www.coingecko.com/ko/

 

BTC-USD 데이터 (2013-04-28 ~ 2018-06-07) - btc-usd-max.csv


 

 

아래부터는 Python 코드를 직접 사용하여 시계열 분석하는 과정을 설명할 예정인데, 코드를 보기 어려운 경우에는 코드를 보지 않고 글만 읽더라도 시계열 데이터에 대한 분석을 어떻게 하는지에 대해 이해할 수 있을 것이다. 아래는 Python으로 시계열 분석을 하기 위해 필요한 라이브러리를 Import 하는 코드이다.

 

 

 


위에서 내려받은 데이터에 대해 우선 시각적으로 이해하기 위해 차트를 그려서 확인하면 다음과 같다.

단, 분석은 편의상 2017년 1월 1일부터 하기 위해  데이터의 앞부분을 잘라낸다.

 

 

 

 

 

[ 데이터 차트 (2017년 1월 1일 ~ 2018년 6월 7일) ]


 

 

 

비트코인 가격 데이터를 차트로 그리고 보니, 데이터 값이 지수 스케일로 증가를 하는 모양새이다.

분석의 편의를 위해 로그 스케일로 변환해보자.


 

 

 

 

[ 로그 스케일 (2017년 1월 1일 ~ 2018년 6월 7일) ]

 

 

 

 

로그 스케일의 데이터 차트를 보니, 데이터에 추세와 주기성이 어느정도 보이는 것 같다.

이에 대해 확인을 위해 STL Decomposition(Seasonal Trend Decomposition using Loses) 을 수행해본다.

 

 

 

 

[ STL  Decomposition ]

 

 

 

 

 

STL Decomposition은 시계열 데이터를 Trend와 Seasonal Component로 나누고 나머지를 Residual Component로 구분해주는 방식이다.

Decomposition을 수행할 때의 주기는 사용자의 입력을 받게 되어 있는데, 이번 분석에서는 작성자 임의로 63일을 주기로 사용했다. 

 


분석된 결과를 확인하면, Trend 자체는 2017년 12월 16일을 기점으로 최고점을 찍고 그 뒤로 완만한 하향세를 그리는 추세이고,

일부 주기성을 갖고 상승과 하강을 반복하는 모양을 나타내고 있다.  

 

 

이제, 비트코인 가격에 대한 추세를 확인했으니, ARIMA를 이용한 분석을 수행하도록 한다.

 

 

 

 

ARIMA는 Autoregressive Integrated Moving Average의 약자로, 1970년에 George Box와 Gwilym Jenkins가 개발한 자기회귀와 이동평균을 고려하는 시계열 분석 모형이다. (Box Jenkins 모형이라고도 한다. 여기서 Integrated는 차분을 이용하는 시계열 모형을 의미한다.)

 

 

ARIMA를 분석하기 위해서는 분석에 필요한 모형 파리미터를 결정해야 하는데, 분석을 많이 해보지 않은 사용자가 직관적으로 모형 파라미터 값을 결정하기는 힘들기 때문에, 아래에서는 여러가지 파라미터 값을 적용해서 계산후 가장 적합한 파라미터를 찾도록 한다.

 


 

 

 

위 코드 수행한 결과, 가장 AIC 값이 가장 작게 나오는 파라미터는 ARIMA(0, 0, 1)x(1, 0, 0, 63)으로 확인되었다.

여기서 AIC(Akaike Information Critera)이란 통계 모델이 얼마나 데이터에 잘 맞는지 그리고 얼마나 모델이 단순한지에 대한 평가 지표이다.

 

 


[ ARIMA 파라미터 찾기 ]

 

 

                                                                                                                                                                             

 

* ARIMA(0, 0, 0)x(0, 0, 0, 63) - AIC:2773.42309289084

* ARIMA(0, 0, 0)x(0, 0, 1, 63) - AIC:1920.0592765923088

* ARIMA(0, 0, 0)x(0, 1, 0, 63) - AIC:670.7812669178603

* ARIMA(0, 0, 0)x(0, 1, 1, 63) - AIC:625.4908107669571

* ARIMA(0, 0, 0)x(1, 0, 0, 63) - AIC:527.7086760864255

* ARIMA(0, 0, 0)x(1, 0, 1, 63) - AIC:460.57780794082373

* ARIMA(0, 0, 0)x(1, 1, 0, 63) - AIC:634.0389755642134

* ARIMA(0, 0, 0)x(1, 1, 1, 63) - AIC:627.4901156865175

* ARIMA(0, 0, 1)x(0, 0, 0, 63) - AIC:2059.139083871266

* ARIMA(0, 0, 1)x(0, 0, 1, 63) - AIC:1306.301430340262

* ARIMA(0, 0, 1)x(0, 1, 0, 63) - AIC:125.37137227818316

* ARIMA(0, 0, 1)x(0, 1, 1, 63) - AIC:156.5012219110579

* ARIMA(0, 0, 1)x(1, 0, 0, 63) - AIC:-0.007702231691581574

* ARIMA(0, 0, 1)x(1, 0, 1, 63) - AIC:-21.342298764273067

                                                                                                                                                                             

 

 

결정된 파라미터에 대해 ARIMA 모델을 생성하고 모델에 대한 간단한 진단 차트를 표시하면 다음과 같다.


 

 

[ Diagnostic ]

 

 

 

 

 

위에서 얻은 모델을 가지고 4월 26일부터의 비트코인 가격에 대한 예측은 다음과 같이 수행한다.

아래 차트는 4월 26일부터 최근 날짜까지의 실제 비트코인 가격과 예측 가격을 같이 그린 차트이다.


 

 

 

 

[ Dynamic Prediction ]

 

 

 

 

위의 그래프에서 2018년 1월 1일부터의 데이터를 확대해서 표시하면 다음과 같다.

 

 

 

 

[ Dynamic Prediction (Zoom) ]

 

 

 

 

본 글에서는 시계열 데이터를 분석하는 방법(STL Decomposition과 ARIMA)을 적용하여 비트코인 가격에 대한 예측을 하는 예제를 알아보았다.

약 한달간의 비트코인 가격에 대한 예측을 한 결과 어느정도 추세를 반영하여 실제 가격 그래프와 유사한 추세를 갖는 결과를 얻을 수 있었다. 

 

 

하지만, 이 분석에는 비트코인 가격이 자기회귀와 이동평균을 따라서 변동될 것이라는 가정비트코인 가격이 어느정도 주기성을 가지고 움직일 것이라는 가정하에 위와 같은 결과가 나온 것이기 때문에, 위 분석 내용을 근거로 실제로 비트코인에 투자하는 일은 없기를 바란다.


 

이번 글에서는 시계열 분석을 하는 한가지 사례로 대중적인 관심을 얻고 있는 비트코인의 가격에 대한 예측을 해본 것이고, 실제로는 엑셈 강남 인공지능 연구소에서는 아래 그림과 같이 어느 정도의 정확한 주기를 가지고 있는 시스템의 모니터링 데이터에 대한 시계열 분석 업무를 진행하고 있다.

 

 

 

 

 

 

강인규 이사님께서 이번 뉴스레터에서 "전문가 기술기고" 시스템 관제 데이터 인공지능 분석(시계열 분석)에 관하여 작성해주셨습니다.

 

바쁘신 업무 중 시간을 내어 기고문을 작성해주셔서 감사의 말씀 드립니다.

 

 

 

 

글 편집| 글로벌마케팅팀 캉 위에, 함승민

사진 편집| 디자인기획팀 김보명

 

댓글