Signification des termes de sortie dans le package gbm?

15

J'utilise le paquet gbm pour la classification. Comme prévu, les résultats sont bons. Mais j'essaie de comprendre la sortie du classificateur. Il y a cinq termes en sortie.

`Iter   TrainDeviance   ValidDeviance   StepSize   Improve`

Quelqu'un pourrait-il expliquer la signification de chaque terme, en particulier la signification de Améliorer .

Yoanh27
la source

Réponses:

11

Vous devriez trouver que ceux-ci sont liés à la détermination de la meilleure valeur pour le nombre de fonctions de base - c'est-à-dire les itérations - c'est-à-dire le nombre d'arbres dans le modèle additif. Je ne peux pas trouver de documentation décrivant exactement ce que c'est, mais voici ma meilleure estimation et peut-être que quelqu'un d'autre peut commenter.

Prenez ce qui suit dans le manuel:

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

Le nombre d'itérations ( Iter) est de 3000, qui est le nombre d'arbres sélectionnés pour être construits (1 à 3000 bien que tous ne soient pas affichés). Soit dit en passant, le processus complet est répété 5 fois car nous avons sélectionné cv.folds = 5.

StepSize est le taux de retrait ou d'apprentissage sélectionné (0,005 ici).

Je pense que Improvec'est la réduction de la déviance (fonction de perte) en ajoutant un autre arbre et est calculé en utilisant les enregistrements out-of-bag (OOB) (notez qu'il ne sera pas calculé si bag.fraction n'est pas <1).

Ensuite, pour chaque itération, la TrainDeviance ValidDevianceest la valeur de la fonction de perte sur les données d'entraînement et de maintien des données (un seul ensemble de maintien). Le ValidDeviance ne sera pas calculé s'il train.fractionn'est pas <1.

Avez-vous vu ceci qui décrit les 3 types de méthodes pour déterminer le nombre optimal d'arbres?

B_Miner
la source