当前位置:   article > 正文

数据分享|R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集...

r语言现收集到银行贷款客户的个人信息、负债信息以及曾经是否有过违约的记录

原文链接:http://tecdat.cn/?p=23344

信贷数据集查看文末了解数据获取方式,其中包含了银行贷款申请人的信息。该文件包含1000名申请人的20条信息。

下面的代码可以用来确定申请人是否有信用,以及他(或她)是否对贷款人有良好的信用风险。有几种方法被应用到数据上,帮助做出这种判断。在这个案例中,我们将看一下这些方法。

请注意,本例可能需要进行一些数据处理,以便为分析做准备。

我们首先将数据加载到R中。

credit <- read.csv(credit, header = TRUE, sep = ',')

这段代码在数据上做了一个小的处理,为分析做准备。否则,就会出现错误,因为在某些文件的某一列中发现有四类因素。

基本上,任何4类因变量都被覆盖为3类。继续进行分析。

No.of.Credits\[No.of.Credits == 4\] <- 3

快速浏览一下数据,了解一下我们的工作内容。

str(credit)

9b969803dbab1f854570fe87bf57d0ec.png

你可能会立即注意到有几个变量很显眼。我们要排除它们。"信贷期限(月)"、"信贷金额 "和 "年龄"。

为什么?

我们在这个模型中试图把重点放在作为信用价值指标的数据分类或类别上。这些是分类变量,而不是数字变量。申请人有电话吗?申请人是否已婚?是否有共同签署人?申请人在同一地址住了多长时间?这类事情。

关于这些因素,重要的是我们知道它们与贷款决定的关系。良好的信用与某些因素的组合有关,从而使我们可以用概率将新的申请人按其特征进行分类。

在数据中,这些问题的答案不是 "是 "或 "不是 "或 "十年"。答案被分组为更广泛的分类。

我们需要做的是删除真正的数字数据(时间、金额和年龄),保留分类因素。我们排除选定列。

然后我们创建一个简短的函数,将整数转换成因子。

for(i in S) credit\[, i\] <- as.factor(credit\[, i\])

现在我们有了有用的数据,我们可以开始应用不同的分析方法。

方法一:_逻辑回归_(Logistic Regression)

第一步是创建我们的训练数据集和测试数据集。训练集用于训练模型。测试集则用于评估模型的准确性。

我们把数据集分成任何我们喜欢的大小,在这里我们使用三分之一,三分之二的分割。

(1:nrow(credit))\[-sample(1:nrow(credit), size = 333)\]

在这个阶段,我们将使用glm()函数进行Logistic回归。在这里,我们有选择地使用模型中的变量。但现在只是用五个变量来确定信用度的值。

LogisticModel<- glm(Credit ~ Account + Payment + Purp + Length.of.current + Sex, family = binomial, data = credit)

完成后,我们继续将我们刚刚创建的模型拟合到测试集i_test1上,并准备进行第一次预测。

我们已经拟合了模型。现在我们将使用ROCR包来创建预测,并以曲线下面积(AUC)来衡量性能。AUC越大,说明我们的模型表现越好。

perf1 <- performance(pred1, 'tpr''fpr')

让我们描绘一下结果。

974072b2abc95d11306f23c1fdd386e9.png

我们将通过寻找AUC来结束这一部分。

AUCLog1

f4f78ef5f74e53c42287dfd7b8a93a4a.png  

这不是一个糟糕的结果,但让我们看看是否可以用不同的方法做得更好。

方法二:另一种Logistic模型

在这种方法中,我们将建立第二个Logistic逻辑模型来利用我们数据集中的所有变量。其步骤与上述第一个模型相同。

  1. perf2 <- performance(pred2, 'tpr''fpr')
  2. plot(perf2)

8dbccd1c494d64fb6c17e7b7c383f5dc.png

AUCLog2

ccd5b6444f736c04dee28e72614f6012.png

包括所有的变量,我们并没有得到多少改善。一个好的规则是尽可能保持模型的简单。增加更多的变量会带来很少的改善,所以坚持使用更简单的模型。


点击标题查阅往期内容

6ba65bb33391ac457f8e5f0e5169fa95.jpeg

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

outside_default.png

左右滑动查看更多

outside_default.png

01

ce4e695178e6ecc42d1c7b3b2e8285e8.png

02

657b0fed3fe561f55d5c0ae3d40e1c8b.png

03

050cc4fa58257b1ad49e202b300942f5.png

04

532928f72ea11346adb9c39fc4d458a1.png

方法三:回归树

接下来,让我们试着用回归树的方法来分析数据。我们的大部分代码与上述逻辑模型中使用的代码相似,但我们需要做一些调整。

请再次注意,我们正在研究我们模型中的所有变量,找到它们对我们感兴趣的变量--信用度的影响。

  1. TreeModel <- rpart(Creditability ~ ., data = credit\[i_calibration1, \])
  2. library(rpart.plot)
  3. prp(TreeModel, type = 2, extra = 1)

c4a82ef9cab8e52ac32a72576b65407f.png

  1. perf3 <- performance(pred3, 'tpr''fpr')
  2. plot(perf3)

c532217c7a47cabbbb156da399211c40.png

eb4b93787cc4ad2dd56190dbc3675a27.png

考虑到我们的树状模型的复杂性,这些结果并不令人满意,所以我们不得不再次怀疑第一个例子中更简单的Logistic Regression模型是否更好。

方法四:随机森林

与其建立一棵决策树,我们可以使用随机森林方法来创建一个决策树 "森林"。在这种方法中,最终结果是类的模式(如果我们正在研究分类模型)或预测的平均值(如果我们正在研究回归)。

随机森林背后的想法是,决策树很容易过度拟合,所以找到森林中的 "平均 "树可以帮助避免这个问题。

你可以想象,这比创建一棵决策树在计算上要求更高,但R可以很好地处理这一工作。

randomForest(Credit ~ )

2980eeaf47a071d78e47a3ee6e2f650d.png

fdf4f9a3930914dd9204289649a55b9c.png

通过努力,我们得到了一个有点改进的结果。随机森林模型是我们所尝试的四个模型中表现最好的。但是,这需要判断结果是否值得付出额外的努力。

方法五:比较随机森林和Logistic模型

好了,我们已经看了使用两种基本分析方法的各种结果--逻辑回归和决策树。我们只看到了以AUC表示的单一结果。

随机森林方法要求我们创建一个决策树的森林,并取其模式或平均值。为什么不利用所有这些数据呢?它们会是什么样子呢?

下面的代码创建了一个图表,描述了我们的随机森林中每棵树的AUC分数和逻辑模型的数百种组合。

首先我们需要一个函数来进行分析。

  1. function(i){
  2.         i_test2 <- sample(1:nrow(credit), size = 333)
  3.         summary(LogisticModel.3)
  4.         fitLog3 <- predict(LogisticModel.3type = 'response', newdata = credit\[i_test2,

这部分代码的运行需要一段时间,因为我们要对数百个单独的结果进行列表和记录。你可以通过改变VAUC对象中的计数来调整模型中的结果数量。在这里,我们选择计算200个x-y对,或400个单独的结果。

plot(t(VC))

ef3af4685062c2caa382df82f2bbb155.png

你可以看到,我们从前四个模型中得到的结果正好处于分布的中间。

这为我们证实了这些模型都是有可比性的。我们所希望的最好结果是AUC达到0.84,而且大多数人给我们的结果与我们已经计算的结果相似。

但是,让我们试着更好地可视化。

首先,我们将对象转换成一个数据框架。

我们创建几个新图。第一个是密度等高线图。

plot(AA, aes(x = V1, y = V2)

f1ced671ff3df7dabfa52c13e442cfcd.png

第二张是高密度等高线图,给我们提供了数据的概率区域。

with(AA, boxplot(V1, V2))

348321d1789fbdafec8319f7c3ba4256.png

无论我们以何种方式描述我们的结果,都必须使用数据来做出合理的贷款决定。这里有一个问题?

这些可能是我们使用这些模型所能得出的最佳分数,但这些结果对于确定贷款申请人的信用价值是否可以接受?这取决于贷款机构所使用的信用标准。

在最好的情况下,看起来我们的模型给了82%的机会向良好的信用风险提供贷款。对于每100万元的贷款,我们最多可能期望得到82万元的偿还。平均而言,我们预计会收回大约78万元的本金。换句话说,根据我们的分析,有75%到80%的机会重新获得100万元的贷款,这取决于我们使用的建模方法。

当我们把贷款申请人加入我们的数据库时,如果我们要把他们视为良好的信贷风险,我们希望他们聚集在高密度图的最暗区域。

除非我们收取大量的利息来弥补我们的损失,否则我们可能需要更好的模型。

数据获取

在下面公众号后台回复“信贷数”,可获取完整数据。

94761ed3b66b694fa54beb19b0b38bbc.jpeg

点击文末“阅读原文”

获取全文完整资料。

本文选自《R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集》。

点击标题查阅往期内容

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

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)回归树检测异常值

588a20ff0bb1e83ca015054ad749e78d.png

909c8be812ce1c5de6426ca87efb6015.jpeg

aa3d0b7aca2acd7d69c299327b6ac450.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/475843
推荐阅读
相关标签
  

闽ICP备14008679号