Sie sollten feststellen, dass diese mit der Ermittlung des besten Werts für die Anzahl der Basisfunktionen - dh Iterationen - dh Anzahl der Bäume im additiven Modell zusammenhängen. Ich kann keine Dokumentation finden, die genau beschreibt, was das ist, aber hier ist meine beste Vermutung und vielleicht kann jemand anderes einen Kommentar abgeben.
Nimm folgendes aus dem Handbuch:
library(gbm)
# A least squares regression example
# create some data
N <- 1000
X1 <- runif(N)
X2 <- 2*runif(N)
X3 <- ordered(sample(letters[1:4],N,replace=TRUE),levels=letters[4:1])
X4 <- factor(sample(letters[1:6],N,replace=TRUE))
X5 <- factor(sample(letters[1:3],N,replace=TRUE))
X6 <- 3*runif(N)
mu <- c(-1,0,1,2)[as.numeric(X3)]
SNR <- 10 # signal-to-noise ratio
Y <- X1**1.5 + 2 * (X2**.5) + mu
sigma <- sqrt(var(Y)/SNR)
Y <- Y + rnorm(N,0,sigma)
# introduce some missing values
X1[sample(1:N,size=500)] <- NA
X4[sample(1:N,size=300)] <- NA
data <- data.frame(Y=Y,X1=X1,X2=X2,X3=X3,X4=X4,X5=X5,X6=X6)
# fit initial model
gbm1 <- gbm(Y~X1+X2+X3+X4+X5+X6, # formula
data=data, # dataset
var.monotone=c(0,0,0,0,0,0), # -1: monotone decrease,
# +1: monotone increase,
# 0: no monotone restrictions
distribution="gaussian", # bernoulli, adaboost, gaussian,
# poisson, coxph, and quantile available
n.trees=3000, # number of trees
shrinkage=0.005, # shrinkage or learning rate,
# 0.001 to 0.1 usually work
interaction.depth=3, # 1: additive model, 2: two-way interactions, etc.
bag.fraction = 0.5, # subsampling fraction, 0.5 is probably best
train.fraction = 0.5, # fraction of data for training,
# first train.fraction*N used for training
n.minobsinnode = 10, # minimum total weight needed in each node
cv.folds = 5, # do 5-fold cross-validation
keep.data=TRUE, # keep a copy of the dataset with the object
verbose=TRUE) # print out progress
Die Anzahl der Iterationen ( Iter
) beträgt 3000. Dies ist die Anzahl der Bäume, die zum Bauen ausgewählt wurden (1 bis 3000, obwohl nicht jeder angezeigt wird). Der gesamte Vorgang wird übrigens fünfmal wiederholt, da wir cv.folds = 5 gewählt haben.
StepSize
ist die gewählte Schrumpfung oder Lernrate (hier 0,005).
Ich glaube, das Improve
ist die Verringerung der Abweichung (Verlustfunktion) durch Hinzufügen eines weiteren Baums und wird anhand der Out-of-Bag-Datensätze (OOB) berechnet (beachten Sie, dass dies nicht berechnet wird, wenn bag.fraction nicht <1 ist).
Dann ist für jede Iteration TrainDeviance ValidDeviance
der Wert der Verlustfunktion für die Trainingsdaten und Haltedaten (ein einzelner Haltesatz). Die ValidDeviance wird nicht berechnet, wenn train.fraction
nicht <1 ist.
Kennen Sie schon das zur Bestimmung der optimalen Anzahl von Bäumen , die beschreibt die drei Arten von Methoden?