Create Opportunities

[이상 탐지] Anomaly Detection !? 본문

이상 탐지

[이상 탐지] Anomaly Detection !?

kimjaeyoon 2022. 8. 29. 01:54

Novelty : 본질적인 데이터는 같지만 유형이 다른 관측치를 말한다.

Annomaly : 대부분의 데이터와 본질적인 특성이 다른 관측치를 말한다. (전혀 다른 방식으로 생성되었을 것으로 추정)

 

이상치 탐지는 어떻게 하는 것일까 ?

가장 기본적으로 생각할 수 있는 것은 정상과 불량을 구별할 수 있는 모델을 만드는 것이다.

변수들의 값들을 기반으로 y 레이블이 0인지 1인지, 지도학습 기반으로 이상치를 탐지할 수 있다. Logistic Regression 이나 Gradient Boosting 모델 등의 분류 모델을 사용할 수 있다.

하지만, 특정 데이터가 정상인지 불량인지 Label을 정확히 모르는 경우에는 이를 적용하는데 한계가 있다.

비지도 학습 기반 이상치 탐지에는 다양한 방법론이 존재한다.

 

 

1. Isolation Forest

한 개체를 분리 시키기 위하여 필요한 분리 횟수를 이상치 점수로 계산한다. 이에 따라, 이상치는 정상 데이터에 비해 빠르게 분리될 것이라는 가정으로 진행된다. Local Outlier Factor는 정상과 불량을 분리하는 알고리즘이다. 밀도가 높은 정상 데이터들과 거리가 있을 것으로 예상하여 이상치를 찾아낼 수 있다.

Isolation Forest

!! 위와 같은 방법론은 데이터가 많아지면서 한계가 존재한다.

그래서 딥러닝 기반 방법론이 제안된다.

DL 기반 이상치 탐지 방법론은 정상 데이터만으로 데이터의 분포를 학습하고, 이에 따라 특정 모델을 적용하여 정상 데이터의 범위를 대략적으로 결정한다. 그 이후에 새롭게 들어오는 데이터에 대해서는 앞서 사용자가 임의로 설정하였던 범위에 따라 판단하게 된다. 즉 임계값 밖에 존재하는 데이터를 모두 이상치로 보게 된다. 이러한 딥러닝 기반 이상치 탐지 방법론은 아래와 같이 크게 세 가지 접근을 말해볼 수 있다.

 

1. 차원축소 기반 이상치 탐지

input으로 들어온 데이터에 차원축소 방법론을 적용하고, 축소된 차원에서 새로운 이상치 점수 함수를 적용하여 이상치 여부를 판단한다.

 

2. 데이터 특성 기반 이상치 탐지

이상치 탐지를 위하여 제안된 것은 아니지만, 데이터의 특성을 효과적으로 파악하는 것으로 밝혀진 방법론을 활용한다. Auto Encoder나 GAN을 통해 데이터 특성 판단 → 이상 탐지 진행

 

3. Ent-to-End 이상치 탐지

입력된 데이터에 대한 특성 파악과 이상치 점수 예측을 모두 한 모델 내에서 진행해서 이상치 점수를 출력할 수 있도록 구상한 방법론.

 

!! 이번 포스팅에서는 데이터 특성 기반의 이상치 탐지만 기록해본다.

 

해당 알고리즘에는 또,, 다양한 접근이 존재한다.

Auto Encoder 기반/ GAN 기반/ Self Supervised Learning 기반의 방법론이 있는데,,

우선 Auto Encoder 기반의 접근만 봐보자.

 

Auto Encoder 모델은 입력된 데이터는 인코더 부분을 거쳐서 잠재벡터로 요약되고, 이것을 또 디코더가 복원하여 output 데이터를 생성한다.

이로써, 데이터가 잘 복원된 경우에 저차원의 데이터 특성 공간을 파악할 수 있다. → 데이터 특성을 기반해서 이상치를 탐지하는 모델로 사용!!

오토 인코더 모델은 가정이 필요하다. 아래와 같다.

가정 : 정상 관측치들은 불량 관측치보다 더 잘 복원될 것이다.

잠재 공간에서 복원되는 형태가 어떠한지에 따라 이상치를 분류해낼 수 있다.

사용자가 임의로 결정한 특정 임계값보다 재구축 오차가 큰 경우, 불량 관측치로 판단할 수 있다!

Auto Encoder 구조

오토인코더의 모델을 조금 수정한 후, 이상탐지에 활발하게 활용되는 변이형 오토인코더 (VAE) 도 있다. 입력 데이터의 정보를 요약하는 잠재벡터가 정규분포와 유사하도록 특정 제약식을 추가하는 알고리즘이라고 생각하면 된다. 제약식을 구성하기 위해, 데이터의 정보를 요약한 이후에 요약된 정보의 평균과 표준편차를 계산하며, 이를 정규분포에서 나온 임의의 input값과 연산하여 잠재벡터로 계산한다. 이렇게 계산된 잠재벡터를 다시 데이터로 복원하며 모델을 학습시킨다.

제약식을 추가함으로써 데이터의 특성을 더욱 효과적으로 파악하려는 접근이라고 볼 수 있다.

VAE 구조 (정규분포 제약식 추가)

적대적 오토인코더 (Adversarial Auto Encoder)

위의 오토인코더와의 차이점은 판별기가 존재한다는 점이다. 판별기는 요약된 잠재 벡터와 정규분포에서 임의로 샘플링 한 데이터를 구분하는 판별기를 추가하여 학습에 도움을 줄 수 있다. 판별기에 입력으로 들어온 특정한 벡터값이 실제 데이터의 분포인지, 또는 정규분포에서 만들어진 값인지 확인한다. 이러한 판별결과를 모델에 함께 학습하여 더욱 좋은 학습을 가능하게 한다.

Adversarial Auto Encoder 구조 (판별기 추가)