码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测


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


    在本文中,我们使用了逻辑回归、决策树和随机森林模型来对信用数据集进行分类预测并比较了它们的性能(点击文末“阅读原文”获取完整代码数据)。

    数据集是

    credit=read.csv("gecredit.csv", header = TRUE, sep = ",")

    看起来所有变量都是数字变量,但实际上,大多数都是因子变量,

    1. > str(credit)
    2. 'data.frame': 1000 obs. of  21 variables:
    3.  $ Creditability   : int  1 1 1 1 1 1 1 1 1 1 ...
    4.  $ Account.Balance : int  1 1 2 1 1 1 1 1 4 2 ...
    5.  $ Duration        : int  18 9 12 12 12 10 8  ...
    6.  $ Purpose         : int  2 0 9 0 0 0 0 0 3 3 ...

    相关视频

    让我们将分类变量转换为因子变量,

    1. > F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20)
    2. > for(i in F) credit\[,i\]=as.factor(credit\[,i\])

    现在让我们创建比例为1:2 的训练和测试数据集

    1. > i_test=sample(1:nrow(credit),size=333)
    2. > i\_calibration=(1:nrow(credit))\[-i\_test\]

    我们可以拟合的第一个模型是对选定协变量的逻辑回归

    1. > LogisticModel <- glm(Creditability ~ Account.Balance + Payment.Status.of.Previous.Credit + Purpose + 
    2. Length.of.current.employment + 
    3. Sex...Marital.Status, family=binomia

    基于该模型,可以绘制ROC曲线并计算AUC(在新的验证数据集上)

    1. > AUCLog1=performance(pred, measure = "auc")@y.values\[\[1\]\]
    2. > cat("AUC: ",AUCLog1,"\\n")
    3. AUC:  0.7340997

    750be6ff67c02fe69f3e99ab4eadaa7d.png

    一种替代方法是考虑所有解释变量的逻辑回归

    1. glm(Creditability ~ ., 
    2. +  family=binomial, 
    3. +  data = credit\[i_calibrat

    点击标题查阅往期内容

    87ebfca28e13fb076df1d82e74e244c8.jpeg

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

    outside_default.png

    左右滑动查看更多

    outside_default.png

    01

    932f348b7ba31850d500368774ed158b.png

    02

    0de0aacd313016a651bdad2e3e06578b.png

    03

    2ee5e8218bdf80ae6c6acb57e507e4da.png

    04

    57dd340ecc1c5aa59bac005e903aa067.png

    我们可能在这里过拟合,可以在ROC曲线上观察到

    1. > perf <- performance(pred, "tpr", "fpr
    2. > AUCLog2=performance(pred, measure = "auc")@y.values\[\[1\]\]
    3. > cat("AUC: ",AUCLog2,"\\n")
    4. AUC:  0.7609792

    79c42514e06c6b969d86e2cd3530f6bc.png

    与以前的模型相比,此处略有改善,后者仅考虑了五个解释变量。

    现在考虑回归树模型(在所有协变量上)

    我们可以使用

    > prp(ArbreModel,type=2,extra=1)

    a816feae5022ccc0da35c10d0f5727d6.png

    模型的ROC曲线为

    1. (pred, "tpr", "fpr")
    2. > plot(perf)
    3. > cat("AUC: ",AUCArbre,"\\n")
    4. AUC:  0.7100323

    5be6db2ad9093761bf67296aa2313230.png

    不出所料,与逻辑回归相比,模型性能较低。一个自然的想法是使用随机森林优化。

    1. > library(randomForest)
    2. > RF <- randomForest(Creditability ~ .,
    3. + data = credit\[i_calibration,\])
    4. > fitForet <- predict(RF,
    5. > cat("AUC: ",AUCRF,"\\n")
    6. AUC:  0.7682367

    648aeaedaf9f8d800eaf62611d0d133d.png

    在这里,该模型(略)优于逻辑回归。实际上,如果我们创建很多训练/验证样本并比较AUC,平均而言,随机森林的表现要比逻辑回归好,

    1. > AUCfun=function(i){
    2. +   set.seed(i)
    3. +   i_test=sample(1:nrow(credit),size=333)
    4. +   i\_calibration=(1:nrow(credit))\[-i\_test\]
    5. +   summary(LogisticModel)
    6. +   fitLog <- predict(LogisticModel,type="response",
    7. +                     newdata=credit\[i_test,\])
    8. +   library(ROCR)
    9. +   pred = prediction( fitLog, credit$Creditability\[i_test\])
    10. +   RF <- randomForest(Creditability ~ .,
    11. +   data = credit\[i_calibration,\])
    12. +   pred = prediction( fitForet, credit$Creditability\[i_test\])
    13. +   return(c(AUCLog2,AUCRF))
    14. + }
    15. > plot(t(A))

    94ba869f70209591280b5b1c70ecd2c8.png


    b60e59397c668493c5cb8ef9c8c76748.jpeg

    点击文末“阅读原文”

    获取全文完整资料。

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

    点击标题查阅往期内容

    逻辑回归(对数几率回归,Logistic)分析研究生录取数据实例

    R语言使用Metropolis- Hasting抽样算法进行逻辑回归

    R语言逻辑回归Logistic回归分析预测股票涨跌

    R语言在逻辑回归中求R square R方

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

    R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归

    R语言进行支持向量机回归SVR和网格搜索超参数优化

    R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

    在R语言中实现Logistic逻辑回归

    R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

    R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

    R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况

    R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

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

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

    R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    c5b3fd513b711ce5d4eec2c074ccd594.png

    68e725e3aa95bd609c22fa73d400b585.jpeg

    2a2a66beae101996483ed55d26b3b846.png

  • 相关阅读:
    轻松修复缺少concrt140.dll,一键修复dll丢失问题
    Python + Google AI 自动修复 Sonar Bug 实践
    TypeScript 类型体操
    36 - 新的 Promise 方法:allSettled & any & race
    双点双向重发布
    Vue--v-for
    python系列笔记——常见运算符:算术运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符,及真题
    2022牛客多校联赛第六场 题解
    Thread类中run和start的区别
    win10 安装 Langchain-Chatchat 避坑指南(2023年9月18日v0.2.4版本,包含全部下载内容!)
  • 原文地址:https://blog.csdn.net/tecdat/article/details/128156898
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号