I Built a Fraud Detection System That Catches 99.76% of Fraud — Here's Everything I Learned
개요
PaySim 데이터셋에서 99.76%의 사기를 탐지하는 TrustGuard AI 시스템은 기존의 정확도(Accuracy) 지표가 불균형 데이터셋에서 부적합함을 보이고, Recall, AUC-ROC, Average Precision 등의 지표를 최적화하는 것이 중요함을 보여준다.
주요 내용
- 정확도(Accuracy)의 한계: 0.13%의 낮은 사기율을 가진 PaySim 데이터셋에서 모든 거래를 '정상'으로 예측하는 모델도 99.87%의 정확도를 달성하지만, 실제 사기는 전혀 탐지하지 못한다. 따라서 사기 탐지 시스템에서는 정확도 대신 Recall(사기 탐지율), Average Precision (AUPRC), AUC-ROC와 같은 지표가 더 중요하게 최적화되어야 한다.
- 데이터셋 특성 및 EDA: PaySim 데이터셋은 6,362,620개의 거래 중 8,213개가 사기이며, 사기는 주로 'CASH\_OUT' 및 'TRANSFER' 거래 유형에서 발생한다는 EDA 결과를 통해 피처 엔지니어링 방향이 설정되었다.
- 데이터 불균형 해결 전략:
* 1단계: 사기 시뮬레이션 엔진: 훈련/테스트 분할 전에 'CASH\_OUT' 및 'TRANSFER' 거래 중 5%를 샘플링하여 계좌 전체를 인출하는 사기 패턴으로 변환하고 데이터셋에 추가하여 사기율을 0.13%에서 1.26%로 높였다. 이는 F1 스코어를 크게 향상시키는 가장 중요한 요소로 확인되었다.
* 2단계: ImbPipeline 내 SMOTE: 80/20 계층적 훈련/테스트 분할 후, 5-fold 교차 검증마다 ImbPipeline 내부에서 SMOTE를 적용하여 훈련 데이터의 사기율을 23.07%로 조정하고, 검증 데이터에는 합성 샘플이 노출되지 않도록 데이터 누수를 방지했다.
- 주요 피처 엔지니어링:
* balanceDiff = oldbalanceOrg − newbalanceOrig − amount: 거래 전후 잔액 불일치를 탐지하여 계좌 인출 사기 패턴을 포착한다.
* amount_ratio = amount / (oldbalanceOrg + 1): 전체 계좌 인출 사기의 경우 이 값이 1.0에 가까워진다. 이 두 피처는 모델의 탐지 능력을 크게 향상시킨다.
- 모델 훈련 및 선택: 4가지 모델(XGBoost, Neural Network, Random Forest, Logistic Regression)을 ImbPipeline(SMOTE → StandardScaler → Classifier) 내에서 5-fold 교차 검증으로 훈련시킨 결과, XGBoost가 Recall, AUC-ROC, Average Precision 등 모든 주요 지표에서 가장 우수한 성능을 보였다. 최종적으로 XGBoost 모델은 0.9976의 Recall, 0.9995의 AUC-ROC, 0.9358의 Test Average Precision을 달성했다.
- 설명 가능성(Explainability) - SHAP: SHAP TreeExplainer를 사용하여 각 예측에 대한 Shapley 값을 계산하고, 어떤 피처가 어떤 기여도로 사기 예측을 강화했는지 시각화하여 분석가에게 의사결정 근거를 제공한다.
- RAG 파이프라인 - 규제 준수: GPT-4o-mini와 RAG(Retrieval-Augmented Generation) 파이프라인을 통해 사기 거래 탐지 시, 파키스탄 중앙은행(SBP)의 관련 규제 문서 구절을 인용하여 탐지 결과를 근거 기반으로 제시하며 운영 가능한 수준의 신뢰성을 확보했다.
시사점
TrustGuard AI 시스템은 불균형 데이터셋에서의 사기 탐지 문제에 대한 효과적인 해결책을 제시하며, 데이터 불균형 처리, 성능 지표 선정, 피처 엔지니어링, 설명 가능성 확보, 그리고 규제 준수까지 아우르는 실질적인 시스템 구축 프레임워크를 제공한다.
댓글
GitHub Discussions