当前位置:   article > 正文

R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究

R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究

全文链接:https://tecdat.cn/?p=35403

在数字化时代,顾客信用评估成为商业决策中的重要一环。无论是金融机构的信贷审批,还是电商平台的用户信用管理,都需要对顾客的信用状况进行准确评估点击文末“阅读原文”获取完整代码数据)。

相关视频

随着机器学习技术的不断发展,决策树和神经网络等算法在顾客信用评估中得到了广泛应用。然而,不同的模型具有各自的优势和局限性,因此选择适合的模型对于提高评估准确率至关重要。

决策树作为一种直观且易于理解的机器学习算法,能够自动进行特征选择,并且对于缺失值和异常值具有较强的鲁棒性。这使得决策树在顾客信用评估中成为一种常用的方法。然而,决策树在处理复杂非线性关系时可能表现不佳,且容易过拟合,特别是在树的深度过大时。

另一方面,神经网络以其强大的表示学习能力在顾客信用评估中展现出优势。神经网络能够捕捉数据中的复杂模式和非线性关系,从而在处理大量特征和复杂数据时表现良好。然而,神经网络的训练过程需要大量的计算资源和时间,且模型的可解释性较差,难以确定哪些特征对预测结果有重要影响。

因此,本文旨在对比帮助客户研究神经网络与决策树在顾客信用评估中的性能。我们将使用实际数据集对两种模型进行训练和测试。通过对比分析,我们将探讨不同模型在顾客信用评估中的适用性和局限性,以期为实际应用中的模型选择提供有益的参考。

背景

我们将利用2000个银行顾客的信息,其中好顾客标记为1,坏顾客标记为0,来构建决策树和神经网络模型,以更好地识别顾客的好坏,并预防顾客贷款不还的风险。Training data为70% 和 testing data 为30%

head(data)

首先,我们读取了数据集,并查看了数据的前几行。数据包含了一系列可能影响顾客信用状况的变量,如收入、贷款金额、分期付款比例、信用卡数量、年龄、婚姻状况、就业情况、居住状况等。

7212b96198931883c16b64092bdeeed7.png

在对数据集进行初步的探索之后,我们获得了数据的基本结构信息。

27b21a5c6ed693cae4d2882f280f9c56.png

该数据集包含2000个观测值(即银行顾客的信息),每个观测值都有16个变量(即特征)。这些特征涵盖了顾客的财务状况、贷款历史、人口统计信息以及其他可能影响其信用状况的因素。

具体来说:

  • Good:这是一个标识变量,用于区分好顾客(值为1)和坏顾客(值为0)。这是我们试图预测的目标变量。

  • IncomeAmount 和 Installment_Percentage:这些变量描述了顾客的收入、贷款金额以及分期付款的比例,它们都是整数类型。

  • ApplicationsLoans 和 Credit_Cards:这些变量分别记录了顾客提交的贷款申请次数、已获得的贷款数量和持有的信用卡数量。其中,Credit_Cards包含缺失值(NA),这可能需要后续处理。

  • Payments:这个分类变量表示顾客的支付状态,有三个可能的水平:“Delayed”(延迟)、“Missed”(错过)和一个未列出的水平(可能是“On Time”即按时)。

  • Age:顾客的年龄,为整数类型。

  • Marital_StatusEmploymentResidential_Status 和 Repayment_Method:这些都是分类变量,分别描述了顾客的婚姻状况、就业情况、居住状况和还款方式。

  • Time_at_Employment 和 Time_at_Address:这两个变量表示顾客在当前工作和住址的停留时间,为整数类型。其中,Time_at_Employment包含缺失值(NA)。

  • Area_Indicator:这是一个分类变量,可能表示顾客所在地区的指标或标识符。

接下来,我们将利用这些数据构建决策树和神经网络模型。在构建模型之前,我们可能需要处理数据中的缺失值,以及根据需要对某些变量进行编码或转换。此外,我们还需要进一步探索数据,了解变量之间的关系以及它们如何影响目标变量Good

通过构建和训练这两个模型,我们希望能够识别出影响顾客信用状况的关键因素,并准确地预测哪些顾客是好顾客,哪些可能是坏顾客。这将有助于银行制定更有效的贷款政策,降低贷款风险。

决策树和神经网络中哪些变量是重要的和需要用哪些变量来建立这个模型

处理缺失值

  1. if(length(missing)!=0 && class(x)=="integer")x0[missing]=as.numeric(mean(x[nmissing]))
  2.   if(length(missing)!=0 && class(x)=="factor")x0[missing]= names(table(x[nmissing]))[which

为了构建模型,我们将数据集分为训练集和测试集,其中训练集占70%,测试集占30%。训练集用于训练模型,而测试集则用于评估模型的性能。

  1. index=sample(1:dim(data)[1],dim(data)[1]*0.7,replace=F)#对样本随机抽样70%作为测试集
  2. test=as.data.frame(data[index,])#测试集
  3. train=as.data.frame(data[-index,])#训练集
printcp(fit) # display the results

1909a8188717ab746f6d4eabf382a2d1.png 在您提供的代码中,您使用了rpart包来拟合一个分类决策树模型,并使用printcpplotcp函数来显示和可视化交叉验证的结果。下面是对这些输出的解释:

printcp(fit) 的输出解释:

  • Classification tree: 表示这是一个分类决策树。

  • rpart(formula = Good ~ ., data = train, method = "class") 是您用来拟合模型的rpart函数调用。Good ~ .表示使用Good作为响应变量,.表示使用train数据集中的所有其他变量作为预测变量。

  • Variables actually used in tree construction: 列出了在构建树时实际使用的变量。

  • Root node error: 100/600 = 0.16667 表示在根节点(即整个数据集)中,错误分类的样本数量是100,总样本数量是600,因此错误率是0.16667(或16.67%)。

  • n= 600 表示训练数据集中有600个观测值。

  • CP 是复杂度参数,用于控制树的剪枝。较小的CP值会导致更复杂的树,而较大的CP值会导致更简单的树。

  • nsplit 是树中发生的分割次数。

  • rel error 是相对于根节点的相对误差。

  • xerror 和 xstd 是通过交叉验证得到的误差估计和标准差。

62accb7a96d3be9d5c128883f027b6b8.png

这个函数会生成一个图形,展示了不同复杂度参数(CP)下的交叉验证误差。这可以帮助您选择最佳的剪枝参数。通常,您会选择交叉验证误差最小的CP值,因为它意味着模型既不太复杂也不太简单,从而达到了最佳的泛化能力。


点击标题查阅往期内容

e5b6954407f8b2887f493faba07bfb0c.png

数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

outside_default.png

左右滑动查看更多

outside_default.png

01

611fc65cb65539023cc990f1e8ce4ed9.png

02

3aeb25ef74c78aecabfdd026c5eddc95.png

03

da7ab86f2562501fac7567c2e3487039.png

04

5616e5d33ba2aa1e1e0dcc1aeea1d5ab.png

在图形中,您可以观察到随着CP值的增加,交叉验证误差通常先减小后增大。这是因为当CP值很小时,树可能过于复杂,导致过拟合;而当CP值很大时,树可能过于简单,导致欠拟合。您需要找到那个使得交叉验证误差最小的CP值,并使用这个值对树进行剪枝。

首先访问了决策树模型的变量重要性(fit$variable.importance),然后使用rpart.plot库绘制了决策树的图形表示。

变量重要性(Variable Importance)

变量重要性是决策树算法在构建模型时赋予每个预测变量的权重,它反映了每个变量在预测目标变量时的相对贡献。

  1. fit$variabance
  2. library("rparcation Tree",cex = 0.5)

d85fa6a7309e99fd8a6d243cc13bd1ee.png AmountIncomeInstallment_Percentage等变量具有较高的重要性得分,这意味着它们在模型中的影响更大。而Payments变量的重要性得分较低,说明它在模型中的影响相对较小。变量重要性的具体得分可以根据不同的算法实现和数据集而有所不同,因此重要的是要理解这些得分是相对的,它们提供了关于变量对模型贡献的一个概览。在实际应用中,您可能会根据这些得分来决定是否保留或移除某些变量,以简化模型或提高预测性能。

106179dbdd6f02df90484e5a3d143f5f.png

图形表示中,每个节点代表一个决策点,节点之间的连线表示决策路径,叶节点(通常是矩形)表示最终的分类结果。节点的颜色、大小和标签等信息可以提供关于节点的重要性和决策依据的额外信息。通过查看图形,您可以清楚地看到模型是如何根据输入变量的值来做出分类决策的。

用ROC来看两个模型中的表现。

计算两个模型的ROC曲线下的面积(AUC)

formance( ROCR::prediction( as.numeric(z

22b033303b5f2308c207db4f7218e050.png

AUC值介于0和1之间,值越高表示模型的性能越好。一个完美的分类器会有AUC值为1,而一个随机猜测的分类器会有AUC值接近0.5。

performaCR::prediction( as.nuain[,1])), "auc" )@y.values[[1]]

32706deeae668d859f98525a0941931a.png

训练10个隐藏神经元的神经网络

  1. net <- net(  Good ~Income+Amount+Ins
  2.                              ,train, hidden=10, threshold=0.01)
  3.   print(net.rt)

6a57ef22d92cb235cb6608de66c8b516.png

threshold参数用于控制权重更新的阈值,它并不直接控制隐藏层神经元的数量。隐藏层神经元的数量是通过hidden参数来设置的。

此外,print(net.sqrt)将输出神经网络的详细信息,包括权重、偏置项等。如果您想要查看模型的性能或进行预测,您可能需要使用其他函数或方法,比如compute函数来计算训练集或测试集上的预测值。

用testing data来预测,预测顾客好坏准确率为多少

决策树

  1. z <- predict(flass")
  2.  
  3.  
  4. tab=table(as.numic(test[,1]))
  5. #准确度
  6. sum(diag(tab))/sum(tab)

51a6835d4696efd881866c6da6c114c5.png

对于决策树模型,您已经展示了如何使用测试集进行预测,并计算了预测的准确率。

神经网络

返回的是一个包含预测值的列表,您可能需要提取net.result来得到最终的预测得分。然后,您可以将这些得分转换为分类标签(在本例中为0或1),并计算准确率。

pute(net.sqrt, test[,c("Income","A

49f272f2da73533b88e13c4a403d0fd7.png

发现决策树模型的准确率高于神经网络模型,并且模型的可解释性对您来说很重要(例如,您需要理解哪些特征对预测结果有影响),那么您可能会倾向于推荐决策树模型。决策树模型通常更容易理解和解释,而且它们的构建过程相对简单。


993f4680c137592bff4f28dc7250782a.jpeg

本文中分析的数据分享到会员群,扫描下面二维码即可加群!

2022fd04476857504115176ccf23e468.png

03e505964de58ebaef21eb4889ec62a1.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究》。

9d1b7a6f238ac0977e5e8869c3a4bef7.jpeg

8995eb58ec3fcc31203b169ccfe4e386.png

点击标题查阅往期内容

样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

SAS分类决策树预测贷款申请评分剪枝和结果可视化

分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

spss modeler用决策树神经网络预测ST的股票

R语言中使用线性模型、回归决策树自动组合特征因子水平

R语言中自编基尼系数的CART回归决策树的实现

R语言用rle,svm和rpart决策树进行时间序列预测

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证

R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

R语言ISLR工资数据进行多项式回归和样条回归分析

R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

如何用R语言在机器学习中建立集成模型?

R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

在python 深度学习Keras中计算神经网络集成模型

R语言ARIMA集成模型预测时间序列分析

R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言基于Bootstrap的线性回归预测置信区间估计方法

R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

matlab使用分位数随机森林(QRF)回归树检测异常值

2903e696c295b3c4ae76134ab719f90d.png

5fd1a340786f0a12380937613ef269a2.jpeg

c867328f1900724007b3cf90f2d0fbb7.png

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号