J'ai travaillé sur l'obtention d'un intervalle de confiance bootstrap autour des AUC générées dans un algorithme d'apprentissage automatique à gradient de rendement avec un résultat continu. Ci-dessous le code pour une itération de ce qui doit être répété au moins 200 fois:Extraction d'AUC à partir de modèles à gradient amélioré de 200 répliques créées manuellement dans R
- Rééchantillonnage le jeu de données principal (n = 1000) avec le remplacement
- quantile normalise la variable de résultat
- Run GBM sur l'ensemble de données rééchantillonné et extraire AUC
Je sais SAS je pouvais utiliser une macro qui traverserait ce code 200 fois, la création de 200 jeux de données et l'extraction de 200 AUC je pouvais fusionner, mais je ne sais pas comment je boucle ceci dans R.
#calling required packages
library("WVPlots")
source('functions.R')
require(gbm)
#generating some data
main<-matrix(
replicate(52,rnorm(1132)),
ncol=52,
nrow=1132,
dimnames = list(
1:1132,
1:52)
)
colnames(main)[1] <- "PctControl"
#creating resampled dataset BS[1] (so my aim is to repeat this for BS[1:200]
BS1=matrix(
rep(as.numeric(NA)),
nrow=1000,
ncol= ncol(main),
dimnames= list(1:1000, colnames(main))
)
BS1[1:1000,]<-as.matrix (main[sample(nrow(main),size=1000,replace=TRUE),])
BS1<-BS1[order(BS1[,1]),]
Survival <- as.numeric (BS1[,1])
NormedSurvival<- as.numeric(ppoints(Survival))
BS1<-cbind (NormedSurvival, BS1)
BS1<-as.data.frame(BS1[,-2])
#fitting the GBM model
scwrpxy.fit.gbm = gbm(NormedSurvival~.,
data=BS1,
n.trees = 50, verbose = T, shrinkage = 0.005,
bag.fraction = 0.25, # subsampling fraction, 0.5 is probably best
train.fraction = 0.3,
interaction.depth = 3, n.minobsinnode = 10, distribution = "gaussian",
cv.folds = 3)
summary(scwrpxy.fit.gbm)
#Calculating AUC
predictedGBM<-as.numeric(predict.gbm (scwrpxy.fit.gbm,
n.trees = 500,
shrinkage = 0.005,
interaction.depth=3,
bag.fraction=0.5,
train.fraction=0.3,
cv.folds = 5,
distribution="gaussian"))
observedGBM<-as.numeric(BS1$NormedSurvival)
TestTox<-as.data.frame(cbind(observedGBM,predictedGBM))
ROCPlot(TestTox,'predictedGBM','observedGBM','gbm model')
gbmAUC = as.numeric(pROC::auc(TestTox$observedGBM,TestTox$predictedGBM))
print(gbmAUC)