使用机器学习进行信用卡欺诈检测
使用机器学习进行信用卡欺诈检测
Photo by 纳赫勒·阿卜杜勒·哈迪 on 不飞溅
对问题的理解
仅在巴西,从 2022 年 1 月到 7 月, 超过 500 万起未遂犯罪 在互联网上,与 2021 年的 250 万相比,增长了 97%。转化为价值观, 金融诈骗 应在 2022 年达到 25 亿雷亚尔大关。
在这些欺诈行为中,涉及信用卡的欺诈行为非常重要,因为不被发现将给消费者和金融机构带来相当大的损失。
有多种情况可能导致欺诈者成功进行欺诈性信用卡付款。尽管已知某些模式比其他模式更频繁地发生,但目前还没有关于信用卡欺诈类型的明确分类法。
这是一场猫捉老鼠的游戏,欺诈模式会随着时间而改变。
另一个需要考虑的因素是误报的数量,也就是说,当您尝试购物并被预防性封锁时——这可能会造成压力和尴尬。
由于所有这些原因,通过人工智能进行欺诈检测领域的投资每年都在增长,这代表着一个巨大的机会 数据科学 .
拥有大量数据作为历史基础,机器学习算法仅比以前的算法好一点,就可以节省数百万雷亚尔。这就是挑战,越来越多地改进算法的使用来抑制或防止欺诈交易。
在本文中,我们将解决信用卡欺诈问题,这是银行和金融科技公司等金融机构主要关注的问题之一。
该项目遵循了开发流程 CRISP-DM **** 从了解问题开始,然后进入评估阶段。
所有项目代码都可用 这里 .
了解数据
该项目中使用的数据由一些欧洲信用卡公司提供。 ○ 数据集 代表在两天内发生的金融业务,在近 29 万笔交易中分类了 492 起欺诈行为。
这是一个极 不平衡 ,其中欺诈仅占总数的 0.17%。
另一个有趣的细节是 特征 都是数字,并且被错误描述(由于隐私和安全问题)。因此,列名由 [V1,V2,V3...,V28] 表示
在原始数据页面 , 它还被告知变量经历了称为 主成分分析 ( 主成分分析 — PCA)。
PCA 技术允许降维,同时保留尽可能多的信息。为了实现这一点,算法找到了一组新的特征——所谓的 成分 .
这些分量小于或等于原始变量。在这个项目中,PCA 转换找到的组件是列 [V1,V2,V3...,V28]。
○ 数据字典 如下所示:
时间 :当前记录事务与数据集中第一个事务之间经过的秒数;
V1 — V28 :可能是 PCA 缩减以保护用户身份和机密资源的结果;
数量 :交易金额;
班级 : 1 表示欺诈交易,0 否则。
让我们开始分析!
如上所述,V1-V28 的值是用 PCA 转换的,因此无法知道每一列实际代表什么。
通过对数据相关性的分析,可以看出属性与我们的目标之间没有强相关性。 Amount 属性与 V2、V5、V7 和 V20 属性之间存在平均相关性。
数据非常不平衡。 正常交易记录有284315条,欺诈记录只有492条,给出的数据不到1%。
期间发生了多少次交易?
通过交易随时间的直方图,可以在数据中看到一个非常有趣的模式:
或多或少发生欺诈的趋势遵循当天的正常交易流程。当然是适当的比例。
从交易价值分布来看,我们发现大多数欺诈行为都是低价值的。经核实, 75% 的欺诈行为的价值低于 105.89 欧元
由于数据非常不平衡,并且我想检测欺诈行为,因此我不会排除可能被视为异常值的数据。 我将为建模步骤保留所有欺诈数据。
再深入一点,你可以看到有一个 上午 8 点到晚上 9 点之间的正常交易强度要高得多 .
一天中有两次欺诈交易发生的频率更高,分别是凌晨 2:00 和上午 11:00。
这是有趣的信息。它将用于建模过程!
数据准备
训练、验证和测试的数据准备阶段,避免 数据泄露 .
在这里,数据以某种方式分离 有故事的 这边走:
- 70% 培训
- 15% 验证
- 15% 测试
由于交易金额和时间数据没有被格式化,所以它们已经被标准化了 StandScaler做sklearn ,在分离训练集、验证集和测试集之后。
处理不平衡
由于类之间的差异非常大,我认为使用欠采样进行处理可能不是一个好的选择,因为会有很多数据丢失。
因此,出于比较目的,我使用了两种平衡技术:
造型
为了开始建模,我定义了一个 基线 使用不平衡数据和虚拟分类器模型,a 哑分类器 .
为观察验证数据定义的指标是:准确度、精确度、召回率、平均精确度、F1 分数、混淆矩阵以及 ROC_AUC 和精确度 x 召回率曲线。
对于这个问题,我们将仔细研究 Recall、F1-Score、ROC_AUC 曲线和 Precision x Recall 曲线的指标。
模型假人:
**虚拟模型指标** :
**准确性** : 0.9982678308092039
**精确** : 0.0
**记起** : 0.0
**平均精度** : 0.0017321691907960957
**F1-分数** : 0.9982678308092039
**ROC-AUC** : 0.5
由 True Label 归一化的混淆矩阵。
使用混淆矩阵,我们看到模型命中了第 0 类的所有预测并错过了第 1 类的所有预测,并且仍然有 99% 的准确率。 这反映了高度不平衡的数据。
ROC 曲线的值为 0.5 表明该模型与随机预测器是一回事,即它猜测所有内容为 0 并查看会发生什么。 **一个完全愚蠢的模型! **
建议用于评估的模型 :
选择了三个模型进行建模。
- 降梯度
- 梯度提升
- 随机森林
这些模型在正确检测能力和防止过度拟合方面具有优势。
以下是验证结果的摘要……
具有平衡随机下采样类型的降梯度
**模型指标下的 SGDC** :
**准确性** : 0.9445705858945249
**精确** : 0.029532403609515995
**记起** : 0.972972972972973
**平均精度** : 0.029593021226662002
**F1-分数** : 0.9445705858945249
**ROC-AUC** : 0.9594917801004982
带 SMOTE 类型平衡的下降梯度
**SGDC SMOTE 模型指标** :
**准确性** : 0.973900423679221
**
精确** : 0.060016906170752324
**记起** : 0.9594594594594594
**平均精度** : 0.2948468420471046
**F1-分数** : 0.973900423679221
**ROC-AUC** : 0.9921292901690115
随机下采样平衡的梯度提升
**模型度量下的梯度提升** :
**准确性** : 0.9551274548816742
**精确** : 0.035768261964735516
**记起** : 0.9594594594594594
**平均精度** : 0.6581426108060022
**F1-分数** : 0.9551274548816742
**ROC-AUC** : 0.9922276780027618
使用 SMOTE 型平衡提升梯度
**梯度提升 SMOTE 模型指标** :
**准确性** : 0.9835443926874371
**精确** : 0.09102730819245773
**记起** : 0.9459459459459459
**平均精度** : 0.7633265633632431
**F1-分数** : 0.9835443926874371
**ROC-AUC** : 0.9914206125838831
具有随机欠采样类型平衡的随机森林
**模型下随机森林的度量** :
**准确性** : 0.9726598160155427
**精确** : 0.05744336569579288
**记起** : 0.9594594594594594
**平均精度** : 0.7861966803216005
**F1-分数** : 0.9726598160155427
**ROC-AUC** : 0.9943857145301561
带 SMOTE 类型平衡的下降梯度
**随机森林 SMOTE 模型的指标** :
**准确性** : 0.9996722923152548
**精确** : 0.9054054054054054
**记起** : 0.9054054054054054
**平均精度** : 0.9223510171307236
**F1-分数** : 0.9996722923152548
**ROC-AUC** : 0.9831897811005368
模型分析:
随机森林模型的召回率超过 90%,但使用 SMOTE 平衡数据训练的模型的准确度要好于使用随机欠采样的模型。平均精度在 78% 以上。查看 roc-auc 和precision-recall 曲线,我们看到两种情况下指标之间的关系更加平衡。 SMOTE 训练模型的 F1 得分最高,为 99.97%。准确率和召回率均为 90%。
从模型结果来看,来自随机森林的那些似乎是最有趣的。 因此,我选择了与 Random Under Sampling 平衡的随机森林模型作为最适合进入最后一个测试步骤的模型,因为它在两者之间具有最好的召回率和最高的 ROC AUC。 有了这个,我试图在不损害正常交易检测的情况下检测尽可能多的欺诈行为。
最终模型评估
使用建模中选择的模型,测试集的检测结果如下所示:
**带有测试数据的最终模型指标** :
**准确性** : 0.9735967417255746
**精确** : 0.05489864864864865
**记起** : 0.8783783783783784
**F1-分数** : 0.9735967417255746
**平均精度** : 0.7201919477344203
**ROC-AUC** : 0.9659405466242833
最终测试结果接近验证结果。这是一个好兆头!
对于已经处理过数据并且与原始集合没有太大关系的问题,在不了解所有属性的含义的情况下,这是一个有趣的结果。
也许,如果使用更先进的技术,或者如果我们用更多记录改进原始数据集,这个结果甚至可以得到改善。
好的,我们用一个模型来结束这个过程,我们可以说它 正确分类银行交易中 88% 的欺诈行为 .
回到业务问题……
借助此类机器学习模型,反欺诈系统可以根据数据多一种选择,以提醒调查人员并更准确地检测欺诈行为。这是一个 关键绩效指标 (KPI) 这些系统,可以每天测量。假设一名调查员设法在一天内分析了 X 个欺诈警报。最大化生成的实际上是欺诈的警报数量是此类系统的主要目标。衡量这种准确性可能是一个有趣的 KPI,用于确定机器学习模型为业务带来的价值!
结论
- 在这个项目中可以看出,欺诈检测问题并不是那么简单,机器学习模型在模式识别中非常有用。
- 最终模型获得了一个有趣的结果。而且,与将预测猜测为 0 类的哑分类器相比,经过训练的模型要优越得多。
- 我估计,只要测试更先进的技术,例如超参数参数化中的交叉验证和网格搜索,或者一些深度学习技术也可以在这里提供帮助,就可以获得更好的结果。
我们有一个模型可以付诸行动!很快我会在这里发布一篇新文章,介绍如何部署这个相同的模型!
啊,在关闭页面之前,别忘了看看这个其他的数据分析项目关于 爱彼迎 **. **
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效