发布网友 发布时间:2022-09-15 12:53
共1个回答
热心网友 时间:2023-10-09 04:15
数据集来自于某银行信用卡交易数据,显示两天内发生的交易几率,284,807笔交易中发生了492笔盗刷。
通过信用卡的历史交易数据,利用机器学习算法构建信用卡反欺诈预测模型,提前发现客户信用卡被盗刷事件,并且要求模型准确度在95%以上最大化召回率。
1.2 欠采样处理:
这里我们先进行随机欠采样方法,将0样本的数量缩小到1样本相同数量
2. 上采样(Oversampling,过采样):
以大众类为标准,生成一些小众类样本,使大、小众类样本数相同。
上采样代表算法:SMOTE 算法
SMOTE是通过对小众样本进行插值来获取新样本的。比如对于每个小众类样本a,从 a最邻近的样本中选取 样本b,然后在对 ab 中随机选择一点作为新样本。
利用sklearn的train_test_split将数据源切分为训练集和测试集。
交叉验证是在机器学习建立模型和验证模型参数时常用的办法,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓"交叉"。
混淆矩阵:
正则化是结构风险最小化策略的实现,是在经验风险上加上一个正则化项或惩罚项。正则化项一般是负责模型复杂度的单调递增函数,模型越复杂,正则化值就越大。正则化的作用是选择经验风险与模型复杂度同时较小的模型。正则化符合奥卡姆剃刀原理,在所有可能选择的模型中,能够很好地解释数据并且十分简单的才是最好的模型。
L1与L2的选择:
(1)K折验证法,选择最佳正则化惩罚项:
运行结果:
(2)使用下采样数据进行训练,下采样数据进行测试
传递正则化惩罚项0.01,使用L1正则化方法,同时绘制出混淆矩阵,计算模型评估指标。
输出结果:
召回率为93.28%,精确率为93.92%
(3)预测原始数据
使用以上训练出的结果,对原始数据(未下采样处理)进行预测
结果:
(5)比较:使用原始数据训练模型及预测
这里我们使用原始数据对模型进行训练,对比使用下采样的预测结果
召回率为61.9%,精确率为88.35,%,评估指标均不如下采样训练结果,因此对于不平衡数据需要进行平衡处理。