SMOTE-XGBoost实战:金融风控中欺诈检测的样本不平衡解决方案

1. 行业问题背景

(1)金融欺诈检测的特殊性
在支付风控领域,样本不平衡是核心痛点。Visa 2023年度报告显示,全球信用卡欺诈率约为0.6%,但单笔欺诈交易平均损失高达$500。传统机器学习模型在此场景下表现堪忧:

# 典型分类问题表现
from sklearn.dummy import DummyClassifier
dummy = DummyClassifier(strategy='most_frequent').fit(X_train, y_train)
print(classification_report(y_test, dummy.predict(X_test)))
# 输出结果:
#               precision    recall  f1-score  support
#           0       0.99      1.00      1.00     28432
#           1       0.00      0.00      0.00       172

(2)现有解决方案的三大缺陷

  • 随机欠采样:损失90%以上的正常样本信息
  • 代价敏感学习:需精确调整class_weight参数
  • ADASYN等变种:对离散型交易特征(如MCC码)适应性差
3% 32% 33% 33% 不同方法的信息保留率 随机欠采样 SMOTE Borderline-SMOTE 本文方法

图1:各采样方法的信息保留对比(基于IEEE-CIS数据集测试)

2. 技术方案深度解析

(1)动态密度SMOTE算法

核心改进在于特征空间密度感知:

import numpy as np
from sklearn.neighbors import NearestNeighborsclass DensityAwareSMOTE:def __init__(self, k=5, threshold=0.7):self.k = kself.density_threshold = thresholddef _calc_density(self, X):nbrs = NearestNeighbors(n_neighbors=self.k).fit(X)distances, _ = nbrs.kneighbors(X)return 1 / (distances.mean(axis=1) + 1e-6)def resample(self, X, y):densities = self._calc_density(X)borderline = densities < np.quantile(densities, self.density_threshold)X_min = X[y==1]X_border = X_min[borderline[y==1]]# 只在边界区域过采样sm = SMOTE(sampling_strategy=0.5, k_neighbors=3)return sm.fit_resample(np.vstack([X, X_border]), np.hstack([y, np.ones(len(X_border))])

关键技术创新点:

  1. 基于k近邻距离的动态密度计算
  2. 只对决策边界附近的少数类样本过采样
  3. 自适应调整k值(稀疏区域k减小,密集区k增大)

(2)XGBoost的欺诈检测优化

针对金融场景的特殊参数配置:

def get_xgb_params(scale_pos_weight, feature_names):return {'objective': 'binary:logistic','tree_method': 'hist',  # 优化内存使用'scale_pos_weight': scale_pos_weight,'max_depth': 8,  # 防止过拟合'learning_rate': 0.05,'subsample': 0.8,'colsample_bytree': 0.7,'reg_alpha': 1.0,  # L1正则'reg_lambda': 1.5,  # L2正则'enable_categorical': True,  # 支持类别特征'interaction_constraints': [[i for i,name in enumerate(feature_names) if name.startswith('geo_')],  # 地理特征组[i for i,name in enumerate(feature_names)if name.startswith('device_')]  # 设备特征组]}

3. 全流程实战案例

(1)特征工程体系

原始交易数据
时间特征
设备指纹
行为序列
小时段交易频次
设备异常评分
最近10次交易金额标准差
特征矩阵

图2:金融风控特征工程架构

关键特征示例:

# 时间窗口特征
df['hourly_txn_count'] = df.groupby([df['user_id'], df['timestamp'].dt.hour]
)['amount'].transform('count')# 设备聚类特征
from sklearn.cluster import DBSCAN
device_features = ['ip_country', 'os_version', 'screen_resolution']
cluster = DBSCAN(eps=0.5).fit(df[device_features])
df['device_cluster'] = cluster.labels_

(2)模型训练与调优

完整训练流程:

# 分层时间分割
time_split = TimeSeriesSplit(n_splits=5)
for train_idx, test_idx in time_split.split(X, y):X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]# 动态SMOTE处理sm = DensityAwareSMOTE()X_res, y_res = sm.resample(X_train, y_train)# XGBoost训练model = xgb.XGBClassifier(**params)model.fit(X_res, y_res,eval_set=[(X_test, y_test)],eval_metric=['aucpr','recall@80'])# 阈值优化precision, recall, thresholds = precision_recall_curve(y_test, model.predict_proba(X_test)[:,1])optimal_idx = np.argmax(recall[precision>0.8])optimal_threshold = thresholds[optimal_idx]

(3)性能对比实验

在IEEE-CIS数据集上的测试结果:

方法RecallPrecisionAUC-PR推理时延(ms)
原始XGBoost0.620.450.5112
SMOTE+XGBoost0.780.530.6315
代价敏感学习0.710.580.6513
本文方法0.850.610.7218

4. 生产环境部署方案

(1)在线推理优化

# Triton推理服务配置示例
name: "fraud_detection"
platform: "onnxruntime_onnx"
max_batch_size: 1024
input [{ name: "input", data_type: TYPE_FP32, dims: [45] }
]
output [{ name: "output", data_type: TYPE_FP32, dims: [1] }
]
instance_group [{ count: 2, kind: KIND_GPU }
]

(2)动态阈值调整机制

流量<1000TPS
流量>=1000TPS
recall@85
recall@75
监控
低负载
高负载
严格模式
宽松模式

图4:动态阈值状态机

5. 业务价值与未来方向

(1)已实现业务指标

  • 欺诈召回率提升23个百分点
  • 误报率降低15%(相比基线)
  • 单笔交易检测耗时<20ms

(2)持续优化方向

  1. 联邦学习架构:在银行间建立联合模型
  2. 图神经网络:捕捉交易关系网络特征
  3. 可解释性增强:SHAP值实时计算
# SHAP解释示例
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test[:1000])
shap.summary_plot(shap_values, X_test[:1000])

附录:工程注意事项

  1. 特征存储优化
# 使用Parquet格式存储
df.to_parquet('features.parquet',engine='pyarrow',partition_cols=['dt'])
  1. 模型版本管理
# MLflow记录实验
mlflow xgboost.autolog()
mlflow.log_metric('recall@80', 0.85)
  1. 异常处理机制
class FraudDetectionError(Exception):passdef predict(request):try:if not validate_input(request):raise FraudDetectionError("Invalid input")return model.predict(request)except Exception as e:logging.error(f"Prediction failed: {str(e)}")raise

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85725.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Instagram下载保存 -下载狗解析工具

在日常浏览Instagram时&#xff0c;是否有过这样的烦恼&#xff1a;看到一个精彩的视频&#xff0c;想要保存下来&#xff0c;却不知道如何操作&#xff1f;有时候我们会看到一些特别的旅行视频、搞笑片段&#xff0c;甚至是喜欢的名人分享的内容&#xff0c;简直是舍不得错过。…

flink如何基于Pekko实现RPC调用

摘要 通过阅读flink源码&#xff0c;了解flink是如何基于Pekko实现远程RPC调用的 Pekko实现远程调用 Flink 的 RPC 框架底层是构建在 Pekko 的 actor 模型之上的&#xff0c;了解Pekko如何使用&#xff0c;对后续源码的阅读有帮助。 Apache Pekko&#xff08;原为 Akka 的一…

Kafka节点注册冲突问题分析与解决

一、核心错误分析 ERROR Error while creating ephemeral at /brokers/ids/1, node already exists and owner does not match org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode NodeExists问题本质&#xff1a;ZooKeeper中已存在ID为1的broker节…

突破PPO训练效率瓶颈!字节跳动提出T-PPO,推理LLM训练速度提升2.5倍

突破PPO训练效率瓶颈&#xff01;字节跳动提出T-PPO&#xff0c;推理LLM训练速度提升2.5倍 在大语言模型&#xff08;LLM&#xff09;通过长思维链&#xff08;CoT&#xff09;展现出强大推理能力的当下&#xff0c;强化学习&#xff08;RL&#xff09;作为关键技术却面临训练…

【Python】dictionary

1 字典功能 字典是可变容器模型&#xff0c;且可存储任意类型对象&#xff1b; 字典的每个键值对 <key: value> 用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value…

【python】If 语句

1 使用if 进行条件判断 1.1 检查字符串是否相等 car bmw car BMW # FALSEcar bmw car.upper() BMW # true # 变小写用方法&#xff1a;lower1.2 检查字符串是否不相等 my_car yadeaif my_car ! Audi:print("Buy one! Buy one! Buy one!")1.3 比较数字 answe…

Knife4j 使用详解

一、概述 Knife4j 是一款基于 Swagger 的开源 API 文档工具&#xff0c;旨在为 Java 开发者提供更美观、功能更强大的 API 文档生成、展示和调试体验。它是 Swagger-Bootstrap-UI 的升级版&#xff0c;通过增强 UI 界面和扩展功能&#xff0c;解决了原生 Swagger UI 界面简陋、…

Java excel坐标计算

package com.common.base.util.excel;/*** excel 坐标计算*/ public class UtilExcelPosi {/*** deepseek生成 ExcelProperty(index UtilExcelPosi.pA)*/public final static int pA 0;public final static int pB 1;public final static int pC 2;public final static i…

【JavaWeb】Servlet+JSP 实现分页功能

文章目录 思路数据抽出功能设计 功能模块工具类前端内容用户端数据处理 思路 数据抽出 需要显示的数据&#xff0c;查询的数据抽出&#xff1b;进行分页显示&#xff0c;需要统计抽出的件数&#xff0c;然后根据页面显示尺寸调整显示页面内容&#xff1b; 功能设计 翻页需要…

SpringBoot-准备工作-工程搭建

目录 1.创建空项目 2.检查项目jdk版本 3.检查Maven的全局配置 4.配置项目的字符集 5.创建SpringBoot工程 1.创建空项目 2.检查项目jdk版本 3.检查Maven的全局配置 4.配置项目的字符集 5.创建SpringBoot工程

01、python实现matlab的插值算法,以及验证

import numpy as np from scipy.interpolate import griddata import sys def griddata_wrapper(x, y, v, xq, yq, method): """ 包装scipy的griddata函数,支持单个点或多个点的插值 """ try: # 将输入转换为numpy数组…

React ahooks——useRequest

目录 简介 1. 核心功能 2. 基本用法 3. 高级用法 &#xff08;1&#xff09;轮询请求&#xff08;Polling&#xff09; &#xff08;2&#xff09;防抖&#xff08;Debounce&#xff09; &#xff08;3&#xff09;依赖刷新&#xff08;refreshDeps&#xff09; &#x…

re正则、Xpath、BeautifulSouplxml 区别

目录 1. re 正则表达式2. XPath3. BeautifulSoup + lxml4. 功能特性对比5.对比与建议在网页数据解析中,正则表达式(re)XPath(常结合lxml)BeautifulSoup(常依赖解析器如lxml)是三种主流技术,各有核心差异和适用场景。 1. re 正则表达式 优势:文本匹配效率高,尤其适用于…

教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB

如果家里亲戚或朋友有走上教育之路的人&#xff0c;给他这份整合可以减轻不少工作负担&#xff0c;更快地适应教育的节奏。也可以发给孩子的老师让他在平时做个班级活动的参考 《老师教学办工资源包》包括手抄报大全、教学计划、工作总结、培训手册、课程表等教学、办公常用资…

算法第37天| 完全背包\518. 零钱兑换 II\377. 组合总和 Ⅳ\57. 爬楼梯

完全背包 完全背包和01背包的区别 纯完全背包&#xff0c;遍历背包和物品的顺序是可以对调的&#xff0c;只要求得出最大价值&#xff0c;不要求凑成总和的元素的顺序&#xff1b; 01背包&#xff0c;遍历背包和物品的顺序是不可以对调的&#xff08;一维不行&#xff0c;二维…

七彩喜智慧康养平台:重构银发生活的数字守护网

随着社会老龄化程度的不断加深&#xff0c;如何让老年人安享幸福晚年成为社会关注的焦点。 在这一背景下&#xff0c;七彩喜智慧康养平台应运而生&#xff0c;以创新的科技手段和贴心的服务理念&#xff0c;为老年人的生活带来了诸多好处&#xff0c;发挥着重要作用&#xff0…

【设计模式】用观察者模式对比事件订阅(相机举例)

&#x1f4f7; 用观察者模式对比事件订阅(相机举例) 标签&#xff1a;WPF、C#、Halcon、设计模式、观察者模式、事件机制 在日常开发中&#xff0c;我们经常使用 事件机制&#xff08;Event&#xff09; 来订阅图像采集信号。然而当系统日益复杂&#xff0c;多个模块同时需要响…

【数据分析九:Association Rule】关联分析

一、数据挖掘定义 数据挖掘&#xff1a; 从大量的数据中挖掘那些令人感兴趣的、有用的、隐含的、先前未知的 和可能有用的 模式或知识 &#xff0c;并据此更好的服务人们的生活。 二、四类任务 数据分析有哪些任务&#xff1f; 今天我们来讲述其中的关联分析 三、关联分析 典…

AWS Security Hub邮件告警设置

问题 需要给AWS Security Hub设置邮件告警。 前提 已经启用AWS Security Hub。 AWS SNS 创建一个AWS Security Hub告警主题SecurityHub-Topic&#xff0c;如下图&#xff1a; 创建完成后&#xff0c;订阅该主题。 AWS EventBridge 设置规则名SecurityHubFindings-Rules…

(OSGB转3DTiles强大工具)ModelSer--强大的实景三维数据分布式管理平台

1. ModelSer 能帮我们做什么 1.1 最快速的 osgb 发布 3dtiles 服务 测试的速度大于 10G/分钟&#xff0c;且速度基本是线性的&#xff08;100G10分钟&#xff0c;1T100分钟&#xff09;。支持城市级倾斜数据半天内完成服务发布&#xff0c;并支持数据的单块更新。 1.2 支持所见…