本案例使用分类决策树和逻辑回归对贷款违约情况进行分类预测。所采用的数据集是UCI上的德国信用数据集,该数据集共有21个字段,1000条数据,记录了贷款人基本信息及其贷款账户信用情况。本案例通过数据可视化、数据字段统计、简单数据清洗以及构建两个分类模型实现了较为良好分类预测性能。
1. 读取德国信用数据集
首先,读取数据集,该数据集是UCI上的德国信用数据集,其中包含了 1000 个贷款信息,每一个贷款有 20 个自变量和一个类变量记录该笔贷款是否违约。详细的字段信息可见此处。
类别字段default有两个取值,代表预测类别,1 = 良好,2 = 不良。
2. 数据字段基本统计信息
读取数据表后,对各个数据字段统计基本信息,包括样本数量、不同取值个数、众数和均值等。
可以看出,读取的数据表中即有字符型字段,又有数值型字段。字符型字段无均值信息,数值型字段无众数信息。从这里可以发现,各字段的样本数均为 1000 ,说明无缺失值;此外。许多字符型字段如 checking_balance、credit_history 等取值个数不多,在后期可以进行编码处理,方便构建模型。
3. checking_balance柱状图
选取checking_balance字段画出柱状图,并且依据default字段进行分组。
checking_balance字段表示现有支票帐户的状态,记录了一年至少分配多少薪水在账户上。DM为德国货币马克。
可以看出,除unknown类别外,分配的马克越高,账户为良好的比例越高。
4. personal_status饼状图
选取personal_status字段画出饼图,可以看出,单身男性人群在数据总体中占比最大。
5. age箱线图
选取age字段画出箱线图,并且依据default字段进行分组。可以看出,大多数贷款人的年龄都在50岁以下,并且信用良好的贷款人平均年龄较信用不良的略高一些。
6. 目标类别标签替换
类别字段default取值为 1 和 2 ,为了便于分类模型的处理以及后续模型的评估,需要将其处理为{0,1}{0,1}或者{-1,1}{−1,1}。需要注意的是,default=1 代表信用良好,且样本数量多,我们将其视为正类。default=2 类视为负类,我们将其设置为 0。
我们使用正则表达式匹配与替换组件,表达式设置为 2 即可。替换后产生新的类别标签 default_replace ,可以看到,负类标签由 2 变成了 0。
7. 字符型字段数字编码
将数据表中的所有字符型字段进行数字编码,应用于分类决策树模型。由于部分字段是字符型数据,模型无法进行处理,所以我们要先对其进行数字编码处理,不同的类别编码成为不同的数值。
8. 字符型字段OneHot编码
将数据表中的所有字符型字段进行One-Hot编码,应用于逻辑回归模型。因为将字符型字段简单编码成数字会人为引入大小关系,影响逻辑回归模型分类性能,所以我们使用One-Hot编码。
One-Hot编码是将无序离散型特征转换为机器学习算法易于利用的一种形式的过程。将包含KK个取值的无序离散型特征转换成KK个二元特征(取值为0或1)。经过One-Hot编码之后,不同的原始特征取值之间拥有相同的距离。
9. 决策树训练/测试集划分
对数据集进行划分,设置划分比例为训练集 : 测试集 = 4 : 1。
10. 逻辑回归训练/测试集划分
对数据集进行划分,设置划分比例为训练集 : 测试集 = 4 : 1,为保证与分类决策树划分相一致,设置相同的采样随机数。
11. 分类决策树
构建分类决策树模型,将 default_cal_cal 作为我们的标签列,其余各字段,除 default 和 default_cal 外均作为模型的特征列。
可以看到,模型的特征重要性排序后,重要性在前五名的字段分别为 checking_balance、months_loan_duration、saving_balance、purpose 和 age。随后我们还绘制了决策树模型的可视化图形。
12. 逻辑回归
构建逻辑回归模型,将 default_cal_cal 作为我们的标签列,选取数值型字段和One-Hot编码后的字符型字段以作为模型的特征列。
13. 分类决策树模型预测
使用模型预测组件对分类决策树进行测试集上的预测,预测后的标签为 default_cal_cal_predict。
14. 逻辑回归模型预测
使用模型预测组件对逻辑回归进行测试集上的预测,预测后的标签为 default_cal_cal_predict。
15. 分类决策树模型评估
对分类决策树模型进行评估。使用的方法主要为分类报告、混淆矩阵和ROC曲线。
可以看到,我们构建的分类决策树的分类性能较为良好,总体分类正确率(accuracy)达到0.71,macor avg F1-score能达到0.68,正类样本的召回率(Recall)能达到0.73,ROC_AUC值为0.81。
16. 逻辑回归模型评估
对逻辑回归模型进行评估。使用的方法主要为分类报告、混淆矩阵和ROC曲线。
可以看到,我们构建的逻辑回归的分类性能同样较为良好,总体分类正确率(accuracy)达到0.725,macor avg F1-score能达到0.69,正类样本的召回率(Recall)能达到0.75,ROC_AUC值为0.77。