用机器学习构建模型,进行信用卡反欺诈预测

本文通过利用信用卡的历史交易数据进行机器学习,构建信用卡反欺诈预测模型,提前发现客户信用卡被盗刷的事件。

1. 数据的下载和数据介绍

数据的下载地址为

https://www.kaggle.com/dalpozz/creditcardfraud/data

数据集是2013年9月使用信用卡进行交易的数据。此数据集显示两天内发生的交易,其中284,807笔交易中有492笔被盗刷。数据集非常不平衡,被盗刷占所有交易的0.172%。不幸的是,由于保密问题,我们无法提供原始数据。特征V1,V2,... V28是使用PCA获得的主要组件。特征Class是响应变量,如果发生被盗刷,则取值1,否则为0。

数据包含了Time,V1,V2,..V28,Amount,Class一共31列,其中Class是标签列,其中0代表没有被盗刷,1表示被盗刷。

2. 分析工具介绍

我们使用的工具是FEA-spk技术,它的底层基于最流行的大数据开发框架spark,对各种算子的操作都是基于DataFrame的,使用FEA-spk来做交互分析,不但非常简单易懂而且几乎和spark的功能一样强大,更重要的一点,它可以实现可视化,处理的数据规模更大,可以进行分布式的机器学习等

3. 案例的具体实现步骤如下

1. 数据预处理(Pre-processing Data)

(1) 加载数据

104605_g8GG_3115904.png

104616_8lEF_3115904.png

查看一下数据的大小

104627_Cann_3115904.png

可以看到一共有28万多条

(2) 缺失值的处理,缺失值的占比情况

104639_rWkM_3115904.png

104650_Ao9I_3115904.png

 可以看到没有缺失值

2. 特征工程(Feature Engineering)

统计目标列的情况,这里涉及到样本的不平衡问题

104443_SHuu_3115904.gif104702_gDFP_3115904.png

104708_wOV9_3115904.png

可以看到数据严重的不均衡,样本不平衡影响分类器的学习,下面进行欠采样。

104719_zRMx_3115904.png

104730_yIFW_3115904.png

可以看到数据比较平衡了。

3. 特征选择

(1)由于Spark机器学习只支持double类型的数据,所以我们将数据转化为double类型的。

104443_HlGH_3115904.gif104743_bIt5_3115904.png

104751_pUZ8_3115904.png

(2) 将特征聚合为向量

104803_JTtA_3115904.png

104810_kRXM_3115904.png

(3) 我们可以看到Time和Amount对应的向量的规格和其他特征相差较大,因此我们需对其进行归一化处理。

104822_BQOW_3115904.png

104829_PE9d_3115904.png

(4)我们看到特征向量一共有30个特征,特征的个数太多了,下面我们对特征进行卡方特征选择,选取10个最有预测能力的特征。

105052_DtO9_3115904.png

105100_e4kP_3115904.png

可以看到特征向量的维度变为10维了。

4.将数据划分为训练集和测试集

105114_twgn_3115904.png

105123_q9Z8_3115904.png

105132_NV1K_3115904.png

105149_4H1c_3115904.png

可以看到,a表和b表的比例大约为10:1。

5. 模型设定与预测

(1)对训练集df6表构造逻辑回归模型

105209_vKKP_3115904.png

(2)此刻的模型已经建立好了,下面我们用测试集进行预测

105221_BuY6_3115904.png

105228_dT8r_3115904.png

其中prediction列就是测试集的预测结果。

(3)对模型进行打分,评价模型的好坏

105239_kEwS_3115904.png

105245_qA0B_3115904.png

可以看到,模型的准确率达到了91%以上。

(4) 将模型保存到hdfs上面,以便下次使用

105259_hzDd_3115904.png

105307_osWl_3115904.png

(5) 加载模型

105321_JOnG_3115904.png

以上就是信用卡反欺诈模型的构建过程,关注openfea,会有更多精彩的内容推荐。

转载于:https://my.oschina.net/u/3115904/blog/1563678

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值