Parse a LightGBM model json dump into a data.table
structure.
lgb.model.dt.tree(model, num_iteration = NULL)
model | object of class |
---|---|
num_iteration | number of iterations you want to predict with. NULL or <= 0 means use best iteration |
A data.table
with detailed information about model trees' nodes and leafs.
The columns of the data.table
are:
tree_index
: ID of a tree in a model (integer)
split_index
: ID of a node in a tree (integer)
split_feature
: for a node, it's a feature name (character);
for a leaf, it simply labels it as "NA"
node_parent
: ID of the parent node for current node (integer)
leaf_index
: ID of a leaf in a tree (integer)
leaf_parent
: ID of the parent node for current leaf (integer)
split_gain
: Split gain of a node
threshold
: Splitting threshold value of a node
decision_type
: Decision type of a node
default_left
: Determine how to handle NA value, TRUE -> Left, FALSE -> Right
internal_value
: Node value
internal_count
: The number of observation collected by a node
leaf_value
: Leaf value
leaf_count
: The number of observation collected by a leaf
data(agaricus.train, package = "lightgbm") train <- agaricus.train dtrain <- lgb.Dataset(train$data, label = train$label) params <- list(objective = "binary", learning_rate = 0.01, num_leaves = 63, max_depth = -1, min_data_in_leaf = 1, min_sum_hessian_in_leaf = 1) model <- lgb.train(params, dtrain, 20) model <- lgb.train(params, dtrain, 20) tree_dt <- lgb.model.dt.tree(model)