总结:不平衡数据的分类,(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为主的更多相关文章

  1. 评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合

    1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...

  2. 【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping

    一.前述 调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结. 二.神经网络超参数调优 1.适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比 ...

  3. XGBoost模型的参数调优

    XGBoost算法在实际运行的过程中,可以通过以下要点进行参数调优: (1)添加正则项: 在模型参数中添加正则项,或加大正则项的惩罚力度,即通过调整加权参数,从而避免模型出现过拟合的情况. (2)控制 ...

  4. 看MySQL的参数调优及数据库锁实践有这一篇足够了

    史上最强MySQL参数调优及数据库锁实践 1. 应用优化 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL ...

  5. JVM内存模型及参数调优

    堆.栈.方法区概念区别 1.堆 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.根据垃圾回收机制的不同, Java堆有可能拥有不同的结构,最为常见的就是 ...

  6. Spark机器学习——模型选择与参数调优之交叉验证

    spark 模型选择与超参调优 机器学习可以简单的归纳为 通过数据训练y = f(x) 的过程,因此定义完训练模型之后,就需要考虑如何选择最终我们认为最优的模型. 如何选择最优的模型,就是本篇的主要内 ...

  7. Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优

    Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...

  8. 【Spark调优】内存模型与参数调优

    [Spark内存模型] Spark在一个executor中的内存分为3块:storage内存.execution内存.other内存. 1. storage内存:存储broadcast,cache,p ...

  9. MySQL数据库参数调优方法

    怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据 ...

随机推荐

  1. PHP 学习内容

    第一阶段: (PHP+MySQL核心编程) 面向对象编程 MySQL数据库, MySQL的优化细节. HTTP协议,http也是我们web开发的基石.对我们了解PHP底层机制有很大帮助,做到知其然,还 ...

  2. 【BZOJ3661】Hungry Rabbit 贪心

    [BZOJ3661]Hungry Rabbit Description 可怕的洪水在夏天不期而至,兔子王国遭遇了前所未有的饥荒,它们不得不去外面的森林里寻找食物.为了简化起见,我们假设兔子王国中有n只 ...

  3. Java学习笔记——java介绍

    Java开源语言 C语言闭源语言 IOS闭源系统  采用object-c语言开发 应用程序分类(从类型分类) C/S(Client Server):不联网的软件也属于C/S B/S(Browser S ...

  4. Gaby Ivanushka(快排)

    Gaby Ivanushka Once upon a time there lived a tsar that has a daughter — Beautiful Vasilisa. There w ...

  5. 九度OJ 1356:孩子们的游戏(圆圈中最后剩下的数) (约瑟夫环)

    时间限制:10 秒 内存限制:32 兆 特殊判题:否 提交:1333 解决:483 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为JOBDU的资深 ...

  6. iOS main函数讲解

    int main(int argc, char * argv[]) { @autoreleasepool { //四个参数 主要讲解后面两个参数 /* 第三个参数:UIApplication或者其子类 ...

  7. 我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法

    本文参考: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html http://www.blogjava.net/ ...

  8. mysql(root用户密码设置)

    root密码重置 修改root用户的密码: /*登录mysql*/ mysql -uroot -p123 /*切换数据库*/ use mysql /*修改root用户的密码*/ update user ...

  9. 【机器学习算法-python实现】svm支持向量机(3)—核函数

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gshengod/article/details/24983333 (转载请注明出处:http://b ...

  10. Javaweb基础--->利用监听器统计在线用户数量和用户信息

    首页布局:index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...