xgboost
|
define regression tree to be the most common tree model. More...
#include <tree_model.h>
Classes | |
struct | CategoricalSplitMatrix |
CSR-like matrix for categorical splits. More... | |
struct | FVec |
dense feature vector that can be taken by RegTree and can be construct from sparse feature vector. More... | |
class | Node |
tree node More... | |
Public Types | |
using | SplitCondT = bst_float |
Public Member Functions | |
void | ChangeToLeaf (int rid, bst_float value) |
change a non leaf node to a leaf node, delete its children More... | |
void | CollapseToLeaf (int rid, bst_float value) |
collapse a non leaf node to a leaf node, delete its children More... | |
RegTree () | |
RegTree (bst_target_t n_targets, bst_feature_t n_features) | |
Constructor that initializes the tree model with shape. More... | |
Node & | operator[] (int nid) |
get node given nid More... | |
const Node & | operator[] (int nid) const |
get node given nid More... | |
const std::vector< Node > & | GetNodes () const |
get const reference to nodes More... | |
const std::vector< RTreeNodeStat > & | GetStats () const |
get const reference to stats More... | |
RTreeNodeStat & | Stat (int nid) |
get node statistics given nid More... | |
const RTreeNodeStat & | Stat (int nid) const |
get node statistics given nid More... | |
void | Load (dmlc::Stream *fi) |
load model from stream More... | |
void | Save (dmlc::Stream *fo) const |
save model to stream More... | |
void | LoadModel (Json const &in) override |
load the model from a JSON object More... | |
void | SaveModel (Json *out) const override |
saves the model config to a JSON object More... | |
bool | operator== (const RegTree &b) const |
template<typename Func > | |
void | WalkTree (Func func) const |
bool | Equal (const RegTree &b) const |
Compares whether 2 trees are equal from a user's perspective. The equality compares only non-deleted nodes. More... | |
void | ExpandNode (bst_node_t nid, unsigned split_index, bst_float split_value, bool default_left, bst_float base_weight, bst_float left_leaf_weight, bst_float right_leaf_weight, bst_float loss_change, float sum_hess, float left_sum, float right_sum, bst_node_t leaf_right_child=kInvalidNodeId) |
Expands a leaf node into two additional leaf nodes. More... | |
void | ExpandNode (bst_node_t nidx, bst_feature_t split_index, float split_cond, bool default_left, linalg::VectorView< float const > base_weight, linalg::VectorView< float const > left_weight, linalg::VectorView< float const > right_weight) |
Expands a leaf node into two additional leaf nodes for a multi-target tree. More... | |
void | ExpandCategorical (bst_node_t nid, bst_feature_t split_index, common::Span< const uint32_t > split_cat, bool default_left, bst_float base_weight, bst_float left_leaf_weight, bst_float right_leaf_weight, bst_float loss_change, float sum_hess, float left_sum, float right_sum) |
Expands a leaf node with categories. More... | |
bool | HasCategoricalSplit () const |
Whether this tree has categorical split. More... | |
bool | IsMultiTarget () const |
Whether this is a multi-target tree. More... | |
bst_target_t | NumTargets () const |
The size of leaf weight. More... | |
auto | GetMultiTargetTree () const |
Get the underlying implementaiton of multi-target tree. More... | |
bst_feature_t | NumFeatures () const noexcept |
Get the number of features. More... | |
bst_node_t | NumNodes () const noexcept |
Get the total number of nodes including deleted ones in this tree. More... | |
bst_node_t | NumValidNodes () const noexcept |
Get the total number of valid nodes in this tree. More... | |
bst_node_t | NumExtraNodes () const noexcept |
number of extra nodes besides the root More... | |
bst_node_t | GetNumLeaves () const |
bst_node_t | GetNumSplitNodes () const |
std::int32_t | GetDepth (bst_node_t nid) const |
get current depth More... | |
void | SetLeaf (bst_node_t nidx, linalg::VectorView< float const > weight) |
Set the leaf weight for a multi-target tree. More... | |
int | MaxDepth (int nid) const |
get maximum depth More... | |
int | MaxDepth () |
get maximum depth More... | |
void | CalculateContributionsApprox (const RegTree::FVec &feat, std::vector< float > *mean_values, bst_float *out_contribs) const |
calculate the approximate feature contributions for the given root More... | |
std::string | DumpModel (const FeatureMap &fmap, bool with_stats, std::string format) const |
dump the model in the requested format as a text string More... | |
FeatureType | NodeSplitType (bst_node_t nidx) const |
Get split type for a node. More... | |
std::vector< FeatureType > const & | GetSplitTypes () const |
Get split types for all nodes. More... | |
common::Span< uint32_t const > | GetSplitCategories () const |
common::Span< uint32_t const > | NodeCats (bst_node_t nidx) const |
Get the bit storage for categories. More... | |
auto const & | GetSplitCategoriesPtr () const |
CategoricalSplitMatrix | GetCategoriesMatrix () const |
bst_feature_t | SplitIndex (bst_node_t nidx) const |
float | SplitCond (bst_node_t nidx) const |
bool | DefaultLeft (bst_node_t nidx) const |
bst_node_t | DefaultChild (bst_node_t nidx) const |
bool | IsRoot (bst_node_t nidx) const |
bool | IsLeaf (bst_node_t nidx) const |
bst_node_t | Parent (bst_node_t nidx) const |
bst_node_t | LeftChild (bst_node_t nidx) const |
bst_node_t | RightChild (bst_node_t nidx) const |
bool | IsLeftChild (bst_node_t nidx) const |
bst_node_t | Size () const |
Public Member Functions inherited from xgboost::Model | |
virtual | ~Model ()=default |
Static Public Attributes | |
static constexpr bst_node_t | kInvalidNodeId {MultiTargetTree::InvalidNodeId()} |
static constexpr uint32_t | kDeletedNodeMarker = std::numeric_limits<uint32_t>::max() |
static constexpr bst_node_t | kRoot {0} |
define regression tree to be the most common tree model.
This is the data structure used in xgboost's major tree models.
|
inline |
|
inlineexplicit |
Constructor that initializes the tree model with shape.
void xgboost::RegTree::CalculateContributionsApprox | ( | const RegTree::FVec & | feat, |
std::vector< float > * | mean_values, | ||
bst_float * | out_contribs | ||
) | const |
calculate the approximate feature contributions for the given root
feat | dense feature vector, if the feature is missing the field is set to NaN |
out_contribs | output vector to hold the contributions |
|
inline |
change a non leaf node to a leaf node, delete its children
rid | node id of the node |
value | new leaf value |
|
inline |
collapse a non leaf node to a leaf node, delete its children
rid | node id of the node |
value | new leaf value |
|
inline |
|
inline |
std::string xgboost::RegTree::DumpModel | ( | const FeatureMap & | fmap, |
bool | with_stats, | ||
std::string | format | ||
) | const |
dump the model in the requested format as a text string
fmap | feature map that may help give interpretations of feature |
with_stats | whether dump out statistics as well |
format | the format to dump the model in |
bool xgboost::RegTree::Equal | ( | const RegTree & | b | ) | const |
Compares whether 2 trees are equal from a user's perspective. The equality compares only non-deleted nodes.
b | The other tree. |
void xgboost::RegTree::ExpandCategorical | ( | bst_node_t | nid, |
bst_feature_t | split_index, | ||
common::Span< const uint32_t > | split_cat, | ||
bool | default_left, | ||
bst_float | base_weight, | ||
bst_float | left_leaf_weight, | ||
bst_float | right_leaf_weight, | ||
bst_float | loss_change, | ||
float | sum_hess, | ||
float | left_sum, | ||
float | right_sum | ||
) |
Expands a leaf node with categories.
nid | The node index to expand. |
split_index | Feature index of the split. |
split_cat | The bitset containing categories |
default_left | True to default left. |
base_weight | The base weight, before learning rate. |
left_leaf_weight | The left leaf weight for prediction, modified by learning rate. |
right_leaf_weight | The right leaf weight for prediction, modified by learning rate. |
loss_change | The loss change. |
sum_hess | The sum hess. |
left_sum | The sum hess of left leaf. |
right_sum | The sum hess of right leaf. |
void xgboost::RegTree::ExpandNode | ( | bst_node_t | nid, |
unsigned | split_index, | ||
bst_float | split_value, | ||
bool | default_left, | ||
bst_float | base_weight, | ||
bst_float | left_leaf_weight, | ||
bst_float | right_leaf_weight, | ||
bst_float | loss_change, | ||
float | sum_hess, | ||
float | left_sum, | ||
float | right_sum, | ||
bst_node_t | leaf_right_child = kInvalidNodeId |
||
) |
Expands a leaf node into two additional leaf nodes.
nid | The node index to expand. |
split_index | Feature index of the split. |
split_value | The split condition. |
default_left | True to default left. |
base_weight | The base weight, before learning rate. |
left_leaf_weight | The left leaf weight for prediction, modified by learning rate. |
right_leaf_weight | The right leaf weight for prediction, modified by learning rate. |
loss_change | The loss change. |
sum_hess | The sum hess. |
left_sum | The sum hess of left leaf. |
right_sum | The sum hess of right leaf. |
leaf_right_child | The right child index of leaf, by default kInvalidNodeId, some updaters use the right child index of leaf as a marker |
void xgboost::RegTree::ExpandNode | ( | bst_node_t | nidx, |
bst_feature_t | split_index, | ||
float | split_cond, | ||
bool | default_left, | ||
linalg::VectorView< float const > | base_weight, | ||
linalg::VectorView< float const > | left_weight, | ||
linalg::VectorView< float const > | right_weight | ||
) |
Expands a leaf node into two additional leaf nodes for a multi-target tree.
|
inline |
|
inline |
get current depth
nid | node id |
|
inline |
Get the underlying implementaiton of multi-target tree.
|
inline |
get const reference to nodes
bst_node_t xgboost::RegTree::GetNumLeaves | ( | ) | const |
bst_node_t xgboost::RegTree::GetNumSplitNodes | ( | ) | const |
|
inline |
|
inline |
|
inline |
Get split types for all nodes.
|
inline |
get const reference to stats
|
inline |
Whether this tree has categorical split.
|
inline |
|
inline |
|
inline |
Whether this is a multi-target tree.
|
inline |
|
inline |
void xgboost::RegTree::Load | ( | dmlc::Stream * | fi | ) |
load model from stream
fi | input stream |
|
overridevirtual |
load the model from a JSON object
in | JSON object where to load the model from |
Implements xgboost::Model.
|
inline |
get maximum depth
|
inline |
get maximum depth
nid | node id |
|
inline |
Get the bit storage for categories.
|
inline |
Get split type for a node.
nidx | Index of node. |
|
inlinenoexcept |
number of extra nodes besides the root
|
inlinenoexcept |
Get the number of features.
|
inlinenoexcept |
Get the total number of nodes including deleted ones in this tree.
|
inline |
The size of leaf weight.
|
inlinenoexcept |
Get the total number of valid nodes in this tree.
|
inline |
|
inline |
get node given nid
|
inline |
get node given nid
|
inline |
|
inline |
void xgboost::RegTree::Save | ( | dmlc::Stream * | fo | ) | const |
save model to stream
fo | output stream |
|
overridevirtual |
saves the model config to a JSON object
out | JSON container where to save the model to |
Implements xgboost::Model.
|
inline |
Set the leaf weight for a multi-target tree.
|
inline |
|
inline |
|
inline |
|
inline |
get node statistics given nid
|
inline |
get node statistics given nid
|
inline |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |