[FDS] Fraud Detection System with AutoEncoder

Create Card Fraud Detection using  AutoEncoder (KerasTensorflow)

1. 문제점 

본 Topic 은 너무 뻔한거라서 그런가? 딱히 논문이라던지 이런게 잘 보이지 않는다.. 몇개 있는데 인용수가 0 이다. 대신에 실증적인 좋은 Blog 가 하나 보인다. 기본적으로 이러한 종류의 문제는 데이터의 불균형이 가장 큰 문제이다. 그래서 이러한 문제를 해결하기 위한 방법을 Anomaly Detection 이라고 하는데 FDS 도 마찬가지로 접근하면 된다. Anomaly 문제를 해결하기 위한 대표적인 두 가지 방법이 PCA 와 AutoEncoder 인데 여기서는 Deep Learning 을 활용한 AutoEncoder 를 알아보고자 한다.

2. 데이터

데이터를 한번 보자 아래와 같이 시계열 성격의 데이터를 사용한다

시각화해서 보면 아래와 같이 표현할 수도 있을 것이다

3. AutoEncoder

AutoEncoder 는 Deep Neural Network 의 한 종류인데 특이하게도 Unsupervised 계열의 알고리즘으로 데이터 관점에서 X, Y 가 같다. 즉 이 신경망의 목적은 입력과 같은 출력 값을 만들어 내는 것에 있다. 이것은 한 단어로 Reconstruction 이라고 할 수 있는데, 이 과정에서 잡음 같은 것들이 사라지는 경향이 있기 때문에 이미지 분석에서 필터로 사용하기도 하고, Encoder 와 Decoder 사이에  있는Compressed Vector 는 Clustering 의 효과와 차원을 축소하는 효과가 있어서 군집분석 따위에 사용하기도 하는 RNN 과 CNN 에 가려서 주목받고 있지 못하지만 굉장히 활용성이 높은 아키택쳐이다.

여기서는 데이터의 불균형이라는 부분을 해결하기 위한 방법으로 AutoEncoder 를 사용하고자 하는데 Key Idea 는 다수의 Portion 을 차지하는 정상 데이터 (예를들면 99% 비율?) 의 데이터를 잘 복원할 수 있도록 신경망을 훈련시키면 정상적인 패턴이 들어 왔을때는 복원율이 높을 것이고, 상대적으로 비정상 데이터가 들어왔을때는 복원율이 낮을 것이라는 가정을 기반으로 하고 있다.

내용을 정리해보면 위의 그림과 같은 모습이 될 것이다. 하나씩 더 (1) 원본 데이터 

(2) 복원 데이터

(3) 오차 (잔차) 

4. Threshold 결정

복원 오차 (MSE) 기준으로 정상/사기를 나누어야 할 필요가 있는데 어떤 판단 기준을 정의할 것인가는 중요한 문제이다.

적절한 ThresHold 를 구하기 위해서 Precision (True 라고 한것 중에서 진짜 True 인거) 와 Recall (전체 True 중에서 얼마나 찾아낸것인지) 두 가지 관점을 그래프로 그려보고 적당한 ThresHold 값을 구해봅니다.

Recall 과 Precision 의 관계를 보면 전체적으로 음의 상과관계를 가지고 있는 것을 볼수가 있는데. 둘 모두 좋은 성능을 보이는 지점을 찾으면 좋을 것이나, 정확도가 중요한지 재현율이 중요한지에 따라 적정한 Threshold 를 지정하는 것이 중요하겠다 .


Threshold 변화에 따른 Precision 의 변화이다.  그래프에서 보는 것처럼 Threshold 가 높을 수록 Precision 은 올라간다. 당연히 Threshold  가 높으면 어지간히 Reconstruction Error 가 높지 않으면 정상으로 판정이 되기 때문에 Fraud 라고 판단한 것중에 잘 맞춘 비율을 올라갈 수 밖에 없다. 반대의 경우에는 너무 많은 Case 를 Fraud 라고 판단할 것이기 때문에 실제로는 정상인데 Fraud 라고 판단하는 경우가 많아져서 Precision 은 떨어지게 될 것이다.


Threshold 변화에 따른 Recall 의 변화이다.  그래프에서 보는 것처럼 Threshold 가 높을 수록 Recall 은 내려간다. Recall 은 얼마나 전체 Fraud 중에서 Fraud 를 찾아내느냐의 문제이기 때문에 당연히 Threshold를 낮게 지정하여 많은 Case 를 Fraud 로 판단하면 Recall이 좋아질 것이다.

아래는 Threshold 를 2.5 로 하였을 때의 결과인데, Recall은 20/98로 높은 편이지만, Precision 은 78/(1373+78) 로 너무 많은 정상 케이스를 Fraud 로 판단하는 것을 볼 수 있다.

만약 Threshold 를 50 정도로 주었다면 Recall 은 20% (전체 사기중에 검출한 확률) Precision 60% (검출한 것 중에 진짜 사기일 확률)을 보이게 될 것이다. 만약에 금융에서 이러한 모델을 적용한다면, 어느정도 의미가 있지 않을까?

Leave a Reply

Your email address will not be published. Required fields are marked *