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

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

时间:2024-03-20 22:23:05浏览次数:13  
标签:变量 模型 神经网络 可视化 顾客 data 决策树

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

原文出处:拓端数据部落公众号

在数字化时代,顾客信用评估成为商业决策中的重要一环。无论是金融机构的信贷审批,还是电商平台的用户信用管理,都需要对顾客的信用状况进行准确评估。随着机器学习技术的不断发展,决策树和神经网络等算法在顾客信用评估中得到了广泛应用。然而,不同的模型具有各自的优势和局限性,因此选择适合的模型对于提高评估准确率至关重要。

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

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

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

背景

数据为2000个银行顾客的信息,好的顾客=1, 坏的顾客=0。 为了更好识别顾客好坏,防止顾客贷款不还,需要用建立决策树用rpart(Decision tree)和神经网络(Ariticial Neural Network)。Training data为70% 和 testing data 为30%

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

   
head(data)

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

image.png

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

image.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

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

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

处理缺失值

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

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

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

image.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 是通过交叉验证得到的误差估计和标准差。

image.png

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

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

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

变量重要性(Variable Importance)

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

   
fit$variabance

library("rparcation Tree",cex = 0.5)

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

__results___22_0.png

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

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

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

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

image.png

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

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

image.png

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

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

image.png

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

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

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

决策树

   
z <- predict(flass")  
   
   
tab=table(as.numic(test[,1]))

#准确度  
sum(diag(tab))/sum(tab)

image.png

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

神经网络

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

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

image.png

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


GettyImages-1214074246-BT_1536x864.jpg

最受欢迎的见解

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

2.R语言基于树的方法:决策树,随机森林

3.python中使用scikit-learn和pandas决策树

4.机器学习:在SAS中运行随机森林数据分析报告

5.R语言用随机森林和文本挖掘提高航空公司客户满意度

6.机器学习助推快时尚精准销售时间序列

7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

9.python中用pytorch机器学习分类预测银行客户流失

标签:变量,模型,神经网络,可视化,顾客,data,决策树
From: https://www.cnblogs.com/tecdat/p/18086257

相关文章

  • 基于python+django+Spark的动漫推荐可视化分析系统
    摘 要近年来,随着互联网的蓬勃发展,企事业单位对信息的管理提出了更高的要求。以传统的管理方式已无法满足现代人们的需求。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,随着各行业的不断发展,基于Spark的国漫推荐系统的建设也逐渐进入了信息化的进程。这个系统......
  • 基于cnn卷积神经网络的yolov8动物姿态估计识别(训练+代码)
    往期热门博客项目回顾:计算机视觉项目大集合改进的yolo目标检测-测距测速路径规划算法图像去雨去雾+目标检测+测距项目交通标志识别项目yolo系列-重磅yolov9界面-最新的yolo姿态识别-3d姿态识别深度学习小白学习路线基于CNN(卷积神经网络)的YOLOv8模型在动物姿态......
  • 决策树的学习及应用
    文章目录一、决策树是什么二、决策树的发展历史三、决策树的相关概念详解四、决策树的构建过程五、决策树的代码示例一、决策树是什么决策树是一种基本的分类与回归方法,它呈树形结构,用于表示基于特征对实例进行分类的过程。决策树可以被看作是if-then规则的集合,也......
  • Pytorch | Tutorial-04 构建神经网络模型
    这是对Pytorch官网的Tutorial教程的中文翻译。神经网络由对数据执行操作的层/模块组成。torch.nn命名空间提供了构建您自己的神经网络所需的所有构建块。PyTorch中的每个模块都是nn.Module的子类。神经网络本身就是一个模块,由其他模块(层)组成。这种嵌套结构允许轻松构......
  • 探索宇宙奥秘,天文馆3D可视化引领未来观星新风尚
    在这个科技日新月异的时代,我们似乎离神秘的宇宙越来越近。 天文馆作为普及天文知识、展示宇宙奥秘的重要场所,一直备受人们的喜爱。然而,传统的天文馆展示方式往往局限于平面图片和简单的模型,无法让人真正感受到宇宙的浩瀚与壮丽。而3D可视化技术的出现,为天文馆带来了革命性的变......
  • 智慧交通三维可视化合集 | 图扑数字孪生
    城市交通作为城市与区域交通体系的核心,其完善程度和发展水平是评价城市现代化水准的关键指标之一。城市交通数字孪生技术正在成为城市交通管理的关键工具,支持系统的高效运行和安全保障。随着互联网、大数据和人工智能技术的进步,城市交通数字孪生应用逐步成熟。图扑软件专注于Web......
  • 在电脑桌面上怎么制作可视化工作计划待办清单?
    对于忙碌的上班族来说,每天都需要处理大量的工作任务,如何在繁杂的工作中保持高效和有序,成为了一个亟待解决的问题。在电脑桌面上制作可视化的工作计划待办清单,就是一个非常实用的方法。通过将工作任务以清单的形式展现在桌面上,我们可以随时了解工作进度,确保每一项任务都能按时完成,......
  • 监督学习算法——决策树
    本篇承接上篇文章监督学习算法——线性模型决策树importsyssys.pathmglearn.plots.plot_animal_tree()1.构建决策树我们在下图所示的二位分类数据集上构造决策树。这个数据集由2个半月形组成,每个类别都包含50个数据点。我们将这个数据集称为two_moons。学习决策......
  • 立体呈现航空风采,3D漫游可视化探索企业文化新境界
    在科技的浪潮中,3D技术日益成熟,为人们带来了前所未有的视觉体验。而今天,我们将借助这一神奇的技术,开启一场别开生面的航空企业文化漫游之旅,全方位地感受航空企业的魅力与风采。 置身3D模型中,眼前的景象变得栩栩如生,仿佛触手可及。我们可以自由地穿梭于各个展区,欣赏到不同区域的......
  • 深度学习-卷积神经网络-目标检测YOLO-v3-推理运行-55
    目录代码仓地址:https://github.com/qqwweee/keras-yolo3.git创建虚拟环境三方件安装Python3.7.5conda4.1.6pip3uninstallkeras-nightlypip3uninstall-ytensorflowpip3installkeras2.1.6pip3installtensorflow1.15.0pip3installh5py==2.10.0pipinsta......