머신러닝 기반의 이상 탐지 (part 1)

Heeyeon Kim
XBrain
Published in
9 min readDec 7, 2020

이상 탐지(Anomaly Detection)란

이상 탐지(anomaly detection)란 어떤 특정한 도메인에서 일반적으로 예상되는 특성을 따르지않는 데이터나, 정상(normal)으로 규정된 데이터와 다른 특징을 가지는 데이터를 찾아내는 것을 말합니다. 이상 탐지라는 주제는 아주 포괄적인 개념으로, 이상 탐지 기법을 써서 찾아내는 데이터는 불량, 오류, 악성코드, 가짜 데이터일 수도 있고, 예외, 노이즈, 새로운 패턴 등의 데이터 일 수도 있습니다. 일반적으로 데이터셋에서 작은 비율의, 다른 데이터의 범주와 확연히 구분되는 데이터를 찾고싶을때 그것을 outliers 혹은 anomalies라고 하며 이상 탐지 문제로 정의합니다.

2차원에서의 anomalies의 예. o1, o2 ,O3는 정상 영역 N1과 N2에서 떨어져 있다. (Chandola et al. [1])

예를 들어, 신용카드 거래 내역을 조사하여 일반적이지 않은 패턴을 발견하여 신용카드 사기 행위를 잡아내는 문제는 이상 탐지 분야에서 전통적이고 중요한 문제 중에 하나입니다. 제조업에서 공정 데이터를 분석하여 양품/불량을 분류하거나 공정 장비의 고장을 찾아내는 것 또한 이상 탐지 분야에서 활발히 연구되고 있습니다. 의학 분야에서 영상, 뇌파 신호등의 의학 데이터을 통해 비정상적인 환자 상태를 탐지하여 진단을 내리는 것도 이상 탐지 문제로 간주할 수 있습니다. 이 외에도 현실에 적용 가능한 수많은 이상 탐지 문제들이 존재합니다.

머신러닝 기반의 이상 탐지

이상 탐지는 통계학에서 이미 오래전부터 연구되어온 주제로, 시간이 지나며 다양한 탐지 기법들이 개발되었습니다. 이상 탐지 기법으로 머신러닝 이외에도 많은 통계적, 경험적 방법들이 있지만 여기에서는 주로 머신러닝 기반의 이상 탐지 기법에 대해 다루려 합니다.

Supervised anomaly detection

학습 데이터의 정상 데이터와 이상 데이터에 라벨링을 할 수 있다고 가정하면 이상 탐지 문제를 지도 학습의 분류 문제로 간주할 수 있습니다. 지도학습을 이용한 이상 탐지는 비교적 정확도가 높다는 장점이 있습니다. 하지만 이상 탐지 문제에서는 Imbalanced data가 자주 발생하는데, 이것은 분류 문제를 해결하는데 있어 큰 장애물이 됩니다. 즉, 비정상적인 데이터가 정상 데이터에 비해 훨씬 적은 경우가 자주 있습니다. 예를 들자면 제조업의 경우에 하나의 불량 데이터를 얻기위해 최소 몇백에서 몇천, 몇만개의 양품 데이터를 얻어야 하는 경우도 있습니다. 결국 분류 알고리즘을 성공적으로 학습시킬 수 있는 양의 비정상 데이터를 확보하기 위해서는 매우 거대한 사이즈의 데이터셋이 필요할 지도 모릅니다. 이러한 Imbalanced data 문제를 해결하기 위해서 OverSampling, UnderSampling, Reconstruction Loss 등 다양한 전략들이 연구되고 있습니다.

classfication을 이용한 anomaly detection (Chandola et al. [1])

지도학습 머신러닝 기반의 이상 탐지로는 다음과 같은 분류 기법들이 인기있습니다.

  • Support vector machine
  • Bayesian network
  • K-nearest neighbors

Unsupervised anomaly detection

이상 탐지 문제를 지도학습으로 해결하는 것은 많은 장점이 있지만 정상과 이상데이터를 정확히 구분하고 라벨링하는 것은 매우 어렵습니다. 정상/이상 데이터 라벨링은 매우 시간이 걸리는 작업일 뿐만 아니라 정상과 이상의 경계를 나누는 것이 분명하지않을 때가 많습니다. 게다가, 위에 말했듯이 데이터 불균형 문제도 있습니다.

지도학습 알고리즘을 적용하기 어려울때, 그 대안으로 제시되는 것이 비지도학습 이상 탐지 기법입니다. 비지도학습은 unlabeled data에서 데이터의 structure와 pattern을 알아내는 문제의 범주에 속합니다. 데이터가 라벨링이 되어있지않거나 정상, 이상에 대한 라벨링이 힘들 것으로 예상될때 적용할 수 있고, 특히 데이터에 이상치가 매우 적게 나타날때 유용한 기법입니다.

비지도학습으로 주로 사용되는 머신러닝 기법들은 다음과 같습니다.

  • Clustering
  • Principal Component Analysis (PCA)
  • Autoencoder

Clustering은 대표적인 비지도학습 알고리즘으로 point anomalies를 탐지할때 유용합니다. Clustering은 유사한 데이터를 cluster로 그룹화하는 기법으로 거리, 밀도 등의 다양한 기준을 사용하여 데이터를 그룹화합니다. Clustering을 이용해 anomalies를 찾아내는 방식은 하나로 고정되어있지는 않습니다. Clustering의 결과에 따라 anomalies를 해석하는 방식이 여러가지이기 때문입니다. 어떠한 cluster에도 속하지 않는 instance가 anomaly로 규정될 수도 있고, cluster의 중심에 가까울 수록 정상 데이터, 중심에서 멀어질 수록 이상 데이터일 확률이 커진다고 볼 수도 있으며, 좀 더 크기가 크고 밀도가 높은 cluster를 정상 cluster, 크기가 작고 sparse한 cluster를 이상 cluster로 정의하기도 합니다. 이렇게 합의된 해석 방식이 없는 것은 앞에서 언급 했듯 anomalies의 개념이 포괄적이며 도메인 마다 anomalies의 정의가 다르기 때문입니다. Clustering을 이용해서 이상 탐지 문제를 풀 경우에는 이러한 anomalies에 대한 가정중에 문제를 가장 잘 설명하는 적절한 것을 선택하여 적용해야 합니다.

PCA와 Autoencoder의 작동원리는 거의 비슷합니다. 데이터를 압축하고 복원하는 과정을 학습하면서 정상 데이터의 패턴을 학습하여 비정상 데이터를 검출하는 원리인데요. PCA는 압축을 위해 차원 축소를 이용하고 Autoencoder는 Neural Network 기반의 알고리즘으로 입력을 encoding함으로써 압축한 정보를 latent variable에 저장하고 이를 다시 decoding하여 원본과 가깝게 복원합니다.

AutoEncoder의 encoding과 decoding (https://keraskorea.github.io/posts/2018-10-23-keras_autoencoder/)

이상 탐지 문제를 풀기위한 AutoEncoder의 사용 방법은 다음과 같습니다. 정상 데이터셋, 혹은 거의 대부분이 정상 데이터로 여겨지는 데이터셋을 AutoEncoder모델에 학습시킵니다. 알고리즘이 정보의 압축, 복원을 반복하게되면 모델은 데이터를 실제와 가깝게 복원하기위해 정상 데이터의 패턴과 특징을 학습하게 됩니다. 결과적으로, 학습이 잘 된 모델에 정상 데이터를 입력하면 출력값으로 원래 입력과 거의 비슷한 값을 도출해낼 것 입니다. 하지만 정상 데이터가 아닌 비정상, 특이점을 가진 데이터를 여기에 입력하게되면 어떻게 될까요? 모델은 기존에 학습되지않은 비정상 데이터를 복원하는 패턴을 배우지 않았을 것이고, 출력값은 입력값과 큰 차이가 나게 됩니다. 따라서 입력값과 출력값의 차이에 대한 기준을 설정해서, 그 기준보다 차이가 나는 데이터를 anomalies로 검출해 낼 수 있는 것 입니다.

시계열 데이터의 이상 탐지

현실 세계에서 이상 탐지가 가장 많이 적용되는 데이터 타입중의 하나는 시계열 데이터 입니다. Anomaly의 유형은 여러가지가 있는데 단순히 개별적인 데이터 instance가 다른 데이터의 범주와 많이 벗어나는 것을 말하기도하고, instance 그 자체로는 다른 데이터의 값의 범주에서 벗어나지않지만 특정한 context에서 변칙적인 것으로 여겨질 때를 얘기하기도 합니다. 전자의 경우를 point anomalies, 후자의 경우를 우리는 contextual anomalies라고 부릅니다. 실제 시계열 데이터에서 이상의 유형으로 contextual anomalies가 자주 발견되는데, 이때 ‘context’ 는 보통 시간적인 특성을 의미합니다.

Contextual anomaly t2 in a temperature time series

가령, 기온에 대한 시계열 데이터를 생각해봅시다. 기온은 시간, 일자별로 약간의 차이는 있겠지만 일반적으로 여름에 높아지고 겨울에 낮아지므로, 달별 평균 기온을 그래프로 그리면 위와 같은 seasonality가 있는 시계열 데이터로 표현 됩니다. 위 그래프에서 시간대 t2의 instance가 바로 contextual anomaly에 해당하는데, t1 시간대의 기온과 t2 시간대의 기온은 거의 같지만 context의 관점에서 볼때 t2는 anomaly로 해석됩니다.

이와 같이 전후 instance, context를 같이 고려해야하는 데이터의 특성 때문에 시계열 데이터의 이상 탐지를 위해서는 보통 Autoencoder 등의 이상 탐지 알고리즘과 RNN(Recurrent Neural Networks), LSTM(Long Short Term Memory)등의 시퀀스 데이터 처리가 가능한 알고리즘을 결합하여 사용합니다. RNN 등의 네트워크는 입력값으로 개별적인 instance 대신 sequence를 사용할 수 있어 시간적인 특성을 고려하여 이상치를 탐지해낼 수 있습니다.

글을 마치며

지금까지 여러 이상 탐지 머신러닝 알고리즘을 알아보았습니다. 이중에서 가장 성능이 좋은 알고리즘은 무엇일까요? 이상 탐지와 관련된 알고리즘 연구는 활발하게 이루어지고 있으나 대부분의 이상 탐지 문제에 만능으로 사용할 수 있는 모델은 아직 없습니다. 이상 탐지 문제는 다양한 도메인 분야에서 정의되며 도메인 분야마다 anomalies의 정의와 특성이 다르기 때문입니다. 때문에 특정 도메인의 이상 탐지 문제를 해결하기 위해서는 데이터에 대한 이해와 도메인 전문가의 도움이 필수적일 것입니다.

Part 2에서는 자율주행 차량 보안 시스템 연구 동향을 통하여 머신러닝을 이용한 이상 탐지의 실제 적용 사례에 대해 알아보겠습니다. XBrain에서는 다양한 분야에서의 새로운 문제와 그 해결 방안에 관심이 있는 엔지니어분의 참여를 환영합니다 :)

Machine Learning Engineer 채용 공고 확인하러 가기

References

[1] Chandola, V., Banerjee, A., Kumar, V.: Anomaly detection: A survey. ACM computing surveys (2009)

--

--