APP下载

决策树CART算法的Clementine与Python实现比较

2018-03-25杜婵

大经贸 2018年1期

杜婵

【摘 要】 近年来,信息社会中丰富的数据对数据分析工具需求加大,数据挖掘技术应运而生,决策树方法以其速度快、精度高、生成的模式简单等优点受到许多研究者关注,已成功应用于医疗诊断、金融分析、身份识别等许多应用领域,一般情况下决策树分类器具有良好的准确率。本问旨在使用银行营销数据通过Clementine与python两种方法构造决策树CART算法下的模型,分别得出影响客户办理银行定期存款业务的各因素的重要程度,以及通过模型对输出变量y预测的精度,从而进行两个结果的对比分析,找出两种方法存在的差异。

【关键词】 决策树CART算法 Clementine、Python 预测精度

一、数据介绍

本次报告中使用的Bank Marking(银行营销)数据是通过UCI数据库下载获得,该数据共涉及45211条客户信息,包含17个变量,其中输出变量为是否办理了定期存款业务,是本次研究的目标。

二、方法执行过程与结果

1.spss下Clementine的实现

(1)数据准备:将赋值好的SPSS数据导入Clementine;而后设置数据类型:将前16个自变量设为输入变量,而将客户是否办理定期存款业务“y”设置为输出变量;接着进行数据分区,需要将数据集分为训练集与测试集,数据比例设置为8:2,通过80%的数据进行训练来构造模型,剩余20%的数据将作用于该模型来进行预测。

(2)建模:做好数据准备后执行决策树的CART算法,为了防止过度拟合进行先剪枝,将最大树状图深度设置为5,并选用Gini系数作为分解属性的标准,而后开始训练模型。由模型输出的变量重要性排序可得,对输出变量影响较大的前四位依次为:与客户最后一次联系的时长、以前的营销活动的结果、与客户最后一次联系的月份,以及通讯方式关系较大,可以重点关注这四方面。

(3)评估与分析结果:①训练与测试的预测精度:训练集数据的预测正确率为89.81%,通过用训练样本所构造的模型来验证测试样本,预测结果正确的有8115个,占总测试样本9028中的89.89%,预测精确度较高,效果较好。②累计收益图:该算法所得的累计收益曲线距离理想曲线非常近,表明预测效果良好。③重合矩阵:在测试集中,实际办理而模型预测也办理业务的客户数有449个;实际办理而预测未办理的为590个;实际未办理而预测已办理的为323个;实际未办理而预测未办理的为7666个。准确度高达89.89%。

2.Python的实现

(1)模型建立:①分割数据:在确定变量后就要建立模型,以便预测新样本,需要把样本分为训练集和测试集。根据经验,训练集样本比例设为80%,测试集样本比例为20%。②决策树建模:防止出现过拟合,采用预剪枝方法,设置最大树深为5,使用CART算法进行建模。

(2)模型评估:一个模型建立后还需要根据模型在测试集上的表现来选择预测效果好的模型和模型参数。使用准确度以及ROC曲线来作为该模型评估的方法。

①混淆矩阵:实际办理而模型预测也办理的有370个;实际办理而预测未办理的670个;实际未办理而预测已办理的为221个;实际未办理而预测也为未办理的有7773个。②预测准确度:模型预测的准确度为90.04%,准确度较高。③ROC曲线与AUC:ROC曲线是利用真正例率和假正例率两指标对应的数值组合描点绘制的圆滑曲线,当ROC曲线越接近理想曲线时,模型效果越好。AUC值是计算的ROC曲线下方的面积,约为0.88,较接近1,说明该预测效果较好。

(3)变量重要性:

重要性是第j个输入变量在所有节点GINI系数的平均减少,该变量重要性反映每个变量在分类中的影响力。结果显示对输出变量影响较大的前四位依次为与客户最后一次联系的时长、以前的营销活动的结果、通讯方式和是否有住房贷款关系较大。

三、结论

1.结论:通过以上分析,对于银行营销活动中客户是否办理定期存款业务的重要影响因素以及模型预测情况可以得出以下结论:

(1)通过决策树模型的输出结果显示,用80%训练样本所构造的模型来验证剩余20%测试样本,预测精确度在90%左右,预测效果较好。(2)通过CART算法的决策树模型对客户是否办理定期存款业务这一输出变量进行分析,得到影响它的重要性因素和各因素重要性排序。通过以上分析,可以得出与客户最后一次联系时长和以前的营销活动结果是主要的影响因素,在以后的营销活动中可以重点关注这两个变量情况,并通过模型来预测潜在重点客户,增强银行的营销效果。

2.差异比较:

即便是分析同一个模型,在使用两种不同方法的情况下还是存在一定的差异,通过以上分析,对两种方法所得出的结果之间的差异进行总结如下:

(1)预测效果矩阵:两种方法进行预测的结果存在差异性,但其预测精度基本相近:对于实际办理业务的客户预测结果正确的相较预测错误的占比偏低,而对于实际未办理的客户预测正确的要远多于预测错误的数量。(2)预测精度:两种方法构造的模型所预测的精度差距甚微,但相比较下,python仍然要比Clementine构建出的模型的预测精度略高。(3)预测曲线:虽然两种方法下所用到的描述预测情况的曲线不同,但二者都比较明确地展示了模型预测效果。二者都存在最优曲线和基准曲线,分别代表的是预测效果最优和最差的曲线,而预测得到的曲線越接近最有曲线则表明预测效果越好,两者对比发现,Python下的ROC曲线比累计收益曲线更接近理想曲线,预测效果较好。(4)变量重要性:两种方法所得到的变量重要性排序结果差异较大,Python方法下的模型所得到的变量重要性可以就其变量特征细分来进行重要性分析,而Clementine方法只能对自变量进行重要性排序,不过二者分析结果中重要性排前两位的都是与客户最后一次联系的时长、以前的营销活动的结果,并且所占比重近似,对y的影响共能达到80%左右,是非常重要的变量需要去关注。