跨境獨立站建站免費手游推廣代理平臺渠道
GBM是一種集成學習算法,它結合了多個弱學習器(通常是決策樹)來構建一個強大的預測模型。GBM使用“Boosting”的技術來訓練弱學習器,這種技術是一個迭代的過程,每一輪都會關注之前輪次中預測效果較差的樣本,以便更專注地對它們進行建模。這有助于逐步減少整體預測誤差。
#1 清空
rm(list = ls())
gc()
#2 導入包
library("survival")
library("gbm")
help(package="gbm")
#3 拆分訓練集和測試集
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,#學習率或步長減少interaction.depth = 5,#每棵樹的最大深度n.minobsinnode = 10,#最小觀測次數(shù)在樹的終末節(jié)點cv.folds = 10#交叉驗證次數(shù)
)
plot(gbm_model)#通過“積分”其他變量,繪制所選變量的邊際效應。
summary(gbm_model)#繪圖,從高到低顯示因素的相對重要性
?
#5 預測
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 模型評價
#計算ROC
library(survivalROC)
roc_area <- survivalROC(Stime=train$time,status=train$status,marker =pred_train,predict.time=100,method="KM")
# 計算C-index
Hmisc::rcorr.cens(-pred_train, Surv(train$time, train$status))
Hmisc::rcorr.cens(-pred_test, Surv(test$time, test$status))
#7 計算生存概率
# 計算累積
CH<- basehaz.gbm(train$time, train$status, pred_train, t.eval = 300, cumulative = TRUE)
exp(-exp(pred_test)*CH)