온라인 카드 거래 사기 탐지를 위한 2-Stage 의사결정 파이프라인입니다.
본 프로젝트는 다음과 같은 구조를 갖습니다.
-
Stage1: 거래 단독 기반의 경량 1차 판별
→ 전체 거래를 빠르게 스코어링하고 Stage2로 넘길 대상(Review ids)을 선별 -
Stage2: 사용자/카드 컨텍스트 + 히스토리 기반의 고정밀 2차 판별
→ Stage1에서 선별된 대상에 대해 정밀 판단 수행 -
CHECK (Drift): 운영 환경에서의 분포 이동 감지 및 대응 전략 검증
분석과 피처 의사결정을 담당하는 영역입니다.
모델링 이전 단계에서 피처 후보를 발굴하고, 통계적·행동적 근거를 통해 검증합니다.
-
EDA_CARD.ipynb
카드 속성 기반 리스크 구조 분석 -
EDA_ERR.ipynb
오류(errors) 패턴 기반 리스크 분석
(예: CVV 오류, PIN 오류 등) -
EDA_HISTORY.ipynb
카드/클라이언트 단위 과거 이력 기반 분석 -
EDA_INTERACTION.ipynb
상호작용 피처(곱, 조건부 결합 등) 구조 분석 -
EDA_MCC.ipynb
MCC 리스크 분석- raw fraud rate
- Bayesian smoothing
- risk level 정의
-
EDA_MONEY.ipynb
금액/소득/한도 기반 비율 및 로그 스케일 분석 -
EDA_PERSON.ipynb
개인 속성(나이, 성별, 은퇴 등) 기반 분석 -
EDA_TIME.ipynb
시간 기반 리스크 구조- weekday / hour
- cyclic encoding
- 위험 시간대 정의
FEATURESELECT.ipynb
모든 EDA 결과를 종합해 최종 피처 셋을 확정
(keep / drop 근거 정리 및 검증)
EDA에서 확정된 로직을 실제 학습·운영 가능한 형태로 구현한 실행 파이프라인 영역입니다.
거래 단독 정보만으로 구성되는 1차 판별 레이어입니다.
- 빠른 스코어링
- Stage2로 넘길 Review 대상 선별
- 최소 정보 기반의 안정적 1차 필터
거래 데이터 정제 및 기본 파생 피처 생성
주요 처리:
- 온라인 거래 필터링 (
is_online) - 라벨 JSON 스트리밍 로드 후 merge
- 금액 정리 및
log_abs_amount - 에러 플래그 생성 (
err_bad_cvv등) - 시간 파생 (
tx_year,tx_month,tx_hour,weekday) - MCC 정리
Stage1 artifacts 생성 및 Stage1 데이터셋 빌드
Artifacts 핵심 구성:
mcc_smoothed_risk_mapmcc_risk_levelrisky_wd_hourhigh_risk_months
Stage1 최종 피처 예:
log_abs_amounthour_sin,hour_cosmonth_sinmcc_smoothed_riskmcc_risk_levelis_risky_wd_hourerr_bad_cvv
Stage1 최종 모델 확정
- Logistic Regression 기반 최적 설정 선택
- 운영 threshold 확정
- Stage2로 전달할 Review ids 생성
사용자·카드 컨텍스트 및 거래 히스토리를 포함하는 2차 판별 레이어입니다.
- Stage1에서 선별된 거래에 대해 정밀 판별
- 행동 패턴 기반 이상 탐지
- 속도·신규성·변화 기반 리스크 강화
Stage2 베이스 테이블 생성
거래 + 사용자 + 카드 데이터를 결합하고 다음을 생성:
-
계정/만료 파생
months_to_expiremonths_from_accountyears_since_pin_changeyears_to_retirement
-
카드 속성
is_credit,is_prepaidhas_chipcb_Visa,cb_Mastercard,cb_Amex,cb_Discover
-
금액/소득/한도 비율
amount_income_ratioamount_limit_ratio- 로그 변환
히스토리 기반 피처 생성
핵심 특징:
- 과거 거래 기반 shift/rolling 구조
- 속도 급증 (
velocity_spike_ratio) - 신규성 (
client_mcc_is_new,merchant_is_new) - 변화 (
merchant_change_last5) - 간격 기반 이상 (
log_interval_dev) - 극단 한도 사용 (
limit_ratio_extreme)
Stage1 피처를 merge하여 최종 TRAIN_stage2 완성
Stage1 Review ids만 Stage2로 전달
중요 설계:
- 히스토리 계산은 전체 raw 데이터를 기준으로 수행
- 마지막 단계에서 Review ids만 필터링
Stage2 최종 모델 확정
- LightGBM 기반 최적 모델 선택
- 최종 threshold 확정
운영 환경에서의 분포 이동 대응을 검증하는 영역입니다.
구성:
- Stage2 데이터 생성 재현
- Drift 지표 계산
- 분포 이동 발생 시 대응 전략 실험
목적:
- 데이터 분포 변화 감지
- artifacts 업데이트 여부 판단
- threshold 재조정 필요성 검증
- EDA에서 피처 후보 발굴
- Feature Selection으로 최종 피처 확정
- Stage1 데이터 생성
- Stage1 모델 학습 및 Review ids 선별
- Stage2 데이터 생성 (히스토리 포함)
- Stage2 모델 학습 및 최종 판별
- Drift 감지 및 대응 전략 검증
- 2-Stage 구조는 속도와 정밀도의 분리 설계
- Stage1은 거래 단독 기반의 빠른 필터
- Stage2는 컨텍스트 + 행동 기반의 심층 분석
- 모든 히스토리 피처는 시간 정렬 후 생성
- 운영 안정성을 고려한 artifacts 기반 설계
- Drift 대응을 고려한 구조적 확장 가능성 확보