基于logistic回归的信用反欺诈预测模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
稍后我们将会使用过采样的方法解决样本不平衡的问题。
除以上操作外,为使数据更直观,还需进行单位转换的操作,将变量time原来的单位由秒变为小时。
为了便于算法和模型使用,我们采取了特种工程,从最初数据中提取相应特征,并进行适当选择以及不同维度的变化,优化模型的演示效果。
基于此,本文对所收集的数据包进行了特征工程探究。
将数据集分成欺诈Fraud和正常Normal两部分,观察两种情况下各个维度之间的相关性,我们可以轻松看出其颜色有深有浅,且浅色较接近0.0,而深色接近1或-1。
深入观察发现订单正常的颜色较浅,而欺诈的颜色较深,且欺诈与正常之间差异很大。
从图3可以看出,部分变量之间的相关性更突出这一现象在信用卡被盗刷的事件中是较为明显的。
其中变量V1、V2、V3、V4、V5、V6、V7、V9、V10、V11、V12、V14、V16、V17和V18以及V19之间的变化在信用卡被盗刷的样本中呈现
着一定的规律。
在欺诈与正常消费金额笔数方面,存在着明显差异,欺诈交易的金额全部在5000以内,
而正常的金额则分布广泛,
出大且集中的特点,而信用卡被盗刷的涉案金
额则呈现出小且分散的特点,
程度躲避信用卡持有者对消费交易产生怀疑而
采取有效的法律措施,犯罪分子更倾向于采用
低额盗刷手段。
了柱状图,
诈与正常在消费时间上的差异,欺诈交易发生
图1缺失值矩阵图图2被盗刷交易与总体关系图
图3欺诈Fraud与正常Normal比较图
图5正常消费时间图
图4欺诈与正常消费金额笔数分布差异图
和欺诈交易,可以删除。
与此同时,信用卡非正常交易和正常交易之间的变量分布情况有所不同,基于此特点,我们选择非同种信用卡状态下,动态变化明显的变量来分析。
因此剔除变量V8、V13、V15、V20、V21、V22、V23、V24、V25、V26、V27以及V28变量。
这也与我们最初用相关性图谱观察得出的结论一致。
除此之外还要剔除变量Time,保留离散程度更小的Hour变量。
有关特征缩放,之所以要特征缩放,是因为特征Hour 和Amount的规格和其他特征相差较大。
为解决之一问题,通过采用均值/标准差的方法进行了表转化。
为此,我们可以选择随机森林的方法来解决。
随机森林是一种分类器,它包含多个决策树,可以对异种特征的重要行排序进行计算输出,且可以用于特征探索。
正如图8所示,把18个维度作为输入,输出了18个重要性。
由图可知,v12最重要,amout hour的重要性排名比较靠后,通过前面的工作可以知道amout和hour在正常消费和欺诈消费上存在着很大的差异,是对于分类比较重要的变量,之前更有效,所以我们并没有删除有效。
而amout hour 的重要性比较小,后面的也小,没有保留无用的,合理的。
3模型训练
在建模的过程中,正常和违约两种类别的数量差别较大的特点是显而易见的,其次该特点会对模型学习造成干扰。
例如,现在我们收集了某银行的1000个贷款样本信息,在这些贷款信息中,有999个样本属于正常贷款,只有1个违约贷款。
对于学习器来说,只需要将所有的贷款样本信息都归类为正常样本,那么结果准确率将达到99.9%。
然而,这样的决策结果对我们的风险控制于事无补。
基于上述问题,我们不得不采取一定措施来有效解决样本不均衡的问题。
通常情况下处理数据不均衡这类的方法有两种:
第一种方式为过采样法(oversampling),其主要内容为增加正样本数量,进而使得正、负样本数目接近,然后再进行学习。
另一种方式为欠采样法(undersampling),其主要内容为去除负样本数量,进而使得正、负样本数目接近,然后再进行学习。
基于我们得到的欺诈数据非常少这一条件,我们选择采用过采样的方法来解决数据不均衡的问题。
smote处理样本不均衡时,通常按照如下步骤:①就少数类中每一个样本x而言,通过采取欧氏距离为标准计算它到少数类样本集Smin中所有样本之间的距离,从而能够得到其k近邻。
②为了确定采样倍率N,需根据样本不平衡比例来设置一个采样比例。
对于一个少数类样x,从其k近邻中随机选择若干个样本,并假设选择的近邻为xn。
③对于每一个随机选出的近邻xn,按照特定的公式分别与原样本构建新的样本。
经smote处理后,产生的结果如表1所示。
即在处理之后,正负样本各占50%,达到均衡状态。
表1smote算法处理前后对比
样本个数正样本占比负样本占比处理前
处理后
284807
568630
99.83%
50.00%
0.17%
50.00% Logistic Regression逻辑回归主要用于分类问题,常用来预测概率,虽然其与多重线性回归在实际上有诸多相似之处,但它们最大的区别就在于他们的因变量不同。
我们
图6欺诈与正常的消费金额比较图
图7
尝试用logistic regression模型解决本文的问题。
[2]先利用全体数据集训练了一个模型,其准确率为99.8%,主因是我们基于相同数据集进行了模型训练和测算,并由此导致模型产生过拟合问题。
为了得到更优的模型,我们采用cross-validation和grid search的方式。
通常情况下,可以将数据集划分为训练集和测试集的方法有三种:①留出法(hold-out),②交叉验证法(cross-validation),③自助法(bootstrapping)。
而本次项目采用的是交叉验证法划分数据集,将数据划分为3部分:训练集(training set)、验证集(validation set)和测试集(test set)。
让
模型在训练集进行学习,在验证集上进行参数调优,最后使用测试集数据评估模型的性能,并采用交叉验证的方法进行数据集的划分。
我们采用网格搜索调优参数(grid search)的方式进行模型调优。
首先先进行参数候选集合构建,继而由网格搜索穷举各类参数组合,并且由预设的评分机制选择出最优参数。
结合cross-validation和grid search,具体操作我们采用scikit learn模块model_selection中的GridSearchCV。
在进行调参的过程中,首先确定模型以及参数组合,采用5折交叉验证的方法,模型评估的指标选择f1-score,调节了penalty和C两个参数,得到的最终调整参数的结果为{'penalty':'l2','C':100},该参数下预测的结果为0.95750。
具体结果如图9所示。
接下来探究不同阈值对模型准
确率的影响阈值是指在进行类别划
分时,划分的分位点。
为了探究不同
阈值对结果的影响,分别设置阈值为
0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,
计算出precision和recall矩阵,并画出
了同阈值下的precison-recall矩阵,如
图10。
由图10可知,将阈值0.1至0.9
优良,但不同银行出于不同的考虑,
precision和recall是一组矛盾的变量。
从上面混淆矩阵和PRC曲线可以看到,阈值越小,recall值越大,模型能找出信用卡被盗刷的数量也就更多,但换来的代价是误判的数量也较大。
随着阈值的提高,recall值逐渐降低,precision值也逐渐提高,误判的数量也随之减少。
通过调整模型阈值,控制模型反信用卡欺诈的力度,若想找出更多的信用卡被盗刷就设置较小的阈值,相反,则设置较大的阈值。
实际业务中,阈值的选择取决于公司业务边际利润和边际成本的比较;当模型阈值设置较小的值,确实能找出更多的信用卡被盗刷的持卡人,但随着误判数量增加,
图8维度amout hour的重要性比较图
图9最优参数下的模型效果
图10不同阈值的比较图。