MATH & ML

Anomaly Detection(이상 탐지, 이상 현상 탐지) 본문

Machine Learning

Anomaly Detection(이상 탐지, 이상 현상 탐지)

BlogYong 2018. 7. 25. 20:52

데이터에서 outlier 구별해내는것이 목표.

어디서부터 outlier로 여길것이며, outlier도 한종류의 outlier가 아닌 여러종류의 outlier가 포함되어 있을 수도 있어서, 기존 classify하던 머신러닝 기법들을 그대로 적용하기 힘들며, 최근에도 계속해서 여러 방법들이 나오고 있는 상태이다.

중요한것은! 어떤걸 정상상태로 보고, 어떤걸 이상상태로 볼 것인지 기준을 정하는 것이다. 따라서 이를 위해서는 그 데이터에 대한 domain knowledge가 아주 중요하게 필요하다.

어려운 점 중 또 하나는 보통의 경우 unsupervised 문제들이 많다는 어려운 점도 있다.





1. 거리기반

쉽게 생각할 수 있는 방법으로는 거리를 바탕으로 k-nn알고리즘을 이용할 수도 있다.



2. 의존성(dependency)기반

위 방법을 데이터 간의 분포까지 고려하여 만든 지표가 지표가 보통 마할라노비스 거리이다.

평균으로부터 얼마나 거리가 떨어져 있는지 공분산까지 이용하여 구하는 지표이다.

다차원 공간에서 outlier를 찾을때 쓰이는 지표로, 유클리디안 거리를 다차원으로 확장시켰다고 얘기할 수 있다.

이 거리를 이용해서 선형적인 분포에서는 outlier를 잘 찾아낼 수 있는데 비선형적인 분포에서는 이 거리만으로는 문제가 발생한다.

그래서 마할라노비스거리를 pca와 같이 사용하여 비선형적인 분포에서도 이용하기도 한다.


아니면 아주 쉽게그냥 평균으로부터 $2\sigma$이내가 아닌 나머지 data를 outlier라고 할 수도 있겠다.




3. 밀도기반
LOF방법이 대표적인데, Anomaly data의 밀도가 normal한 data의 밀도보다 낮음을 이용하여 거리지표를 이용하여 근처 밀도를 계산해서 구분해내는 방법이다.

또한 isolation forest방법은 밀도가 낮은 건 랜덤으로 잘랐을때 쉽게 구분이 되고, 밀도가 높은 건 랜덤으로 잘랐을때 구분되기 오래걸리고 어렵다는 생각을 이용한 방법이다.





그 이외에도 다양한 아이디어의 방법들이 계속해서 제안되고 있는 최근이며, anomaly detection을 위한 딱 정해진 알고리즘이 없고 계속해서 나오고 있다. 

최근 나온 방법들 2가지

ㄱ. autoencoder를 이용해서 다시 복원을 했을때 anomaly는 잘 복원이 안 됐을거라 가정하고 그  error를 이용하여 anomaly를 검출하는 방법

ㄴ. deep neural network로 기존 데이터를 원에다가 집어넣는 함수를 훈련시켜서, 원의 형태로 만든 다음에, 중심을 기준으로 어느정도의 반지름 안에 들어오는 것만 정상, 나머지를 anomaly라고 생각하는 방법

등 계속해서 여러 논문들이 나오고 있는것 같다.






참고

anomaly detection의 대략적인 설명 이해 참고 http://intothedata.com/02.scholar_category/anomaly_detection/

Comments