AdaBoost(Adaptive Boosting,自适应提升)是一种经典的集成学习(Ensemble Learning)算法,由 Yoav Freund 和 Robert Schapire 于 1995 年提出。它主要用于分类任务(也可扩展到回归),通过组合多个弱学习器(weak learners)来构建一个强学习器(strong learner)。

在这里插入图片描述
我目前整合了多个R包,编写了sciababoot函数,可以轻松进行机器学习ababoost分析,下面我来演示一下,先导入R包和数据

library(sciml)
library(scitable)
bc<-read.csv("E:/r/test/demo.csv",sep=',',header=TRUE)
bc <- na.omit(bc)
bc<-bc[,c("HBP","SEX","AGE","FEV1","OCCU","COUGH","EDU")]

在这里插入图片描述
数据变量很多,我解释几个我等下要用的,HBP:是否发生高血压,结局指标,AGE:年龄,是我们的协变量,BMI肥胖指数,FEV1肺活量指标,WEIGHT体重,“SBP”,“DBP”:收缩压和舒张压。公众号回复:体检数据,可以获得数据。

整理数据,主要是对数据检查,把分类变量转成因子

out2<-organizedata2(data = bc,username=username,token=token,explore = T)

提取整理好的数据

data<-out2[["data"]]
allVars<-out2[["allVars"]]
fvars<-out2[["factorvarout"]]

对数据3:7划分

set.seed(123)
tr1<- sample(nrow(data),0.7*nrow(data))##随机无放抽取
data_train <- data[tr1,]#70%数据集
data_test<- data[-tr1,]#30%数据集

使用sciababoot函数进行分析,这个函数使用很简单data这里填入数据,y这里填入你的结局变量,var填入你的研究变量

out<-sciababoot(data = data_train,y="HBP",var = allVars,username=username,token=token)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果咱们想看验证组的结果,可以在datatest加入验证组数据

out<-sciababoot(data = data_train,datatest = data_test,y="HBP",var = allVars,username=username,token=token)

咱们在结果中把模型提取出来

fitababoot<-out[["fit"]]

绘制建模集的ROC

sciroc(fit=fitababoot,newdata = data_train)

在这里插入图片描述
验证集ROC曲线

sciroc(fit=fitababoot,newdata = data_test)

在这里插入图片描述
咱们也可以像有些sci文章中,把多个模型roc合并一起,我简单演示一下

###随机森林
out<-scirandomForest(data=data_train,y="HBP",username=username,token=token,onlygetfit = T)
fitForest<-out[["fit"]]

##支持向量机
out2<-scisvm(data = data_train,y="HBP",var = allVars,username=username,token=token)
fitsvm<-out2[["fit"]]

##逻辑回归
fit2<- glm(HBP ~ SEX + AGE + FEV1+ OCCU+COUGH+EDU,
           family = binomial(link = logit), data = data_train)
##xgboost
out3<-scixgboost(data = data_train,y="HBP",var = allVars,username=username,token=token)
fitxgboot<-out3[["fitxgboot"]]
####ababoot
out<-sciababoot(data=data_train,y="HBP",username=username,token=token)
fitababoot<-out[["fit"]]

建立数据列表

newdata<-list(data_train,data_train,data_train,data_train,data_train)

绘图

out4<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata)
out4[["p"]]

在这里插入图片描述
提取auc值绘图

rocauc<-out4[["rocauc"]]
out5<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata,legend.name =rocauc,legend.title = "模型种类")
out5[["p"]]

在这里插入图片描述
绘制验证集的roc曲线

newdata<-list(data_test,data_test,data_test,data_test,data_test)
out6<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata)
out6[["p"]]

在这里插入图片描述
提取auc值绘图

rocauc<-out6[["rocauc"]]

out7<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata,legend.name =rocauc,legend.title = "模型种类")

out7[["p"]]

在这里插入图片描述
最后总结一下:
Sciml包已经有随机森林,支持向量机,xgboost, AdaBoost,等对常见的一些机器学习进行分析
后续进一步完成决策曲线编写

更多推荐