F3. 欺诈检测实时决策¶
案例来源: Fraud-Detection-Handbook
决策类型: 交易风险拦截
方法论: 不平衡学习 + 集成模型 + 阈值优化
预计阅读时间: 15 分钟
1. 决策背景¶
业务场景¶
某支付公司日交易量 500 万笔,面临欺诈风险: - 欺诈率:0.5% (约 2.5 万笔/日) - 欺诈损失:¥50M/年 - 人工审核:50 人团队 (成本高) - 误报率:15% (用户体验差)
决策目标¶
- 实时决策 (<100ms)
- 欺诈识别率 > 90%
- 误报率 < 5%
- 减少人工审核 70%
2. 核心挑战¶
数据不平衡¶
决策约束¶
- 时效性: < 100ms
- 可解释性: 拒绝需说明理由 (监管要求)
- 准确性: 漏报成本¥2000/笔,误报成本¥50/笔
3. 决策框架¶
方法论选择¶
集成学习 + 不平衡处理:
技术方案: - 采样:SMOTE + 欠采样 - 模型:XGBoost + LightGBM 集成 - 阈值:成本敏感优化
4. 模型实现¶
特征工程¶
# 交易特征
features = {
'transaction': ['amount', 'hour', 'day_of_week'],
'user': ['avg_transaction', 'transaction_frequency', 'account_age'],
'merchant': ['merchant_category', 'avg_fraud_rate'],
'behavior': ['velocity_1h', 'velocity_24h', 'distance_from_home']
}
# 衍生特征
data['amount_ratio'] = data['amount'] / data['avg_transaction']
data['is_night'] = (data['hour'] >= 23) | (data['hour'] <= 5)
data['velocity_change'] = data['velocity_1h'] / data['velocity_24h']
不平衡处理¶
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
# SMOTE 过采样
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
# 欠采样
rus = RandomUnderSampler(random_state=42)
X_final, y_final = rus.fit_resample(X_resampled, y_resampled)
集成模型¶
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.ensemble import VotingClassifier
# 基模型
xgb = XGBClassifier(scale_pos_weight=199, max_depth=6)
lgb = LGBMClassifier(class_weight='balanced', max_depth=6)
# 集成
ensemble = VotingClassifier(
estimators=[('xgb', xgb), ('lgb', lgb)],
voting='soft'
)
ensemble.fit(X_final, y_final)
阈值优化¶
from sklearn.metrics import precision_recall_curve
# 找到最优阈值
precision, recall, thresholds = precision_recall_curve(y_test, y_pred_proba)
# 成本函数
costs = []
for threshold, p, r in zip(thresholds, precision, recall):
fn_cost = (1 - r) * fraud_count * 2000
fp_cost = (1 - p) * normal_count * 50
total_cost = fn_cost + fp_cost
costs.append(total_cost)
optimal_threshold = thresholds[np.argmin(costs)]
# 结果:0.35 (而非默认 0.5)
5. 决策结果¶
模型性能¶
| 指标 | 目标 | 实际 | 达成 |
|---|---|---|---|
| 召回率 | >90% | 92% | ✅ |
| 精确率 | >80% | 85% | ✅ |
| 误报率 | <5% | 4.2% | ✅ |
| AUC | >0.95 | 0.97 | ✅ |
| 决策时间 | <100ms | 45ms | ✅ |
业务影响¶
| 指标 | 实施前 | 实施后 | 改善 |
|---|---|---|---|
| 欺诈损失 | ¥50M/年 | ¥22M/年 | -56% |
| 误报数量 | 75,000/日 | 21,000/日 | -72% |
| 人工审核 | 50 人 | 15 人 | -70% |
| 用户投诉 | 500/月 | 120/月 | -76% |
ROI 分析¶
投入: - 系统开发:¥2M - 年度运营:¥0.5M
收益: - 欺诈损失减少:¥28M/年 - 人力成本节约:¥3.5M/年 - 总收益: ¥31.5M/年
ROI: 15 倍
6. 经验教训¶
成功因素¶
- ✅ 成本敏感学习 (而非准确率)
- ✅ 集成模型提升稳定性
- ✅ 阈值优化基于业务成本
- ✅ 实时特征工程 (<50ms)
踩坑记录¶
- ⚠️ 初期使用准确率指标 → 99.5% 但无法识别欺诈
- ⚠️ 阈值用默认 0.5 → 漏报率高
- ⚠️ 忽略特征时效性 → 决策超时
案例版本: v1.0 | 最后更新: 2026-06-03