본문 바로가기
Machine Learning

38. 이상(사기) 탐지 : Anomaly Detection System 개요

by 대소니 2016. 8. 24.

Anomaly Detection

우리가 사용하는 dataset에는 수많은 데이터들이 있습니다. 이중에서 모든 데이터가 정상일 수도 있지만 그렇치 않을 수도 있을 것입니다. 이제부터는 특정 데이터가 이상이 있는지를 파악하기 위한 방법에 대해서 알아보고자 합니다.

이상한(비정상적인) 데이터를 검출하는 것을 Anomaly Detection 이라고 합니다. 아래 그림에서와 같이 예를들어서 살펴보겠습니다. 비행기 엔진을 만드는 제조사를 생각해보겠습니다. 엔진은 열이 높아짐에 따라서 엔진의 회전이 빨리질 것이라고 생각해볼수 있을 것입니다. 아래 그래프의 데이터들과 같이 분포되어 있는 것을 볼 수 있습니다. 이때 녹색의 x 데이터와 같이 다른 데이터들과 밀접한 부분에 존재하는 경우는 정상적인 데이터라고 볼수 있으나 나홀로 포지션에 위치해 있는 데이터 x는 뭔가 이상하다는 것을 알 수 있습니다. 이 데이터가 바로 anomaly data가 되겠습니다.


m 개의 dataset이 아래와 같이 있을때 x test 데이터가 anomalous 인지를 어떻게 판단할 수 있을까요? 바로 p(x)라는 모델을 이용해서 확인을 할 수 있습니다. 이 함수는 데이터들의 밀도를 이용하는 함수가 될 것입니다.(Density estimation) 

이 p 함수는 이 데이터가 정상적인 데이터일 가능성(probability)을 의미합니다. 이 함수를 사용해서 데이터를 확인을 한 결과 값이 어떤 특정한 값(ε)보다 작을 경우에는 이 데이터는 비정상적이다(flag anomaly) 라고 판단할 수 있습니다. 물론 그 반대의 경우에는 정상적인 데이터가 되겠지요


이러한 이상 탐지 알고리즘이 활용되는 분야는 다음과 같습니다.

- 사기 탐지 : 웹사이트의 많은 사용자들 중에서 특별하게 이상한 행동을 취하는 사용자를 판별하여 문제 있는 사용자를 파악합니다.
                    이때 다양한 features들을 만들 수 있습니다.(로그인 여부와 위치정보나 행동 패턴이 유사한지, 접속시간등)
                    만약 이상하다고 판단이 되면 해당 사용자를 block 처리 하여 다른 문제가 발생하는 것을 방지할 수 있겠습니다.

- 생산제품 QA : 제조한 물건에 이상 또는 불량 여부를 확인하는데 활용될 수 있습니다. 위의 예제와 비슷하지요

- 모니터링 : 데이터 센터에 수많은 컴퓨터들을 모니터링하여 메모리, 디스크, CPU 사용등에 대한 문제가 발생할 소지가 있는
                   항목들을 모니터링 하는데 활용이 가능합니다. 아마존 같은 클라우드 서비스에서 사용이 가능하겠습니다


Gaussian Distribution

이번에는 Gaussian Distribution(가우스 분포)에 대해서 알아보겠습니다. 또는 Normal Distribution(정규분포) 라고도 합니다.

어떤 x data에 대해서 이 데이터들이 가우스 분포를 따른다면 평균값이 되는 u(mu)와 분산인 σ^2(sigma squared)로 표현이 될 수 있습니다. 여기서 sigma(σ) 를 standard deviation(표준편차)라고 하고 σ^2 은 variance(분산)이라고 합니다.

이것을 공식으로 표현을 하면 다음과 같이 표현이 가능합니다. ~ 의 기호는 어떤 분포를 따르고 있다는 것을 의미합니다.

X ~ N(μ,σ^2 )

이것을 그래프로 그리면 하단의 모습과 같이 나타납니다. 분포의 중심점이 u가 되고 분포의 넓이가 σ 만큼 넓어지게 됩니다. 이것을 수학적으로 표현을 하면 p(x; u, σ^2) 의 공식과 같이 연산이 가능합니다. 이것은 가우스 분포의 곡선을 나타내는 함수가 됩니다.


두가지 변수가 변할 때 분포도가 어떻게 변하하는지 알아보겠습니다. 아래 그림의 4가지의 경우와 같이 u 의 값을 중심축으로 하여 분포 그래프가 만들어지고 sigma의 값의 크기에 따라 분포도의 넓이가 커지거나 작아지거나 하는 것을 알 수 있습니다.


x data의 데이터들로 부터 가우스 분포를 찾아낼 수도 있습니다. x 데이터가 하나의 축에 아래 그래프와 같이 나열이 되어 있다고 생각해보겠습니다. 그러면 파란색 분포 그래프와 같이 대략적으로 이런 분포를 보일 것이다 라고 추정을 할 수 있습니다.

더 정확히는 하단의 공식으로부터 두가지 변수인 μ 와 σ의 값을 찾을 수도 있습니다.

μ 는 중심점이므로 모든 데이터의 평균 값이 될 것이고 (아래 그림의 왼쪽의 파란색 공식)
σ 는 각 데이터들이 중심점과의 거리 제곱에 대한 평균 값이 됩니다. (아래 그림의 오른쪽 파란색 공식) 이때 m 으로 나누는 것이 일반적이기는 하지만 다른 강의에서는 m-1 을 사용할 수도 있습니다. m 의 값이 충분히 크기 때문에 두가지 값에 대한 큰 차이는 없으니 때에 따라서 두가지 중 하나로 쓰인다는 것을 알고 있으면 되겠습니다.


Algorithm

x data에 대한 training set이 있다고 생각해보겠습니다.

x data가 가지고 있는 n 개의 features에 대하여 각 feature 마다 고유한 분포를 이루고 있을 것입니다. 이 모든 features의 가우스 분포를 곱하면 p(x)가 됩니다. 아래 그림의 분홍색 박스 안에 공식과 같이 표현이 됩니다. 이것을 좀 더 심플하게 표현을 한 것이 바로 아래줄의 대문자 PI로 이루어진 공식이 됩니다.

Summation은 모든 값의 합을 의미하는 기호이며,  PI (Π)는 모든 값의 곱을 의미하는 기호입니다. 그러므로 j 번째 feature에 대한 p 함수들의 곱이 되겠습니다.

이렇게 어떤 분포를 형성하는 것을 density estimation 이라고 합니다.


지금까지 배운 내용을 정리하여 Anomaly detection algorithm이 동작하는 방식에 대해서 살펴보겠습니다.

먼저 x features 중에서 특이하게 값이 크거나 작거나 하여 이상이 생길 만한 feature를 선택합니다. 또는 어느 feature가 일반적인 속성을 가지고 있어 분포를 보일 가능성이 있는 것을 선택합니다.

그리고 각 feature 마다 가우스 분포를 이루는 parameter인 μ 와 σ 의 값을 찾습니다. 아래 그림의 2번 공식과 같이 벡터 연산을 통하여 구할 수 있습니다.

마지막으로 p(x) 함수의 결과 값을 PI 공식을 이용해서 구합니다. 그리고 이 값이 특정 값(ε)과 비교하여 작을 경우에는 anomaly로 판단 할 수 있습니다. 결과 값이 아주 작은 값이 된다는 것은 이 데이터가 정상 데이터일 가능성이 아주 작다는 의미가 되기 때문입니다.


아래 그림은 예제를 들어 설명하는 내용입니다.

x1, x2의 데이터가 그래프와 같이 존재합니다. 각각의 x1 feature가 나타내는 가우스 분포는 오른쪽 위의 그래프와 같이 넓직한 그래프의 분포를 이루고 있습니다. 또 x2 feature가 나타내는 가우스 분포를 구해보니 3, 1의 값을 가지고 있는 가우스 분포를 오른쪽 아래 그래프와 같이 조금 뽀족하게 나타나고 있습니다.

이때 녹색의 두개 x 를 샘플링하여 test를 해보려고 합니다. x test(1)은 분포 내에 존재하고 있어 p(x test(1))의 값이 0.0426으로 ε = 0.02 보다 큰 값으로 나타나 정상 데이터라고 판단할 수 있습니다. 반면에 x test(2)는 멀찌감치 위치하고 있어서 p(x test(2))의 값이 0.0021로 작은 값이 되어 anomaly 데이터라고 판단이 됩니다.

이 두가지 features가 나타내는 p(x) 를 3차원 그래프로 그림 아래 왼쪽의 모양과 같이 됩니다. 이 p(x)는 x1, x2가 어떠한 값을 가지고 있을때 높이 값을 의미하게 됩니다. 분포 그래프 표면에 높이가 되는 것이지요.


그리고 아래 그림의 빗금친 부분과 같이 이 분포 밖에 부분에 위치하는 데이터들이 있다면 이 데이터들이 anomaly 로 판단이 되는 것입니다.



댓글