Skip to content

XAI_AML은 거래 데이터에서 의심거래를 탐지하고, SHAP/LIME 등 XAI 기법으로 ‘왜 의심인지’를 정량적으로 설명한다. 예측 결과는 특성 기여도, 반례/대안 시나리오와 함께 시각화되며, 규정 양식에 맞춘 STR 초안으로 자동 정리된다. 규제 대응과 내부 감사에 필요한 근거를 데이터 기반으로 제공한다.

Notifications You must be signed in to change notification settings

yelim8902/XAI_AML

Repository files navigation

XAI_FDS_Project

금융 사기 탐지(FDS) 모델 개발 및 XAI 기반 의심거래 보고서 자동화 시스템


📌 프로젝트 개요

본 프로젝트는 금융 거래 데이터를 기반으로 이상거래 탐지(Fraud Detection) 모델을 학습하고,
SHAP 기반 XAI 분석 결과를 포함한 의심거래 보고서(STR) 를 자동 생성하는 것을 목표로 한다.


📊 데이터셋 설명

PaySim 데이터셋

본 프로젝트는 PaySim 금융 거래 시뮬레이션 데이터셋을 사용합니다.

데이터 개요

  • 출처: Mobile Money Services (MMS) 거래 데이터 기반 시뮬레이션
  • 목적: 금융 사기 탐지 모델 개발 및 테스트
  • 특징: 실제 금융 거래 패턴을 모방한 합성 데이터

데이터 구조

- step: 시뀨적 단계 (1시간 단위)
- type: 거래 유형 (CASH_IN, CASH_OUT, DEBIT, PAYMENT, TRANSFER)
- amount: 거래 금액
- nameOrig: 송금인 계좌명
- oldbalanceOrg: 송금인 거래 전 잔액
- newbalanceOrig: 송금인 거래 후 잔액
- nameDest: 수취인 계좌명
- oldbalanceDest: 수취인 거래 전 잔액
- newbalanceDest: 수취인 거래 후 잔액
- isFraud: 사기 여부 (0: 정상, 1: 사기)
- isFlaggedFraud: 은행에서 사기로 플래그된 거래

데이터 통계

  • 총 거래 수: 약 6,362,620건
  • 사기 거래: 약 8,213건 (0.13%)
  • 정상 거래: 약 6,354,407건 (99.87%)
  • 불균형 비율: 1:773 (사기:정상)

데이터 특징

  • 시계열성: 시간 순서대로 정렬된 거래 데이터
  • 불균형: 사기 거래가 극도로 적음 (불균형 데이터 처리 필요)
  • 다양성: 5가지 거래 유형으로 다양한 패턴 포함
  • 연관성: 송금인/수취인 잔액 변화로 거래 패턴 분석 가능

전처리 과정

  1. 피처 엔지니어링: 잔액 대비 거래 금액 비율, 시간대별 패턴 등
  2. 불균형 처리: SMOTE 기법으로 소수 클래스 증강
  3. 시계열 분할: 시간 순서를 고려한 훈련/검증/테스트 분할
  4. 스케일링: StandardScaler를 통한 피처 정규화

📂 폴더 구조


XAI\_FDS\_Project/
├── data/
│   ├── 01\_raw/              # 원본 데이터 (변경 금지)
│   │   └── paysim.csv
│   └── 02\_processed/        # 전처리된 데이터
│       └── preprocessed\_data.csv
│
├── notebooks/               # 실험 및 분석용 노트북
│   ├── 01\_eda.ipynb
│   └── 02\_model\_prototyping.ipynb
│
├── outputs/                 # 모든 실행 결과물 통합 저장
│   ├── figures/             # 시각화 자료 (SHAP 플롯 등)
│   ├── metrics/             # 성능 지표 (JSON, PNG 등)
│   ├── models/              # 학습된 모델 (joblib 등)
│   └── reports/             # 최종 보고서 (STR\_Report.md 등)
│
├── scripts/                 # 실행 스크립트
│   ├── train.py             # 모델 학습 및 저장
│   ├── evaluate.py          # 모델 성능 평가
│   └── generate\_report.py   # STR 보고서 자동 생성
│
├── src/                     # 재사용 가능한 모듈
│   ├── preprocessing.py
│   ├── modeling.py
│   ├── evaluation.py
│   ├── xai.py
│   └── reporting.py
│
└── README.md


⚙️ 실행 방법

1. 모델 학습

cd XAI_FDS_Project
python scripts/train.py --imbalance smote --n_estimators 200 --seed 42

옵션 설명

  • --imbalance smote : 불균형 데이터 보정 방법 (smote / none)
  • --n_estimators 200 : 모델 트리 개수 설정
  • --seed 42 : 랜덤 시드 고정

2. 모델 평가

python scripts/evaluate.py
  • Confusion Matrix, Classification Report, AUPRC 등 주요 지표 저장

3. STR 보고서 생성

python scripts/generate_report.py --analysis_period "2025-08-01 ~ 2025-08-11"
  • 분석 기간 동안의 의심거래 사례 + SHAP Top Features 포함 보고서 생성

📊 결과물 예시

결과물 설명 예시 경로
모델 파일 학습된 모델 객체 outputs/models/model.joblib
성능 지표 JSON, Confusion Matrix CSV outputs/metrics/classification_report.json
XAI 시각화 SHAP Bar Plot, Beeswarm Plot outputs/figures/shap_bar.png
개별 거래 분석 거래별 SHAP Waterfall Plot outputs/figures/individual_shap_transaction_*.png
보고서 STR 보고서 (Markdown/HTML) outputs/reports/STR_Report.md/html

📈 SHAP 분석 예시

SHAP Bar Plot

🔍 개별 거래 SHAP 분석 예시

개별 거래 SHAP 분석

📄 STR 보고서 예시

STR 보고서 예시


🛠 환경 설정

1. 기본 환경 설정

conda create -n xai_env python=3.10
conda activate xai_env
pip install -r requirements.txt

2. OpenAI API 키 설정

LLM 기반 자동 해석 기능을 사용하려면 OpenAI API 키가 필요합니다.

# 방법 1: 스크립트 실행
./set_api_key.sh

# 방법 2: 직접 환경변수 설정
export OPENAI_API_KEY="your-api-key-here"

# 방법 3: 영구 설정 (.zshrc에 추가)
echo 'export OPENAI_API_KEY="your-api-key-here"' >> ~/.zshrc
source ~/.zshrc

3. 필요한 패키지

  • 기본: pandas, numpy, scikit-learn, matplotlib, seaborn
  • XAI: shap, lime
  • LLM: openai
  • 보고서: markdown, jinja2

📌 주요 특징

  • LightGBM 기반 이진 분류 모델
  • SMOTE를 활용한 데이터 불균형 보정
  • SHAP 기반 XAI 설명 기능
  • 개별 거래별 상세 SHAP 분석
  • LLM 기반 자동 해석 생성
  • STR 보고서 자동 생성 및 저장
  • HTML 보고서 변환 기능
  • 폴더 구조 기반 재현 가능성 보장

🚀 최신 기능 (v2.0)

개별 거래 SHAP 분석

  • 각 거래별로 모델의 판단 근거를 상세히 분석
  • Waterfall plot으로 피처별 기여도 시각화
  • 거래별 예측 정확도 및 실제 라벨 비교

AI 기반 자동 해석

  • OpenAI GPT 모델을 활용한 자동 해석 생성
  • 각 거래마다 "왜 사기로 분류되었는지" 상세 설명
  • 금융 전문가 관점에서의 패턴 분석

향상된 보고서 시스템

  • 마크다운 → HTML 자동 변환
  • 시각적 요소 강화 (색상, 카드, 그라데이션)
  • 모바일 친화적 반응형 디자인

모델 투명성

  • 사용된 모델 정보 명시 (LightGBM, 파라미터 등)
  • SHAP 값과 원본 값을 함께 표시
  • 모델의 의사결정 과정 완전 투명화

About

XAI_AML은 거래 데이터에서 의심거래를 탐지하고, SHAP/LIME 등 XAI 기법으로 ‘왜 의심인지’를 정량적으로 설명한다. 예측 결과는 특성 기여도, 반례/대안 시나리오와 함께 시각화되며, 규정 양식에 맞춘 STR 초안으로 자동 정리된다. 규제 대응과 내부 감사에 필요한 근거를 데이터 기반으로 제공한다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published