当前位置: 首页 > news >正文

R语言应用xgboost进行机器学习(1)

XGBoost 机器学习模型是一种高效且可扩的展的机器学习分类器,由 Chen 和 Guestrin 在 2016 年推广。XGBoost原理是是在决策树的基础上产生迭代,它以 boosting 的方式结合了多个决策树。通常创建每棵新树是为了通过梯度提升来减少先前模型的误差,误差指的是实际值和预测值之间的差异。把误差作为协变量参与下一个模型的预测,反复执行这个过程,降低出错率,直到决策树指定阈值,模型已经被训练成功。XGBoost 具有与梯度提升相同的原理,它使用提升次数、学习率、二次采样率和最大树深度来控制过度拟合并增强更好的性能.
在这里插入图片描述
在这里插入图片描述
今天我们通过R语言来演示一下xgboost进行机器学习,使用的是我们的体检数据,
我们先导入数据

library(xgboost)
bc<-read.csv("E:/r/test/demo.csv",sep=',',header=TRUE)

在这里插入图片描述
数据变量很多,我解释几个我等下要用的,HBP:是否发生高血压,结局指标,AGE:年龄,是我们的协变量,SEX:性别等。公众号回复:体检数据,可以获得数据。
我们用不到这么多变量取一部分变量来建模

bc<-bc[,c("HBP","SEX","AGE","FEV1","OCCU","COUGH","EDU")]
bc <- na.omit(bc)
先把分类变量转成因子
bc$HBP<-as.factor(bc$HBP)
bc$SEX<-as.factor(bc$SEX)
bc$OCCU<-as.factor(bc$OCCU)
bc$EDU<-as.factor(bc$EDU)

建模前要构建全是数字矩阵,分类变量要转成哑变量矩阵,可以使用XGBoost自带的xgb.DMatrix 函数来构建,

x = model.matrix(HBP~.,bc)[,-1]
data_train <- xgb.DMatrix(x , label =as.numeric(bc$HBP))

构建好矩阵后就可以建模了,param <- list(objective = “reg:squarederror”)为默认的

param <- list(objective = "reg:squarederror")
HR_xgb_model <- xgb.train(param, data_train, nrounds = 50)
HR_xgb_model

在这里插入图片描述
上图显示的是模型的一些基本参数,niter 为迭代次数, nfeatures为训练数据中的特征数量,nrounds提升迭代的最大次数,模型建立好后,我们可以使用DALEX包的explain函数进行解析
因为我们做的是逻辑回归,所以要建立两个解析式

library("DALEX")

predict_logit <- function(model, x) {
  raw_x <- predict(model, x)
  exp(raw_x)/(1 + exp(raw_x))
}

logit <- function(x) {
  exp(x)/(1+exp(x))
}

进行解析

explainer_xgb <- explain(HR_xgb_model,
                         data = x,
                         y = as.numeric(bc$HBP),
                         predict_function = predict_logit,
                         link = logit,
                         label = "xgboost")
explainer_xgb

在这里插入图片描述
使用model_profile函数进行变量分析

sv_xgb_satisfaction_level <-DALEX::model_profile(explainer_xgb,
                                               type = "partial")
head(sv_xgb_satisfaction_level)
plot(sv_xgb_satisfaction_level)

在这里插入图片描述
可以看到age和fev1这两个变量和结局是相关的
我们导入breakDown包进一步分析

library("breakDown")
library(ggplot2)
nobs <- model_martix_train[1L, , drop = FALSE]

explain_2 <- broken(HR_xgb_model, new_observation = nobs, 
                    data = model_martix_train)
explain_2

在这里插入图片描述
explain_2表示了每个变量对结局影响的权重,下图则以图示说明每个变量是怎么样对模型进行影响的
在这里插入图片描述
我们还可以进行进行模型指标重要行绘图

vd_xgb <- variable_importance(explainer_xgb, type = "raw")
plot(vd_xgb)

在这里插入图片描述
上图显示了哪个指标对结局变量的影响最大,我们可以看到对结局影响最大是是年龄、FEV1,EDU3.

OK,本期先介绍到这里,未完待续。

相关文章:

  • 网站模板制作教程/惠州seo全网营销
  • 网页设计制作规范/优化步骤
  • wordpress获取文章title/查排名网站
  • 体育网站界面该怎样做/网站建设找哪家公司好
  • 可以做微网站的第三方平台/如何对seo进行优化
  • 校园网站建设培训体会/注册域名费用一般多少钱
  • 2023年天津理工大学中环信息学院专业课考试具体安排
  • URLLC关键技术和网络适应性分析
  • 【圣诞节特辑】爱心代码(程序员的浪漫plus+)-李峋
  • Apache Spark 练习六:使用Spark分析音乐专辑数据
  • 【DETR目标检测】关键词:Decoder。Encoder。query向量。注意力机制。
  • Hook原理
  • Python定时任务工具--APScheduler
  • 天天写业务代码,如何成为技术大牛?
  • 【SpringBoot+Redis】实现多端登录+token自动续期和定期刷新+自定义注解和拦截器实现鉴权(角色和权限校验)
  • 嵌入式分享合集125
  • 第4、5、6 章
  • VUE—跳转传参