用python作信用卡欺诈预测

一、项目简介

Credit Card Fraud Detection

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

是一个典型的分类问题,欺诈分类的比例比较小,直接使用分类模型容易忽略。在实际应用场景下往往是保证一定准确率的情况下尽量提高召回率。一个典型案例是汽车制造行业,一旦发生一例汽车安全故障,同批次的车辆需要全部召回,造成了巨大的经济损失。

二、数据印象

详细分析过程见在线脚本

在公众号 datadw 回复'欺诈'获取地址。

2.1. 简单数据分析

数据规模:中度规模(对于mac而言)。数据共284807条,后期算法选择需要注意复杂度。

数据特征:V1~V28是PCA的结果,而且进行了规范化,可以做一些统计上的特征学习;Amount字段和Time字段可以进行额外的统计学和bucket统计。 数据质量:无缺失值,数据规整,享受啊。 经验时间字段最好可以处理为月份、小时和日期,直接的秒数字段往往无意义。

2.2. 探索性数据分析

三、数据预处理

数据已经十分规整了,所以先直接使用基础模型来预测下数据。

L1规划化

L1规范化的模型

L2规范化

L2规范化的模型

Baseline基础模型:采用线性模型,利用L1的稀疏性,precisionrecall均可以达到0.85左右,roc_auc可以达到0.79左右。

基础模型结果

由上图可见:

  • precision较大时波动波动比较大。recall大于0.8后,准确率下滑严重。
  • AUC面积是0.97,后来根据参考文献3知,AUC大于0.92时之后比较难修正。

Baseline模型的评价metric

  1. 收集更多的数据,不适合这个场景。
  2. 改变评价标准:
    • 使用混淆矩阵计算准确度和回收度。
    • F1score
    • Kappa
    • ROC curves - sensitivity/specificity ratio

数据采样处理

- 收集等多数据:不适合这个场景。- 过采样Over-sampling:当数据集较少时,主动添加少类别的数据;
 SMOT算法通过插值来实现。不适合本数据集。容易过拟合,运算时间长。- 欠采样Under-sampling:
 当数据集足够大时,删除大类别的数据;集成方法`EasyEnsemble/BalanceCascade`
 通过将反例放在不同学习器中使用,从全局看不会丢失重要信息。

本案例数据量中等:选用欠采样+EasyEnsemble的方式进行数据处理。

使用im-balanced生成测试数据。

http://contrib.scikit-learn.org/imbalanced-learn/auto_examples/index.html

from imblearn.ensemble import EasyEnsemblen_subsets = X.size * 2 / 
(us_X.size) - 1ee = EasyEnsemble(n_subsets=n_subsets)sample_X, 
sample_y = ee.fit_sample(X, y)

四、模型印象

模型: 选用easy_ensemble模型来优化。

具体实现代码见在线脚本

在公众号 datadw 回复'欺诈'获取地址。

核心adboost代码如下:

结果如下:

easy_ensembel

对比普通的adboost数据

对比图

由上图可知,easy_ensemble提升了平滑度,但是AUC未有提升。

五、特征选择和特征学习

  • L1模型进行了嵌入式的特征选择,效果优于L2模型。在寻找解释性时会有帮助。

根据数据的统计特征,可以学习一些统计变量。

统计学习

增加如下的特征。

六、分析结果 使用SNE分析(常用于非线性可视化分析)来观看一次under_sample的结果。

https://bindog.github.io/blog/2016/06/04/from-sne-to-tsne-to-largevis/

如下图所示

SNE图

由上图可知两种类别的数据是可以区分的,但是部分数据融合在一起,当追求recall较大时,将会误判大量数据。

七、迭代问题

可以优化的方向:

  • 可以通过学习新的特征,将数据在新维度上拉开距离
  • 在计算机能力允许的情况下,设置合适的round轮次来调参。

八、表述模型

  • 根据模型的SNE图和数据性可知,数据质量是比较好的。
  • easy_ensemble模型本身使用了adboost和bagging,每棵tree的复杂度不高,降低了bias;通过bagging,降低了variance。最终得到了较好的P-R图和AUC值。
  • 通过LR模型的稀疏性特征值,可以制作出一个解释性报告。

参考

  1. GBM vs xgboost vs lightGBM

https://www.kaggle.com/nschneider/gbm-vs-xgboost-vs-lightgbm

imbalanced-learn

http://contrib.scikit-learn.org/imbalanced-learn/index.html

Exploratory Undersampling for Class-Imbalance Learning

https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/tsmcb09.pdf

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2017-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

ECCV 2018 | 中山大学&商汤提出部分分组网络PGN,解决实例级人体解析难题

识别每个语义部分(如手臂、腿等)是人体解析中最基本、最重要的一部分。不仅如此,它还在许多高级应用领域中发挥了重要的作用,例如视频监控 [38]、人类行为分析 [...

26250
来自专栏达观数据

干货分享丨基于半监督学习技术的达观数据文本过滤系统

社交、直播、论坛、电商等各类平台每天都会产生海量UGC(User Generated Content),其中不可避免地混杂有大量垃圾文本。这些内容不但严重影响用...

38170
来自专栏AI科技大本营的专栏

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

【AI科技大本营导读】互联网公司每天都面临着处理大规模机器学习应用程序的问题,因此我们需要一个可以处理这种超大规模的日常任务的分布式系统。最近,以集成树为构建模...

17820
来自专栏数据派THU

20篇顶级深度学习论文(附链接)

本文讲述了深度学习正值快速发展进化阶段,新技术,新工具以及新的应用实现正在深刻改变着机器学习领域并不断获得累累硕果。

14530
来自专栏AI研习社

如何解决自然语言处理中 90% 的问题

本文为雷锋字幕组编译的技术博客,原标题How to solve 90% of NLP problems: a step-by-step guide,作者Emm...

29660
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 13 - AI驯兽师:神经网络调教综述

在未来的AI时代,“手工程序”将变得越发稀有,而基于通用AI程序,通过大数据“习得”而生的程序,会无所不在。到那时,程序员将光荣卸任,取而代之的是一个新职业物...

44670
来自专栏PPV课数据科学社区

【学习】十大数据挖掘算法及各自优势

1. C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了...

40650
来自专栏机器学习算法与Python学习

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

23190
来自专栏AI研习社

基于 Jetson 在 Aerial 系统内进行深度学习

无人驾驶空中系统(UAS)在过去十年中被广泛应用,尽管 UAS 最早被应用在军事上,事实证明,它们在很多其它领域都是有用的,包括农业、地理制图、航空摄影、搜索和...

15010
来自专栏CreateAMind

关于深度学习的机理,优化和网络结构的一些个人观点

博士一把年纪,理论物理已经没心读下去了,不知廉耻来知乎卖萌,还是深度学习卖萌,才转行半年多就敢出来卖,好羞耻呀~喵~

16720

扫码关注云+社区

领取腾讯云代金券