从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主
总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,主要有IsolationForest,OneClassSVM,LocalOutlierFactor,KMeans,其中IsolationForest效果最好。但是不及前两种方法。很少使用数据欠采样手法,因为数据无法反映整体特征而导致高误报。
从信用卡欺诈模型看不平衡数据分类:
https://www.kaggle.com/joparga3/in-depth-skewed-data-classif-93-recall-acc-now 说明了欠采样不会太好,整体精度难以上去 文中欠采样思路 np.random.choice(normal_indices, number_records_fraud, replace = False) 最后精度 134/(134+11090) = 0.011
https://www.kaggle.com/vincentlugat/votingclassifier-f1-score-0-88-data-viz 直接用原始数据训练,然后集成三个模型来做,效果也不错 VotingClassifier (
estimators = [('xgb', xgb_cfl), ('lt', log_cfl), ('rf', rf_cfl)],
voting='soft', weights = [1, 1, 1.33]) 最后效果Precision = 0.950
Recall = 0.826
F1_score = 0.884
https://www.kaggle.com/currie32/predicting-fraud-with-tensorflow 直接用原始数据进行训练,特征工程选择最有用特征,然后使用神经网络进行训练 t-SNE画图 最后效果 召回率82.93% 误报率 0.10% 也还是不错 特征选择使用distplot绘图人眼看 另外提取了一些额外特征 df['V1_'] = df.V1.map(lambda x: 1 if x < -3 else 0)
https://www.kaggle.com/janiobachmann/credit-fraud-dealing-with-imbalanced-datasets 非常非常好的文章 里面将过采样、欠采样、不做数据处理的几种方法都提到了,并且pca、tsne用到。其中,过采样是+神经网络处理,过采样使用的注意事项也提到了,必须要先split data再过采样。模型:undersample_model = Sequential([
Dense(n_inputs, input_shape=(n_inputs, ), activation='relu'),
Dense(32, activation='relu'),
Dense(2, activation='softmax')
])最后效果Confusion matrix, without normalization
[[56864 0]
[ 0 98]]还是非常不错的!
https://www.kaggle.com/bonovandoo/fraud-detection-with-smote-and-xgboost-in-r 使用smote+xgboost来做,最后效果:Precision 0.999841017488076,Recall 0.995497476124312。
https://www.kaggle.com/gargmanish/how-to-handle-imbalance-data-study-in-detail 过采样和欠采样都讨论了,其中欠采样+RF比较好,acc和recall都是0.86。
https://www.kaggle.com/kamathhrishi/detecting-credit-card-frauds 讲得比较全,Supervised Learning Algorithms(SVM、RF,注意RandomForestClassifier(max_depth=2, random_state=0) depth=2)和Anomaly Detection Algorithms,后者有One Class SVM(Acc 32%),Isolation Forest(Acc 89%还不错)。另外使用了过采样技术,评估隔离森林和RF,不过由于RF的depth=2,Acc和Recall是0.23、0.83。
https://www.kaggle.com/shelars1985/anomaly-detection-using-gaussian-distribution 直接使用Gaussian Distribution to detect Anamolous transactions.最终效果:Precision of around 60% with Recall of 74% 算是一个探索性的思路吧,可能不太适合实际工程项目。
https://www.kaggle.com/matheusfacure/semi-supervised-anomaly-detection-survey 探索了一些半监督的技术使用异常检测来做,分别为(1)Gaussian Model Based,Test Recall Score: 0.793 Test Precision Score: 0.701 Test F2 Score: 0.773(2)Histogram Based,不知道是啥原理,反正最后精度不咋的(3)聚类 GaussianMixture,Test Recall Score: 0.809 Test Precision Score: 0.726 Test F2 Score: 0.791(4)聚类IsolationForest,Test Recall Score: 0.760 Test Precision Score: 0.482 Test F2 Score: 0.681(5)神经网络,neural network named the autoencoder,Test Recall Score: 0.813 Test Precision Score: 0.294 Test F2 Score: 0.601效果也不咋的啊!
https://www.kaggle.com/rgaddati/unsupervised-fraud-detection-isolation-forest 也探索了使用异常检测思路,主要有IsolationForest,OneClassSVM,LocalOutlierFactor,KMeans综合看IF是效果最好的。
https://www.kaggle.com/lct14558/imbalanced-data-why-you-should-not-use-roc-curve 结论就是Handling highly imbalance classes and why Receiver Operating Characteristics Curve (ROC Curve) should not be used, and Precision/Recall curve should be preferred in highly imbalanced situations,对于不平衡数据训练模型,最重要的指标是Precision/Recall。
https://www.kaggle.com/cherzy/visualization-on-a-2d-map-with-t-sne 使用tsne做数据可视化,非常主流的方法!比PCA用得多。
https://www.kaggle.com/dstuerzer/optimized-logistic-regression 讨论了如何做LR的参数优化。
从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主的更多相关文章
- 评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合
1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...
- 【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping
一.前述 调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结. 二.神经网络超参数调优 1.适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比 ...
- XGBoost模型的参数调优
XGBoost算法在实际运行的过程中,可以通过以下要点进行参数调优: (1)添加正则项: 在模型参数中添加正则项,或加大正则项的惩罚力度,即通过调整加权参数,从而避免模型出现过拟合的情况. (2)控制 ...
- 看MySQL的参数调优及数据库锁实践有这一篇足够了
史上最强MySQL参数调优及数据库锁实践 1. 应用优化 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL ...
- JVM内存模型及参数调优
堆.栈.方法区概念区别 1.堆 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.根据垃圾回收机制的不同, Java堆有可能拥有不同的结构,最为常见的就是 ...
- Spark机器学习——模型选择与参数调优之交叉验证
spark 模型选择与超参调优 机器学习可以简单的归纳为 通过数据训练y = f(x) 的过程,因此定义完训练模型之后,就需要考虑如何选择最终我们认为最优的模型. 如何选择最优的模型,就是本篇的主要内 ...
- Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优
Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...
- 【Spark调优】内存模型与参数调优
[Spark内存模型] Spark在一个executor中的内存分为3块:storage内存.execution内存.other内存. 1. storage内存:存储broadcast,cache,p ...
- MySQL数据库参数调优方法
怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据 ...
随机推荐
- git修改用户名以及邮箱
git 修改当前的project的用户名的命令为:git config user.name 你的目标用户名; git 修改当前的project提交邮箱的命令为:git config user.emai ...
- 【JMeter4.0学习(九)】之定时器
目录: 固定定时器 高斯随机定时器 附 一.固定定时器 1.添加线程组 2.添加固定定时器 3.添加HTTP请求 4.添加结果树以及运行 二.高斯随机定时器 1.添加线程组 2.添加高斯随机定时器 ...
- Maven学习----dependencies与dependencyManagement的区别(转)
转自:http://blog.csdn.net/liutengteng130/article/details/46991829 1.DepencyManagement应用场景 当我们的项目模块很多的时 ...
- eclipse 导入maven 父子项目
你先要确认svn上是否是maven项目,否则要自己重新建一个maven项目然后直接引入目录了.如果确认是maven项目,那么有个两个方案.案一:先用任何client软件将svn下载.然后在eclips ...
- iOS - 富文本
iOS--NSAttributedString超全属性详解及应用(富文本.图文混排) ios项目中经常需要显示一些带有特殊样式的文本,比如说带有下划线.删除线.斜体.空心字体.背景色.阴影以及图文 ...
- 爬虫入门【5】PyQuery简介
PyQuery 目前最新的版本是1.3,基于最新版本进行介绍. 主要根据PyQuery的官方文档进行了更新. from pyquery import PyQuery as pq from lxml i ...
- 学院名单-211院校研招学院-中国教育在线(www.eol.cn)170915164402
[数据结果] 学校数.学院数:112,2657. [数据来源] 中国教育在线(www.eol.cn)211院校研招学院. http://www.eol.cn/html/ky/gxmd/211.shtm ...
- SQLServer将一个表内指定列的所有值插入另一个表
insert into records_resolve_bak(resolve_save_addr,resolve_time,resolve_status) select resolve_save_ ...
- 洛谷 P3629 [APIO2010]巡逻
题目在这里 这是一个紫题,当然很难. 我们往简单的想,不建立新的道路时,从1号节点出发,把整棵树上的每条边遍历至少一次,再回到1号节点,会恰好经过每条边两次,路线总长度为$2(n-1)$,根据树的深度 ...
- 跟我一起用Symfony写一个博客网站;
我的微信公众号感兴趣的话可以扫一下, 或者加微信号 whenDreams 第一部分:基础设置,跑起一个页面-首页 第一步: composer create-project symfony/fram ...