brunch

You can make anything
by writing

C.S.Lewis

by gimmesilver Jul 22. 2016

회귀분석을 이용한 시계열 데이터 이상 탐지

 

1.   Introduction

  이상 탐지는 보안 분야에서 폭넓게 사용되는 기법이다. 외부에서의 공격자에 의한 시스템 공격, 내부자에 의한 정보 유출, 악성 유저의 어뷰징, 사기 행위 등을 탐지하기 위해 다양한 이상 탐지 기법이 개발되어 적용되고 있다. 기본적으로 이상 탐지는 정상적인 행위에 대한 사전 프로파일링 이후에 이런 정상 범주에서 크게 벗어나는 행위나 이벤트를 탐지하는 것을 말한다. 그런데 실제 이상 탐지를 위해 실전 데이터를 분석하면 정상적인 행위를 정의하기 매우 어렵거나 혹은 정상적인 행위와 비정상 행위를 구분할 수 있는 적절한 특질 데이터(features)를 확보하지 못하는 경우가 많다. 예를 들어, 탐지 대상 데이터가 다양한 특질로 구성된 경우가 아니라면 정상 데이터와 비정상 데이터를 구분할 수 있는 정보가 부족하여 비정상 케이스와 정상 케이스가 모두 비슷한 데이터로 이뤄지기 때문에 정확한 탐지가 어렵다. 반대로 데이터의 양에 비해 특질이 너무 많다면 앞선 경우와 반대로 대부분의 데이터가 제각기 다른 형태로 구분되기 때문에 정상 케이스와 비정상 케이스를 구분하기 어렵게 된다. 따라서 효과적인 이상 탐지를 위해선 충분히 많은 수의 데이터를 이용해 정상 케이스와 비정상 케이스를 구분하기 적절한 특질을 선별해야 한다. 그런데 실전에서는 이런 충분한 수의 데이터를 처리하고 적절한 특질을 선택하기 위해 많은 리소스가 필요하다.

  한편 본 연구에서 이상 탐지를 위해 다룬 대상은 시계열 데이터이다. 보통 시계열 데이터의 경우 특정 시간 주기 패턴을 파악하여 모델이나 룰을 만들고 이 패턴에서 크게 벗어나는 이벤트가 발생할 때 이를 이상 현상으로 탐지한다. 예를 들어 웹 서비스에서 발생하는 네트워크 트래픽은 보통 사용자의 생활 패턴에 따라 24시간 주기로 트래픽이 변한다. 따라서 만약 일반적으로 트래픽이 낮은 새벽 시간에 비정상적으로 높은 트래픽이 발생할 경우 이상 현상으로 탐지하는 것이다. 이런 방법은 비교적 구현이나 탐지 모델링이 단순하기 때문에 적용이 쉽지만 오탐이 많이 발생한다. 게다가 예로 든 웹 서비스 트래픽처럼 시간 주기 패턴이 명확한 데이터가 아니라면기존에 시계열 데이터에 많이 사용되는 기법을 적용하기 어렵다.  

  따라서 본 연구에서는 특정 시간 패턴을 갖지 않으며 데이터 양이 많지 않은 시계열 데이터에 대해서 효과적으로 이상 탐지를 하기 위해 예측 모델링을 이용한 탐지 기법을 제안한다. 만약 어떤 시계열 데이터가 있을 때 이 데이터와 상관성이 높은 다른 데이터를 이용하면 대상데이터의 수치를 비교적 정확히 예측하는 모델을 만들 수 있다. 그렇게 되면 정상적인 상황에서는 예측치와 실측치 사이의 오차가 작게 유지될 것이다. 그러나 만약 이상 현상이 발생한다면 정상 상황에서 생성한 예측 모델의 예측치와 이상 시점에서의 실측치 사이의 오차가 커질 것이다. 우리는 바로 이런 상황을 탐지하여 이상 현상이라고 판단하는 기법을 제안한다.

  예를 들어 웹서비스에서 시간 당 각 페이지의 방문자 수(Page View, PV)와 순 방문자 수(Unique Visitor, UV)는 서로 밀접한 관련이 있다. 따라서 PV를 predictor로 하고 UV를 response variable로 하는 예측 모델을 만든다면 PV 수치를 이용하여 UV의 예상치를 계산할 수 있다. 가령 A라는 웹 서비스의 과거 시간 당 PV와 UV에 대해 회귀 분석을 하면 아래와 같은 회귀 모델을 만들수 있다고 가정해 보자. 그러면 우리는 PV 수치를 이용하면 UV를 직접 측정하지 않더라도 아래 회귀식을 이용해 UV에 대한 추정이 가능하다. 


UV = 0.43 * PV + 0.1


  그런데 DDoS 공격과 같은 이상 현상이 발생한다면 평소에 비해 PV 대비 훨씬 큰 UV가 측정될 것이다. 그러면 이렇게 회귀식을 통해 예상한 UV 수치와 실측 UV 사이의 오차가 비정상적으로 커질 것이고 이를 통해 이상치를 탐지할 수 있다.

  본 연구에서 제안한 방법은 이상 탐지 대상이 되는 시계열 데이터 자체가 정상 상황에서 갖는 특성이나 패턴을 따로 분석할 필요가 없다.따라서 시계열 패턴이 명확하지 않거나 정상과 비정상을 구분하기 모호한 특성의 데이터에 대해서 적용 가능하다는 장점이 있다. 물론 적절한 예측 모델을 만들어야 하기 때문에 모든 경우에 보편적으로 적용할 수 있는 방법은 아니다. 다만 앞서 언급했듯이 대상 데이터 자체에서 이상 탐지를 위한 특성을 효과적으로 찾기 어려운 상황에서 주변 데이터를 활용하여 이상 탐지를 하는 것이 더 효과적인 도메인에 적합하다. 본 연구에서는 이 기법을 ETL 시스템 오류나 장애를 조기에 탐지하기 위해 적용하였고 실제 장애 발생 데이터를 이용하여 그 효과를 측정하였다. 

  이 논문은 다음과 같이 구성된다. 2장에서는 우리가 이상 탐지를 위해 사용한 데이터에 대해 설명한다. 3장에서는 기존에 알려진 이상 탐지 기법에 대해 소개하고 각 기법이 우리가 목표로 한 시계열 데이터의 이상구간을 탐지하는데 왜 적절하지 않은지 각각의 한계점에 대해 언급한다. 4장에서는 본 연구에서 제안하는 이상 탐지 기법에 대해 자세히 소개한다. 5장에서는 제안한 기법을 실제 데이터에 적용하여 탐지 성능을 측정한 결과를 보여준다. 마지막으로 6장에서는 전체 연구내용을 정리하였다.


2.   Data Description

    본 연구에서 이상탐지를 하고자 한 대상 데이터는 하루 단위로 집계되는 A사의 매출 관련 데이터이다. 데이터를 집계하는 ETL 시스템이 부분적으로 장애가 발생하여 일부 데이터가 집계에서 누락되었는데 이런 누락 데이터를 탐지하기 위해 이상 탐지 기법을 적용하고자 하였다. 그러나 이 데이터는 다음과 같은 특징 때문에 기존의 이상 탐지 기법을 적용하기 어려웠다.

장애로 인해누락된 데이터의 비율이 크지 않았다. A사의 ETL 시스템은 분산 시스템에 의해 집계 로직이 병렬로 실행되는데 전체 시스템 중 일부 모듈만 장애가 발생할 경우 집계 결과 상으로는 정상적인 상황에서의 매출 하락과 차이를 구분하기 어렵다.

시계열 패턴이 명확하지 않다. A사는 비정기적으로 진행하는 프로모션이나 이벤트로 인해 발생하는 매출의 비중이 매우높다. 따라서 일별 매출의 편차가 크고 시간 주기성이 뚜렷하지 않은 특성이 있다. 

이상 구간의 다른 데이터는 정상적으로 집계되었다. 매출과 관련된 여러 가지 집계 데이터 중에서 장애가 발생한 모듈의 집계 데이터만 누락이 발생했기 때문에 다른 매출 관련 집계 데이터는 정상적으로 수집되었다. 또한 A사는 매출 관련 집계 항목이 많고 각 항목 별 계산 방식이 복잡하기 때문에 특정 항목의 부분적인 오류를 감지하기 더 어려운 면이 있다.


<그림. 1> A사 매출 관련 시계열 데이터. 빨간색 타원으로 표시한구간이 적재 장애가 발생한 데이터


3.   Previous Approaches

  이 장에서는 기존에 시계열 데이터의 이상 탐지를 위해 널리 활용되는 기법들을 나열하고 각각의 한계점을 정리함으로써 본 연구에서 제안한 기법이 기존 방법의 한계점을 어떻게 극복할 수 있는지 소개한다. 


1)    Outlier detection

  기존의 데이터 분포와 비교해서 정상 데이터 분포에서 크게 벗어나는 데이터를 이상치로 탐지하는 방법이다. 정상 데이터의 편차가 크지 않고 정규 분포 형태에 가까울수록 효과적인 기법이다. 그러나 본 연구에서 사용한 데이터는 정상 구간 데이터 자체가 일별 편차가 큰 반면 이상 구간의 데이터가 정상 구간 데이터의 분포에서 크게 벗어나지 않는 특성을 갖고 있어 이 기법을 적용하기에는 적절치 않다.             


<그림. 2> outlier detection이효과적인 케이스
<그림. 3> 실험데이터에서 이상 데이터 구간 (빨간색 표시 부분) - 일반적인 outlier 분포와 다름


2)    Exponential Moving Average(EMA),Exponential Moving Standard Deviation(EMS)

  많은 시계열 데이터는시간에 따라 어떤 추세에 따라 상승하거나 하락하는 경우가 많다. 따라서 단순히 과거 데이터 분포를 보고 outlier 를 탐지한다면 점점 상승하거나 하락하는 추세를 갖는 시계열 데이터의 경우 시간이 갈수록 오탐율이 올라갈 것이다. 그래서 이런 추세 패턴을 반영하여 이상치를 탐지하기 위해 사용할 수 있는 방법이 이동 평균과 표준편차를 이용하는 이상 탐지 모델이다. EMA와 EMS는각각 아래와 같은 수식으로 정의한다.


EMA = w*EMA + (1-w)*x

EMS = sqrt(w*EMS^2 + (1-w)*(x-EMA)^2)


  이 기법은 특정 시점 이전까지의 데이터에 대해서 계산한 평균 혹은 표준편차와 해당 시점에 측정한 값 x를 이용해서 평균/표준편차를 갱신하는데 이 때 현재 시점의 값 x를 (1-w)만큼의 가중치로 반영하여 계산하는 방식이다. 따라서 w가 작을수록 최근 데이터의 영향력이 더 커진다. 이제 이렇게 구한EMA와 EMS를 이용하여 outlier detection 기준을 아래와 같이 정할 수 있다.


  Alarm = abs(x-EMA) > n * EMS (n은 사용자가 지정)


  이렇게 EMA와 EMS를 이용하면 시간에 따른 추세를 반영하여 outlier 를 탐지하는 것이 가능하다. 다만 seasonal 요소가 강한 시계열 데이터의 경우 정상 데이터의 주기적 특성과 이상 데이터의 경계가 불분명하여 잦은 오탐이 발생할 수 있다. 이런 문제를 피하기 위해 시계열 데이터를 시간 주기 특성에 따라 별도의 모델을 만들어서 적용할 수 있다. 가령 시간대마다 편차가 큰 웹 트래픽 데이터라면 EMA와 EMS를 각 시간대별 데이터로 분류하여 총 24개의 이상 탐지 모델을 만들어 활용할 수 있다.


3)    Seasonal decomposition of Time-series by Loess (STL)

  만약 대상 시계열 데이터가 seasonal 요소가 강한 데이터라면 위와 같이 주기에 따라 여러 개의 모델을 만들지 말고 STL 기법을 이용할 수도 있다. STL은 시계열 데이터가 갖는 시간 주기를 이미 알고 있는 경우 시계열 데이터를 seasonal, trend, remainder 요소로 분해하여 분석하는 기법이다. 아래 그림은 STL 을 이용하여시계열 데이터의 성분을 분해한 예이다.


<그림. 4> 시계열데이터를 seasonal, trend, remainder 요소로 분해한 예


  만약 대상 데이터의 시계열 성분이 정확히 분해된다면 remainder 데이터는 원래 정상 데이터가 갖는 seasonal 요소와 trend 요소가 분리된 나머지 데이터가 되는데 이것은 일반적인 상황이라면 단순한 variance error 이기 때문에 정규 분포 특성을 가질 것이다. 따라서 이 remainder의 평균 표준편차 대비 크게 벗어나는 시점의 데이터를 이상치로 탐지할 수 있다. 그러나 이 방법은 주기성이 없거나 약한 데이터에서는 사용할 수 없다.


4.   Methodology

  이 장에서는 예측모델을 이용해 이상 탐지를 하는 방법을 자세히 소개한다. 본 연구에서 제안하는 기법은 크게 예측 모델을 생성하는 단계와 이렇게 생성한 예측 모델을 이용해서 이상치를 탐지하는 단계로 나눌 수 있다. <그림. 5>는 우리의 이상 탐지 시스템 전체 프로세스를 도식화한 자료이다.


<그림. 5> 이상 탐지 시스템 전체 프로세스


1)    예측 모델 생성

  이상 탐지 대상데이터를 종속 변수로 하는 예측 모델을 생성한다. 본 연구에서는 다중 선형 회귀 모델을 이용하였다. 비록 예측 모델을 생성하는 목적이 예측 자체에 있는 것은 아니지만 효과적인 이상 탐지를 위해선 예측 모델 역시 높은 예측 정확도를 갖고 있어야 한다. 예측 모델의 성능에 가장 큰 영향을 주는 요소는 feature selection 이다. 이를 위해 우리는 대상 데이터와 관련 가능성이 높은 주변 데이터를 수집한 후 subset 기법을 이용하여 가장 대상 데이터에 대해 설명력이 좋은 (다시 말하면 adjust R^2 가 높은) feature sub set을 선택했다. 

  이렇게 선택한 특질들을 이용하여 아무런 장애가 발생하지 않았던 매출 집계 구간의 데이터를 학습 데이터로 사용해 회귀 모델을 생성하였다.  


2)    이상 탐지

  앞서 설명했듯이 이상 탐지를 위해 먼저 1)에서 생성한 예측 모델을 이용해 주변 데이터로 대상 데이터의 예상치를 생성한다. 이후 이렇게 생성한 예측치와 실측치 사이의 차이를 계산하여 이 값이 미리 설정한 신뢰 구간을 벗어나는 경우 이상치로 판단한다. 그런데 이렇게 단순히 예측치와 실측치 사이의 잔차만 이용한다면, 신뢰 구간을 지나치게 넓게 잡을 경우 부분적인 장애를 탐지 못할 수 있으며 반대로 미탐을 줄이기 위해 신뢰구간을 좁게 잡을 경우 지나치게 민감한 탐지를 하게 되어 오탐이 늘어날 것이다. 따라서 우리는 이상탐지를 아래와 같은 2 단계로 적용하였다.


a)    1차 이상 감지(잔차에 대한 신뢰 구간 이용): 회귀 모델을 이용해 예측치와 해당 예측치에 대한 상/하한 신뢰 구간을 생성한다. 만약 실측치가 이 상/하한 선을 벗어나면 이상 데이터로 판단한다. 다만 이 경우 과도한 오탐을 방지하기 위해 신뢰 구간을 충분히 넓게 선정한다.


<그림. 6> 예측치에대한 상/하한 구간을 이용하여 이상 데이터 검출


b)   2차 이상 감지(잔차의 누적치에 대한 이상 탐지): 잔차의 누적치가 임계치를 벗어날 때를 이상치로 탐지한다. a) 단계에서 오탐을 줄이기 위해 신뢰 구간을 넓게 잡으면 반대로 약간의 장애로인한 이상치를 정상 데이터로 생각하는 미탐 케이스가 늘어난다. 따라서 신뢰 구간 이내에서 지속적으로 발생하는 이상치를 탐지하기 위해 잔차의 누적치를 이용한다. 일반적으로 예측 모델과 데이터가 정상인 상황이라면 예측치와 실측치 사이의 차이값인 잔차는 해당 모델의 bias error를 기준으로 +/- 값이 임의적으로 발생한다. 따라서 잔차를 계속 누적해 나가면 이 값이 서로 상쇄되기 때문에 일정 수준 이상 값이 커지지 않는다. 그러나 2장에서 소개한 사례와 같이 시스템 장애로 인해 이상 데이터가 지속적으로 발생한다면 잔차는 특정 방향으로 편향되어 값의 크기가 계속 커질 것이다. 따라서 잔차 자체는 신뢰 구간 내에서 움직이더라도 잔차의 누적치는 어느 시점이 지나면 정상 구간을 크게 벗어날 것이다. 예를들어, <그림. 7>은 정상 데이터에 대한 잔차와 시스템 장애로 인해 일부 데이터가 누락된 상태에서의 잔차의 변화와 그 누적치를 비교한 시계열 자료이다. 정상데이터(왼쪽)의 경우 잔차의 누적치가 0에서 크게 벗어나지 않는 반면 이상 데이터(오른쪽)의 경우 잔차가 음수로 계속 발생하면서 누적치가 점점 음의 방향으로 커지는 것을 확인할 수 있다.


<그림. 7> 잔차의누적치 비교 (좌: 정상 기간의 잔차 누적치 변화, 우: 장애 발생 기간의 잔차 누적치 변화)


5.   Experiments

  실험에 사용한 데이터는 2장에서 설명했듯이 A사의 매출 데이터 및 관련자료이다. 해당 자료는 1일 단위로 집계되면 매월 한번씩 정산하는 프로세스를 갖고 있다. 매출 자료는 여러 가지 항목으로 구성되는데 상품별 판매 및 환원 금액 등으로 구성되며 이와 관련해서 결재 건수나 구매한 상품 개수 등의 보조 자료도 같이 집계된다. 또한 매출과 직접 연관된 자료는 아니지만 상관성이 높은 서비스 관련 수치나 프로모션 관련 정보 역시 예측 모델에 사용될 수 있다. 비록 이상 탐지를 위해 고려할 만한 특질들은 많이 존재하지만 실험 데이터는1일 단위 집계 데이터이기 때문에 그 양이 수백 개 정도 밖에 되지 않는다. 따라서 차원의 저주를 피하기 위해선 많은 수의 특질을 사용할 수 없다. 참고로 실험에 사용한 데이터와 사용 변수는 민감한 정보이기 때문에 구체적으로 밝힐 수 없어서 이 장에서는 구체적인 항목명 대신 임의적으로 정한 변수명만 사용하겠다. 


1)    Feature selection &modeling

  적절한 모델을 만들기 위해 이상 탐지 대상 항목과 연관성이 높다고 판단한 12개 변수 중에서설명력이 가장 높은 변수들을 선정하였다. 이를 위해 각 부분 집합에 대해 adjust R^2 를 측정했으며 이 값이 가장 큰 부분 집합 중 가장 적은 개수의 변수로 구성된 항목을 선정하였다. 선정 결과는 <그림.8> 에 나와 있다. 


<그림. 8> X축은 예측 변수, Y축은 각 부분 집합을 선택했을 경우 측정되는 adjust R^2 값을의미한다. 빨간색 라인에 있는 변수 집합이 최종 선택한 변수들이다. 


2)    Evaluation 

    생성한 모델을 이용하여 실제 장애가 발생한 구간과 정상 구간에 대해 테스트하여 오탐/미탐률을측정하였다. 4장의 <그림. 5>에 나와 있듯이 두 단계의 이상 탐지를 통해 측정된 미탐/오탐율은 아래와 같다. 


장애 발생구간을 정상으로 탐지한 비율(미탐율): 2%

정상 구간을장애 발생으로 탐지한 비율(오탐율): 7%


<그림. 9> 실험데이터에 대한 1단계 이상치 탐지 결과와 2단계 누적 잔차탐지 결과
<그림. 10> 장애발생 구간과 정상 구간의 이상 탐지 결과 (빨간색: 이상치로탐지한 데이터, 파란색: 정상으로 판단한 데이터)


6.   Conclusions

  본 연구에서는 일부 시스템의 장애로 인해 오류가 발생한 시계열 데이터의 이상 여부를 조기에 효과적으로 파악하기 위한 이상 탐지 기법을 제안하였다. 기존에 많은 이상 탐지 기법들이 있지만 대부분의 이상 탐지 기법은 정상 데이터와 이상 데이터를 효과적으로 구분하려면 패턴 탐지에 많은 비용이 들며 효과적인 탐지를 위해선 대규모 데이터가 필요한 경우가 많다. 그러나 본 연구에서 제안한 방법은 주변 데이터를 이용한 예측 모델링을 통해 비교적 적은 데이터에 대해서도 이상 탐지를 할 수 있다. 특히, 대상 데이터 자체가 정상과 비정상을 구분하기 힘든 반면 주변데이터와의 상관성이 높은 특성을 갖고 있는 경우 매우 효과적으로 적용할 수 있다. 또한 단발성의 이상치 발생 경우가 아니라 시스템의 부분적인 장애와 같이 그 영향력이 지속되는 경우에 특히 효과적이다.

  이렇듯 본 연구에서 제안한 기법은 범용적인 이상 탐지 기법이라고 볼 수는 없지만 위에서 정리한 특정 영역에서는 다른 이상 탐지 기법보다 매우 적은 리소스만으로 효과적으로 실전에 적용할 수 있다는 장점을 갖고 있다. 여기서 제안한 기법은 실제 A사에서 ETL 시스템의 부분적인 장애를 조기에 탐지하기 위해 실전에 적용하여 서비스 중에 있다. 


7.   References

[1]    A. Kejariwal,“Introducing practical and robust anomaly detection in a time series”, https://blog.twitter.com/2015/introducing-practical-and-robust-anomaly-detection-in-a-time-series 

[2]    I. Flaounas,“Data Science tricks: Simple anomaly detection for metrics with a weekly pattern”, https://medium.com/@iliasfl/data-science-tricks-simple-anomaly-detection-for-metrics-with-a-weekly-pattern-2e236970d77?imm_mid=0e0878&cmp=em-data-na-na-newsltr_20160217#.f3gxz4kad 

[3]    A. Patcha, J. M.Park, “An overview of anomaly detection techniques: Existing solutions and latest technological trends”, Computer networks 51. 12 (2007): 3448-3470 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari