59 lines
2.2 KiB
R
59 lines
2.2 KiB
R
% Generated by roxygen2: do not edit by hand
|
|
% Please edit documentation in R/xgb.plot.multi.trees.R
|
|
\name{xgb.plot.multi.trees}
|
|
\alias{xgb.plot.multi.trees}
|
|
\title{Project all trees on one tree and plot it}
|
|
\usage{
|
|
xgb.plot.multi.trees(model, feature_names = NULL, features.keep = 5,
|
|
plot.width = NULL, plot.height = NULL)
|
|
}
|
|
\arguments{
|
|
\item{model}{dump generated by the \code{xgb.train} function.}
|
|
|
|
\item{feature_names}{names of each feature as a \code{character} vector. Can be extracted from a sparse matrix (see example). If model dump already contains feature names, this argument should be \code{NULL}.}
|
|
|
|
\item{features.keep}{number of features to keep in each position of the multi trees.}
|
|
|
|
\item{plot.width}{width in pixels of the graph to produce}
|
|
|
|
\item{plot.height}{height in pixels of the graph to produce}
|
|
}
|
|
\value{
|
|
Two graphs showing the distribution of the model deepness.
|
|
}
|
|
\description{
|
|
Visualization of the ensemble of trees as a single collective unit.
|
|
}
|
|
\details{
|
|
This function tries to capture the complexity of gradient boosted tree ensemble
|
|
in a cohesive way.
|
|
|
|
The goal is to improve the interpretability of the model generally seen as black box.
|
|
The function is dedicated to boosting applied to decision trees only.
|
|
|
|
The purpose is to move from an ensemble of trees to a single tree only.
|
|
|
|
It takes advantage of the fact that the shape of a binary tree is only defined by
|
|
its deepness (therefore in a boosting model, all trees have the same shape).
|
|
|
|
Moreover, the trees tend to reuse the same features.
|
|
|
|
The function will project each tree on one, and keep for each position the
|
|
\code{features.keep} first features (based on Gain per feature measure).
|
|
|
|
This function is inspired by this blog post:
|
|
\url{https://wellecks.wordpress.com/2015/02/21/peering-into-the-black-box-visualizing-lambdamart/}
|
|
}
|
|
\examples{
|
|
data(agaricus.train, package='xgboost')
|
|
|
|
bst <- xgboost(data = agaricus.train$data, label = agaricus.train$label, max.depth = 15,
|
|
eta = 1, nthread = 2, nround = 30, objective = "binary:logistic",
|
|
min_child_weight = 50)
|
|
|
|
p <- xgb.plot.multi.trees(model = bst, feature_names = agaricus.train$data@Dimnames[[2]], features.keep = 3)
|
|
print(p)
|
|
|
|
}
|
|
|