Significado de los términos de salida en el paquete gbm

15

Estoy usando el paquete gbm para la clasificación. Como se esperaba, los resultados son buenos. Pero estoy tratando de entender la salida del clasificador. Hay cinco términos en la salida.

`Iter   TrainDeviance   ValidDeviance   StepSize   Improve`

¿Alguien podría explicar el significado de cada término, especialmente el significado de Mejorar ?

Yoanh27
fuente

Respuestas:

11

Debe encontrar que estos están relacionados con la determinación del mejor valor para el número de funciones básicas, es decir, iteraciones, es decir, el número de árboles en el modelo aditivo. No puedo encontrar documentación que describa exactamente cuáles son, pero aquí está mi mejor suposición y tal vez alguien más pueda comentar.

Tome lo siguiente del manual:

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

El número de iteraciones ( Iter) es 3000, que es el número de árboles seleccionados para construir (1 a 3000, aunque no se muestran todos). Por cierto, el proceso completo se repite 5 veces porque seleccionamos cv.folds = 5.

StepSize es la contracción o tasa de aprendizaje seleccionada (0.005 aquí).

Creo que Improvees la reducción de la desviación (función de pérdida) al agregar otro árbol y se calcula utilizando los registros de la bolsa (OOB) (tenga en cuenta que no se calculará si bag.fraction no es <1).

Luego, para cada iteración, TrainDeviance ValidDeviancees el valor de la función de pérdida en los datos de entrenamiento y los datos de retención (un único conjunto de retención). ValidDeviance no se calculará si train.fractionno es <1.

¿Has visto esto que describe los 3 tipos de métodos para determinar la cantidad óptima de árboles?

B_Miner
fuente