前言
本人最近出于公司的业务需求,要构建反欺诈模型,所以测试了逻辑回归、决策树、随机森林、神经网络、SVM等一系列单一
机器学习算法,以及集成学习等方法,在这里将实现方式分享给各位,毕竟业务场景不一样,结果可能完全相悖,本文的目的仅希望各位在实现各类算法时能较快速的上手。
由于数据的商业保密性,此处不贴出数据集,不喜勿喷。好了,废话不多说,开始正文。
数据初识
我整合的数据集500多个变量,包含申请信息、贷款信息、第三方数据等,目标是是否欺诈,FRAUD_FLAG就是我们的目标变量。以下是比较初步的数据整理
数据初识
如上所示,2万多笔,欺诈比例约4%左右,算是比较低的了,这还是放宽欺诈定义的结果,按照严格的定义,欺诈比例只有6‰左右。
变量选择
在建模之前我们需要进行数据质量的检验、探索分析等,由于此文的目的是各类机器学习算法的快速实现,此处略过,直接来到变量的选择。
变量选择之前,由于我们的目标变量是严重失衡数据,我们需要先利用somte方法对少类进行过采样,敲黑板了,过采样的方法非常重要,若不进行过采样,可能完全没法识别欺诈样本,当然,这跟我们的数据质量、数据广度、数据浓度是有关系的。
变量的重要性我们可以通过随机森林实现,由randomforest函数的importance来指定,随机森林变量重要性的计算方式可以通过4种方法,分类问题可以选基于OOB,计算预测误差率的MeanDecreaseAccuracy方法,和基于样本拟合模型,计算Gini系数的MeanDecreaseGini方法;回归问题可以类似的选择%IncMSE和IncNodePrity方法。此处我们选择基于信息增益原理的Gini系数。
这里Gini系数≥10的变量一共34个变量,接下来就是数据集的切分了。事实上我们还可以进行lasso或弹性网络或逐步回归进一步筛选变量,我最后的探索结果表明,基于这样一个数据量的数据集,不太适合采用非常高维的数据,很容易造成overfitting的现象,而在少变量的情形下(10个以内),逻辑回归更加稳定。
数据划分
如上述结果,测试集和训练集的欺诈比例都在4%左右。准备工作做完了,就开始正式建模。
逻辑回归
AUC面积的计算还可以调用ROCR包来计算,严格来说,ROCR得到的才是真正的AUC,此处计算的只是一个最佳点和原点以及顶点的三角形面积,所以通常比ROCR的结果要小。
这里我们可以看到模型在测试集的auc面积,表现相当一般,可以说是比较差,才0.64。通常来说,auc面积=1,是非常完美的分类器,在0.9-1之间是很优秀的分类器,在0.8-0.9之间是一个比较良好的分类器,在0.7-0.8之间则是一般的的分类器,0.6-0.7之间则需要谨慎使用了,0.6以下就是非常坏的分类器了,基本上跟随机猜没多少区别。
随机森林
尽管随机森林的表现依然不能让人满意,但至少比逻辑回归有所提升。
今天先写到这里,剩下的找时间再写~~~