system: [SYSTEM]

user: 3. 实证分析 3.1. 数据来源与说明 本文实证分析所选用的信用卡申请数据是由quinlan '@' cs.su.oz.au向UCI机器学习网站捐赠的Credit Approval Data Set数据(数据的网址为： http://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/)。该数据总共有690个信用卡申请客户的相关资料，总共有16个变量，因数据涉及一定的商业机密，所以许多变量只是用一些名义型的字母或字符代替(如表1所示)。其中第十六个变量是是否同意申请，“+”代表同意申请，“−”代表不同意申请，其中表2给出了这两种类型分布统计。数据变量的形式包括有分类、整数和实数，且其有缺失值的存在(如表3所示)，对于缺失值的处理，本文采取用随机森林的方式弥补。 3.2. 机器学习分类方法的R软件实现 3.2.1. 决策树分类结果 本文根据决策树分类的R程序包rapart中的函数rapart( )对信用卡审批数据进行拟合，输出结果如图1、图2以及表4。其R语言处理的主要程序为：library(rpart)；library(rpart.plot)；(f=rpart(V16~.，w))；rpart.plot(f，type=2，extra=4)。从图1中，我们可以知道决策树在对信用卡审批进行分类时各变量的分节点在何处、分类偏差和分类结果在该节点的均值等。图2是由信用卡审批数据生成的一棵决策树，这棵决策树说明了在对申请者进行审批时，首先要看变量V9，通过则是不同意申请，不通过则看变量V10，随着决策树给出的示意图，一步步地分下去，最后得到分类的结果。表4给出了决策树的分类效果，其将同意申请的40个样本错误的分至不同意申请这一组，不同意申请的41个样本分至了同意申请这一组，分类误差为0.1173913。可见决策树分类方法的正确率高达88.3%，而其处理的速度也是比较快的。 3.2.2. Adaboost分类结果 Adaboost分类的R语言主要处理程序为：library(adabag)；set.seed(4410)；a=boosting(V16~.，w)；barplot(a$importance，cex.name=.8)。输出结果如表5及图3所示。表5给出了Adaboost分类器对信用卡审批数据的分类效果，我们可以知道其分类误差是为0，相比决策树的分类误差要低得多。图3给出了Adaboost在拟合信用卡审批数据时各变量的重要性条形图，其中变量V2、V3、V6、V14在Adaboost分类器拟合信用卡审批数据时，是否同意申请者得到信用卡起到比较重要的作用。 3.2.3. Bagging分类结果 Bagging分类器的R语言主要处理程序是：library(adabag)；set.seed(4410)；a=bagging(V16~.，w)；barplot(a$importance，cex.name=.6)。输出结果如表6及图4。表6给出了Bagging分类器对信用卡审批数据的分类效果，其将同意申请的32个样本错误的分至不同意申请这一组，不同意申请的37个样本分至了同意申请这一组，分类误差为0.1，比决策树的分类误差要低一些，但比Adaboost分类效果要差得多了。图4给出了Bagging在拟合信用卡审批数据时各变量的重要性条形图，其中变量V9对信用卡审批的通过是否起到至关重要的作用。 3.2.4. 随机森林分类结果 随机森林分类器的R语言主要处理程序为：library(randomForest)；set.seed(101010)；(a=randomForest (V16~.，w，importance=T，proximity=T))。输出结果如表7及图5。表7给出了随机森林拟合信用卡审批数据的分类效果，得到的分类误差为0，分类误差同Adaboost的一样，比决策树和Bagging效果好得多；图5显示了在随机森林拟合信用卡时的各变量重要性，其中V9对信用卡审批同意与否起到最为重要的作用。 3.2.5. 支持向量机分类结果 支持向量机的R语言主要处理程序为：library(e1071)；a=svm(V16~.，w，kernal=sigmoid)；wp=predict(a，w)；z0=table(w[，16]，predict(a，w))。输出的结果如表8。表8给出了支持向量机分类器拟合信 Table 1 Type and value of variables for the Credit Approval Dat 变量 类型 取值 V1 分类 a， b V2 数值 13.75~80.25 V3 数值 0~28 V4 分类 u， y， l， t V5 分类 g， p， gg V6 分类 c， d ，cc， i， j， k， m， r， q， w， x， e， aa， ff V7 分类 v， h， bb， j， n， z， dd， ff， o V8 数值 0~28.5 V9 分类 t， f V10 分类 t， f V11 数值 0~67 V12 分类 t， f V13 分类 g， p， s V14 数值 0~2000 V15 数值 0~100，000 V16 分类 +， − 表1. Credit Approval Data各变量类型及取值 Table 2 Class distribution for the Credit Approval Dat 类别 样本量 + 307 (44.5%) − 383 (55.5%) 表2. Credit Approval Data审批类别分布 Table 3 Statistics of missing values in the Credit Approval Dat 变量 缺失个数 V1 12 V2 12 V4 6 V5 6 V6 9 V7 9 V14 13 表3. Credit Approval Data缺失数据统计 Table 4 Decision tree classification results on the Credit Approval Dat + − + 267 40 − 41 324 表4. 信用卡审批数据的决策树分类结果 图1. 信用卡审批数据的决策树输出结果 图2. 信用卡审批数据的决策树 图3. Adaboost拟合信用卡审批数据时的变量重要性图 图4. Bagging拟合信用卡审批数据时的变量重要性图 图5. 随机森林拟合信用卡审批数据时的变量重要性图 Table 5 Adaboost classification results on the Credit Approval Dat + − + 307 0 − 0 383 表5. 信用卡审批数据的Adaboost分类结果 Table 6 Bagging classification results on the Credit Approval Dat + − + 275 32 − 37 346 表6. 信用卡审批数据的Bagging分类结果 Table 7 Random forest classification results on the Credit Approval Dat + − + 307 0 − 0 383 表7. 信用卡审批数据的随机森林分类结果 Table 8 SVM classification results on the Credit Approval Dat + − + 285 22 − 75 308 表8. 信用卡审批数据的支持向量机分类结果 用卡审批数据的效果，其将同意申请的22个样本错误的分至不同意申请这一组，不同意申请的75个样本分至了同意申请这一组，分类误差为0.1405797，即正确分类的比例为85.9%。其分类误差是这几个方法中最大的一个。 3.2.6. 人工神经网络分类结果 人工神经网络的R语言主要处理程序为：library(nnet)；set.seed(1010)；a=nnet(w$V16~.， data=w， subset=1:n，size = 5，rang = 0.1，decay=5e−4，maxit = 200)；wp=predict(a， w， type = class)。得到的误判率为0.07536232，正确分类的比例高达92.4%。其分类效果次于Adaboost和随机森林，比其他三种的分类误差要低一些。 3.2.7. 六种机器学习分类方法的八折交叉验证结果 八折交叉验证(8-fold cross-validation)是用来测试算法的准确性，其将数据集分成八份，其中七份作为训练数据集，一份作为测试数据集，进行测试试验。其每次试验都会得到相应的正判率(或错判率)。8次的结果的正判率(或错判率)的平均值作为对算法精度的估计。表9给出了六种方法对信用卡审批数据集分类的八折交叉验证的平均误判率。对于训练集来说，分类效果最好的是Adaboost分类、随机森林分类和人工神经网络分类这三种方法，其平均误判率都为0，其次是Bagging分类和决策树分类，最差的是支持向量机。但相对于测试集来说，随机森林的分类效果依然是最好的，且平均分类误差都为0；Adaboost和人工神经网络的误判率就比训练集的相差得比较大，故它们分类的稳定性还是较差的；决策树和Bagging的测试集平均分类误差比训练集的平均分类误差高5%左右。故综合来看，随机森林的分类效果是这几个方法中最好的。