system: [SYSTEM]

user: 3. 实验结果及分析 3.1. 数据来源及描述 本文采用了是kaggle网中名为default of credit card clients的信用数据集。该数据集包含2005年4月至2005年9月某地区30000个不同的信用卡客户信息，其中，诚信客户有23364个，违约客户有6636个。具体的客户信息包括拖欠付款、人口统计因素、信用资料、付款历史及账单结单。我们将这些数据分为23个自变量，1个因变量。其中自变量有4个类别型变量，19个数值型变量。因变量有两个取值，分别为“0”和“1”，其中0表示信用好的客户，而1表示信用差的客户。 图1. Lasso-CatBoost算法流程图 Table 1 Default data of credit card customer 列名 含义说明 LIMIT_BAL 银行给与客户的信用额度，包括个人信用额度和客户的家庭信用额度 SEX 客户的性别：男性为1，女性为2。 EDUCATION 客户的教育水平：研究生以及以上记为1，大学为记2，高中记为3，其他记为4 MARRIAGE 客户的婚姻状况：已婚记为1，未婚记为2，其他记为3。 AGE 客户的年龄。 PAY_1~PAY6 这六个变量是2005年4月到9月每月的还款记录，取值为0~9。 BILL_AMT1~BILL_AMT6 这六个变量是2005年4月到9月每月的账单记录，即每月用信用卡消费记录。 PAY_AMT1~PAY_AMT6 这六个变量是2005年4月到9月每月的支付记录，包括还款账单金额和存入信用卡的金额。 default.payment.next.month 下个月是否违约：违约记为1，未违约记为0。 表1. 信用卡客户违约数据 对表1进行变量说明：X1为LIMIT_BAL表示信用额度；X2为SEX表示性别；X3为EDUCATION表示学历；X4为MARRIAGE表示婚姻状态；X5为AGE表示年龄；X6~X11是PAY_1~PAY_6：PAY_1为2005年9月的还款情况、……、PAY_6为2005年4月的还款情况；X12~X17是BILL_AMT1~BILL_AMT6：BILL_AMT1为2005年9月的账单记录、BILL_AMT2为2005年8月的账单记录、……、BILL_AMT6为2005年4月的账单记录；X18~X23是PAY_AMT1~PAY_AMT6：PAY_AMT1为2005年9月的支付记录、PAY_AMT2为2005年8月的支付记录、……、PAY_AMT6为2005年4月的支付记录。 PAY_1~PAY_6的取值含义为：0 = 及时还；1 = 延迟1个月还款；2 = 延迟2个月换狂；3 = 延迟3个月还款；……；9 = 还款延迟九个月及以上。每月的支付金额PAY_AMT大于每月的还款最低额，否则判定为违约。如果支付金额PAY_AMT大于上月账单金额BILL_AMT，视为还款及时，剩余金额存入信用卡下次消费；支付金额低于上月账单金额但高于最低还款额的，视为延期还款。 以下是对于性别、学历、婚姻状况及年龄4个类别型变量在信用贷款中的具体影响进行简单的统计分析。 图2. 性别、学历、婚姻、年龄对信用度的影响 通过图2(a)我们可以了解到女性整体贷款人数大于男性，但是在贷款的男性女性中，男性违约率高于女性违约率。图2(b)中学历不同，贷款人数不同。从贷款总人数来看，大学生排第一，研究生及以上排第二，然而研究生及以上学历人群的违约率略高，因此并不是学历越高，违约率越低。图2(c)表明未婚人群贷款人数大于已婚人数，而相比之下已婚人群的违约率较高。图2(d)说明在信用贷款中年轻人贷款居多，而这部分人的违约率也是比别的年龄段人的违约率高。 3.2. Lasso变量选择及Catboost参数设置 本文的数据集共有30，000个样本，其中有23个变量，数据相对庞大，在银行等实际工作过程中，这样建立的模型过于复杂，需要消耗的资金人力均过大，不够经济实惠，那么我们构建的模型就不符合实际情况，实用性将下降。因此本文运用Lasso算法进行变量筛选，对变量进行降维处理，挑选相对重要的变量，剔除系数为零的变量。最终我们通过Lasso算法删除了六个系数为零的变量，分别为X10即2005年5月的还款情况、X11即2005年4月的还款情况、X14即2005年7月的账单记录、X15即2005年6月的账单记录、X17即2005年4月的账单记录、X19即2005年8月的支付记录，选取了剩余17个系数不为零的变量作为CatBoost算法的输入值。 本文基于CatBoost算法构建个人信用评估模型。我们不断地调整参数，经过交叉验证后以AUC值为评级指标，最终选取的参数如下表2。 Table 2 Parameter settin 参数 描述 iterations = 600 最大决策树数目。 learning_rate = 0.02 影响训练的总时长，值越小，训练所需的迭代次数就越高。 depth = 6 树的深度，推荐1~10 random_seed = 2019 训练时的随机种子数。 loss_function = ‘Logloss’ 二分类问题使用Logloss或CrossEntropy，多分类使用MultiClass。 subsample = 0.7 训练样板所占比例。 eval_metric = accuracy 预防过拟合的参数。 表2. 参数设置 调整好参数、建立模型后，我们得到了基于Lasso-CatBoost算法的特征重要性排序，如图3所示。 图3. 特征重要性排序 从图中可以看出，2005年9月的还款情况这一因变量最重要，明显高出其余变量许多，根据实际情况也可以考虑到，还款及时，是信用表现良好的重要指标；信用额度居第二重要，如果开始银行给与客户的信用额度，包括个人信用额度和客户的家庭信用额度就高的话，说明在贷款之前就进行过调查研究，信用额度高也能说明信用可能良好；第三重要的是2005年9月的账单记录。根据给出的重要性排序，在实际银行贷款审核是否同意放贷过程中，应该更加注意这些变量所带来的影响。 3.3. 评价指标 算法性能评估主要通过准确率、精确率、召回率、AUC以及ROC曲线图等指标进行比较，接下来结合本文研究的问题对这些指标进行简单介绍。 混淆矩阵(confusion matrix)是衡量一个分类器分类效果准确程度的矩阵，如表3。 Table 3 Confusion matri 真实情况 预测结果 正例 反例 正例 TP (真正例) FN (假反例) 反例 FP (假正例) TN (真反例) 表3. 混淆矩阵 准确率(Accuracy)是所有样本数量中预测正确的比例，即预测的正例实际为正例，预测的反例实际为反例的占比。 Accuracy = T P + T N T P + F P + F N + T N (6) 精确率(Precision)是预测为正例的所有样本中，实际也确实是正例的样本数量所占的比例。 P = Precision = T P T P + F P (7) 召回率(Recall)是预测为正例的样本数量占实际就为正例的样本的比例。 R = Recall = T P T P + F N (8) 有时候精确率和召回率会出现矛盾，此时应该综合评价这两个指标，对它们进行加权调和平均，就是F-Score，当 α = 1 时，就是最常用的F1值： F 1 = 2 ∗ P ∗ R P + R (9) ROC曲线：受试者工作特征曲线(receiver operating characteristic curve，简称ROC曲线)。采用真阳性率和假阳性率作出的曲线，横轴FPR：1-TPR，纵轴TPR。FPR越大，预测出为正例的样本数量中实际是负例的样本量越多；TPR越大，预测出为正例的样本数量中实际为正例的数量也越多。 T P R = T P T P + F N (10) F P R = F P T N + F P (11) AUC (Area Under Curve)值为ROC曲线下方的面积大小。显然，AUC越大，预测效果越好。 3.4. 多种模型对比分析 为了更准确地分析所构建的Lasso-CatBoost算法模型的性能，文章选取了除该分类算法以外的其他5种分类算法，分别为Logistics、RandomForest、Adaboost、Xgboost、LightGBM进行对比研究。这6种算法在训练集为0.7、测试集为0.3的比例下，得出了各自的混淆矩阵如图4。 图4. 6种算法的混淆矩阵 从图4各个算法的混淆矩阵图可以简单计算分析得到，Lasso-CatBoost算法是正确预测违约或者不违约的客户人数占总样本人数比例最高的算法，即在特征经过Lasso变量选择后，减少6个变量，与其他算法相比较准确率仍然是最高的。那么可以初步认为本文所建立的Lasso-CatBoost算法这一想法是可行的。 那么接下来进一步通过多方面、多种评价指标进行验证。对于分类问题，常用的评估指标是准确率，对于银行来说，精确率、召回率和F1这3个指标也具有实际意义，而AUC 值也是金融风控中常用的评估指标，因此模型的性能评价以AUC值为主(表4)。 Table 4 Comparison between different classification algorithms and Lasso catboos 准确率 精确率 召回率 F1值 AUC 特征个数 Lasso-CatBoost 0.8268 0.8447 0.9548 0.8964 0.7838 17 Logistics 0.7848 0.7848 1 0.8794 0.6491 23 RandomForest 0.8240 0.8421 0.9547 0.8949 0.7705 23 Adaboost 0.8231 0.8410 0.9551 0.8945 0.7691 23 Xgboost 0.8234 0.8432 0.9520 0.8943 0.7781 23 LightGBM 0.8156 0.8424 0.9411 0.8890 0.7564 23 表4. 不同分类算法与Lasso-CatBoost的对比 在所有算法中，Lasso-CatBoost算法的准确率最高，即正确预测违约或者不违约的客户人数占总样本人数的比例为0.8268，RandomForest、Xgboost居第二第三；所有预测为不违约风险客户中，实际正确的客户所占的比例，即精确率为0.8447，也是这6中算法中最高的；所有的不违约风险客户中，我们预测正确的客户样本数量所占的比例，即召回率为0.9548；精确率与召回率会出现矛盾的情况，此时利用F1值去评判，Lasso-CatBoost算法的F1值为0.8964，同样也是六者中最高的；AUC值表示ROC曲线下方的面积大小，AUC越大，越接近1，预测效果就越好，与其他算法相比，Lasso-CatBoost算法的AUC值最高，说明其预测效果最好。 从使用的特征个数来看，本文提出的Lasso-CatBoost算法仅用了17个特征，其余五种算法均用了23个特征，但无论用准确率、精确率、召回率、F1值还是AUC值作为评价指标，我们提出的算法都比其他算法在信用风险评估方面表现得更好。 ROC曲线用来评价分类器的性能，也是一个评判分类算法好坏的一个重要指标。通过测试分类结果可以计算得到TPR和FPR的一个点对。ROC曲线越靠近左上方，离得越近，说明分类效果越好。纵轴TPR表示所有实际正例中，能预测为正例的比例。横轴FPR表示所有实际负例中，错误的预测为正例的比例。 图5. 各算法的ROC曲线对比图 如图5所示，6种算法的ROC曲线均在0.5阈值的左上方，说明均是分类效果较好的分类算法。但是由TPR和FPR形成的点对构成的ROC曲线中，Lasso-CatBoost算法最靠左上方，说明所有实际就是正例，也能预测为正例的比例最大，而所有实际就是负例，然而错误得预测为正例的比例较小。越靠近左上方，分类器越完美，显然Lasso-CatBoost算法的分类效果最优，相比其他五种算法，能更加有效的预测银行客户违约情况。