原文链接:http://tecdat.cn/?p=23344
最近咱们被客户要求撰写对于信用卡守约的钻研报告,包含一些图形和统计输入。
本文中咱们介绍了决策树和随机森林的概念,并在R语言中用逻辑回归、回归决策树、随机森林进行信用卡守约数据分析(查看文末理解数据获取形式)
决策树是由节点和分支组成的简略树状构造。依据每个节点的任何输出特色拆分数据,生成两个或多个分支作为输入。这个迭代过程减少了生成的分支的数量并对原始数据进行了分区。这种状况始终继续到生成一个节点,其中所有或简直所有数据都属于同一类,并且不再可能进一步拆分或分支。
这整个过程生成了一个树状构造。第一个决裂节点称为根节点。末端节点称为叶子并与类标签相关联。从根到叶的门路产生分类规定。
假如你是一名员工,你想吃食物。
您的口头计划将取决于多种状况。
如果你不饿,你就不会花钱。然而如果你饿了,那么抉择就会扭转。你的下一步口头取决于你的下一个状况,即你有没有买午餐?
当初,如果你不吃午饭,你的口头将齐全取决于你的下一个抉择,即是不是月底?如果是月底最初几天,能够思考不吃饭;否则,您不会将其视为偏好。
当波及多个抉择来做出任何决定时,决策树就会发挥作用。当初你必须做出相应的抉择以取得无利的后果。
决策树如何工作?
决策树有两个组成部分:熵和信息增益
熵是一个用来掂量信息或无序的概念。咱们能够用它来掂量数据集的纯度。
为了更好地了解熵,让咱们钻研两个不同的示例数据集,它们都有两个类,别离示意为蓝点和红叉。在左侧的示例数据集中,咱们混合了蓝点和红叉。在右侧数据集的示例中,咱们只有红十字。第二种状况——一个只有一个类样本的数据集——是咱们的指标:一个“纯”数据子集。
熵能够是纯度、无序或信息的量度。因为混合类,右边的数据集不那么污浊,更凌乱(更无序,即更高的熵)。然而,更多的凌乱也意味着更多的信息。实际上,如果数据集只有一类的点,那么无论您尝试多长时间,都无奈从中提取太多信息。相比之下,如果数据集具备来自两个类的点,则它也具备更高的信息提取后劲。所以,右边数据集的熵值越高,也能够看作是潜在信息量越大。
信息增益为了评估一个特色对决裂的好坏,计算决裂前后的熵差。
决策树中每个拆分的指标是从混同的数据集挪动到两个(或更多)更纯的子集。现实状况下,决裂应该导致熵为 0.0 的子集。然而,在实践中,如果拆分导致子集的总熵低于原始数据集就足够了。
也就是说,咱们首先计算宰割前数据集的熵,而后计算宰割后每个子集的熵。最初,在拆分之前从数据集的熵中减去由子集大小加权的输入熵之和。这种差别掂量了信息的增益或熵的缩小。如果信息增益是一个负数,这意味着咱们从一个凌乱的数据集转移到了一些更纯正的子集。
而后,在每一步,咱们将抉择在信息增益值最高的特色上宰割数据,因为这会产生最纯正的子集。
咱们将首先宰割信息增益最高的特色。这是一个递归过程,直到所有子节点都是纯的或直到信息增益为零。
随机森林
随机森林是另一种弱小且最罕用的监督学习算法。
许多比一个好。简略来说,这就是随机森林算法背地的概念。也就是说,许多决策树能够产生比仅仅一棵决策树自身更精确的预测。事实上,随机森林算法是一种有监督的分类算法,它构建了 N 个通过略微不同训练的决策树,并将它们合并在一起以取得更精确和稳固的预测.
让咱们再次强调这个概念。整个想法依赖于多个决策树,这些决策树都通过稍微不同的训练,并且所有这些决策树都被思考到最终决策中。
在一个随机森林中,N 棵决策树在通过取得的原始训练集的一个子集上进行训练自举原始数据集,即通过带放回的随机抽样。
此外,输出特色也可能因树而异,作为原始特色集的随机子集。
N 个稍有不同训练的树将对雷同的输出向量产生 N 个稍有不同的预测。通常,少数规定实用于做出最终决定。N棵树中的大多数提供的预测被用作最初一棵。
这种策略的劣势是不言而喻的。尽管来自单个树的预测对训练集中的噪声高度敏感,但来自大多数树的预测却不是——前提是这些树不相干。Bootstrap 采样是通过在不同的训练集上训练树来去相干树的办法。
接下来,咱们在R语言中用逻辑回归、回归决策树、随机森林进行信用卡守约剖析。
**
**
信贷数据集,其中蕴含了银行贷款申请人的信息。该文件蕴含1000名申请人的20条信息。
上面的代码能够用来确定申请人是否有信用,以及他(或她)是否对贷款人有良好的信用风险。有几种办法被利用到数据上,帮忙做出这种判断。在这个案例中,咱们将看一下这些办法。
请留神,本例可能须要进行一些数据处理,以便为剖析做筹备。
咱们首先将数据加载到R中。
credit <- read.csv(credit, header = TRUE, sep = ',')
这段代码在数据上做了一个小的解决,为剖析做筹备。否则,就会呈现谬误,因为在某些文件的某一列中发现有四类因素。
基本上,任何4类因变量都被笼罩为3类。持续进行剖析。
No.of.Credits[No.of.Credits == 4] <- 3
疾速浏览一下数据,理解一下咱们的工作内容。
str(credit)
你可能会立刻留神到有几个变量很显眼。咱们要排除它们。”信贷期限(月)”、”信贷金额 “和 “年龄”。
为什么?
咱们在这个模型中试图把重点放在作为信用价值指标的数据分类或类别上。这些是分类变量,而不是数字变量。申请人有电话吗?申请人是否已婚?是否有独特签订人?申请人在同一地址住了多长时间?这类事件。
对于这些因素,重要的是咱们晓得它们与贷款决定的关系。良好的信用与某些因素的组合无关,从而使咱们能够用概率将新的申请人按其特色进行分类。
在数据中,这些问题的答案不是 “是 “或 “不是 “或 “十年”。答案被分组为更宽泛的分类。
咱们须要做的是删除真正的数字数据(工夫、金额和年龄),保留分类因素。咱们排除选定列。
而后咱们创立一个简短的函数,将整数转换成因子。
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')
让咱们描述一下后果。
咱们将通过寻找AUC来完结这一部分。
AUCLog1
这不是一个蹩脚的后果,但让咱们看看是否能够用不同的办法做得更好。
办法二:另一种Logistic模型
在这种办法中,咱们将建设第二个Logistic逻辑模型来利用咱们数据集中的所有变量。其步骤与上述第一个模型雷同。
perf2 <- performance(pred2, 'tpr', 'fpr')
plot(perf2)
AUCLog2
包含所有的变量,咱们并没有失去多少改善。一个好的规定是尽可能放弃模型的简略。减少更多的变量会带来很少的改善,所以保持应用更简略的模型。
点击题目查阅往期内容
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
左右滑动查看更多
01
02
03
04
办法三:回归树
接下来,让咱们试着用回归树的办法来剖析数据。咱们的大部分代码与上述逻辑模型中应用的代码类似,但咱们须要做一些调整。
请再次留神,咱们正在钻研咱们模型中的所有变量,找到它们对咱们感兴趣的变量–信用度的影响。
TreeModel <- rpart(Creditability ~ ., data = credit[i_calibration1, ])
library(rpart.plot)
prp(TreeModel, type = 2, extra = 1)
perf3 <- performance(pred3, 'tpr', 'fpr')
plot(perf3)
思考到咱们的树状模型的复杂性,这些后果并不令人满意,所以咱们不得不再次狐疑第一个例子中更简略的Logistic Regression模型是否更好。
办法四:随机森林
与其建设一棵决策树,咱们能够应用随机森林办法来创立一个决策树 “森林”。在这种办法中,最终后果是类的模式(如果咱们正在钻研分类模型)或预测的平均值(如果咱们正在钻研回归)。
随机森林背地的想法是,决策树很容易适度拟合,所以找到森林中的 “均匀 “树能够帮忙防止这个问题。
你能够设想,这比创立一棵决策树在计算上要求更高,但R能够很好地解决这一工作。
randomForest(Credit ~ )
通过致力,咱们失去了一个有点改良的后果。随机森林模型是咱们所尝试的四个模型中体现最好的。然而,这须要判断后果是否值得付出额定的致力。
办法五:比拟随机森林和Logistic模型
好了,咱们曾经看了应用两种根本分析方法的各种后果–逻辑回归和决策树。咱们只看到了以AUC示意的繁多后果。
随机森林办法要求咱们创立一个决策树的森林,并取其模式或平均值。为什么不利用所有这些数据呢?它们会是什么样子呢?
上面的代码创立了一个图表,形容了咱们的随机森林中每棵树的AUC分数和逻辑模型的数百种组合。
首先咱们须要一个函数来进行剖析。
function(i){
i_test2 <- sample(1:nrow(credit), size = 333)
summary(LogisticModel.3)
fitLog3 <- predict(LogisticModel.3, type = 'response', newdata = credit[i_test2,
这部分代码的运行须要一段时间,因为咱们要对数百个独自的后果进行列表和记录。你能够通过扭转VAUC对象中的计数来调整模型中的后果数量。在这里,咱们抉择计算200个x-y对,或400个独自的后果。
plot(t(VC))
你能够看到,咱们从前四个模型中失去的后果正好处于散布的两头。
这为咱们证实了这些模型都是有可比性的。咱们所心愿的最好后果是AUC达到0.84,而且大多数人给咱们的后果与咱们曾经计算的后果类似。
然而,让咱们试着更好地可视化。
首先,咱们将对象转换成一个数据框架。
咱们创立几个新图。第一个是密度等高线图。
plot(AA, aes(x = V1, y = V2)
第二张是高密度等高线图,给咱们提供了数据的概率区域。
with(AA, boxplot(V1, V2))
无论咱们以何种形式形容咱们的后果,都必须应用数据来做出正当的贷款决定。这里有一个问题?
这些可能是咱们应用这些模型所能得出的最佳分数,但这些后果对于确定贷款申请人的信用价值是否能够承受?这取决于贷款机构所应用的信用规范。
在最好的状况下,看起来咱们的模型给了82%的机会向良好的信用风险提供贷款。对于每100万元的贷款,咱们最多可能冀望失去82万元的偿还。均匀而言,咱们预计会发出大概78万元的本金。换句话说,依据咱们的剖析,有75%到80%的机会从新取得100万元的贷款,这取决于咱们应用的建模办法。
当咱们把贷款申请人退出咱们的数据库时,如果咱们要把他们视为良好的信贷风险,咱们心愿他们汇集在高密度图的最暗区域。
除非咱们收取大量的利息来补救咱们的损失,否则咱们可能须要更好的模型。
点击文末 “浏览原文”
获取全文残缺材料。
本文选自《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)回归树检测异样值