跨境獨(dú)立站建站免費(fèi)手游推廣代理平臺(tái)渠道
GBM是一種集成學(xué)習(xí)算法,它結(jié)合了多個(gè)弱學(xué)習(xí)器(通常是決策樹)來(lái)構(gòu)建一個(gè)強(qiáng)大的預(yù)測(cè)模型。GBM使用“Boosting”的技術(shù)來(lái)訓(xùn)練弱學(xué)習(xí)器,這種技術(shù)是一個(gè)迭代的過(guò)程,每一輪都會(huì)關(guān)注之前輪次中預(yù)測(cè)效果較差的樣本,以便更專注地對(duì)它們進(jìn)行建模。這有助于逐步減少整體預(yù)測(cè)誤差。
#1 清空
rm(list = ls())
gc()
#2 導(dǎo)入包
library("survival")
library("gbm")
help(package="gbm")
#3 拆分訓(xùn)練集和測(cè)試集
data<-lung
set.seed(123)
train <- sample(1:nrow(data), round(nrow(data) * 0.70))
train <- data[train, ]
test <- data[-train, ]
#4 建立模型
set.seed(123)
gbm_model <- gbm(Surv(time, status) ~ .,#建模distribution = "coxph",#分布data = train,#數(shù)據(jù)n.trees = 5000,#樹數(shù)量shrinkage = 0.1,#學(xué)習(xí)率或步長(zhǎng)減少interaction.depth = 5,#每棵樹的最大深度n.minobsinnode = 10,#最小觀測(cè)次數(shù)在樹的終末節(jié)點(diǎn)cv.folds = 10#交叉驗(yàn)證次數(shù)
)
plot(gbm_model)#通過(guò)“積分”其他變量,繪制所選變量的邊際效應(yīng)。
summary(gbm_model)#繪圖,從高到低顯示因素的相對(duì)重要性
?
#5 預(yù)測(cè)
best.iter <- gbm.perf(gbm_model, plot.it = TRUE, method = "cv")
pred_train <- predict(gbm_model, train, n.trees = best.iter)
pred_test <- predict(gbm_model, test, n.trees = best.iter)
#6 模型評(píng)價(jià)
#計(jì)算ROC
library(survivalROC)
roc_area <- survivalROC(Stime=train$time,status=train$status,marker =pred_train,predict.time=100,method="KM")
# 計(jì)算C-index
Hmisc::rcorr.cens(-pred_train, Surv(train$time, train$status))
Hmisc::rcorr.cens(-pred_test, Surv(test$time, test$status))
#7 計(jì)算生存概率
# 計(jì)算累積
CH<- basehaz.gbm(train$time, train$status, pred_train, t.eval = 300, cumulative = TRUE)
exp(-exp(pred_test)*CH)