2016-10-09 2 views
0

계속적인 결과로 그라디언트가 증가 된 기계 학습 알고리즘에서 생성 된 AUC 주위에 부트 스트랩 된 신뢰 구간을 얻는 데 노력하고 있습니다.그라디언트 증가 모델에서 AUC 추출하기 R 수동으로 생성 된 복제본에서 R

  1. 리 샘플
  2. 분위수가 결과 변수를
  3. 실행 GBM을 정상화 교체와 주요 데이터 세트 (N = 1000) : 다음은 최소 200 번 반복해야 할 것 중 하나 반복에 대한 코드입니다 어떻게 것 리샘플링 된 데이터 세트 및 200 개 데이터 세트를 생성하고 (200) AUC의 I 병합 수를 추출, AUC
  4. 나는이 코드를 통해 200 번 실행 할 매크로를 사용할 수 SAS 알고

를 추출,하지만 난 몰라 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) 

답변

0

SAS에서는 데이터 세트를 추가하기 위해 PROC APPEND 또는 DATA 단계가 필요합니다. R에서는 동일한 것을 rbind()해야합니다. 다음과 같이하십시오 :

if !exists(baseAUC) 
    baseAUC <- gbmAUC 
else 
    baseAUC <- rbind(baseAUC,gbmAUC)