Check whether current updater can modify a tree. (#5406)
* Check whether current updater can modify a tree. * Fix tree model JSON IO for pruned trees.
This commit is contained in:
@@ -65,6 +65,7 @@ struct TreeParam : public dmlc::Parameter<TreeParam> {
|
||||
DMLC_DECLARE_FIELD(num_nodes).set_lower_bound(1).set_default(1);
|
||||
DMLC_DECLARE_FIELD(num_feature)
|
||||
.describe("Number of features used in tree construction.");
|
||||
DMLC_DECLARE_FIELD(num_deleted);
|
||||
DMLC_DECLARE_FIELD(size_leaf_vector).set_lower_bound(0).set_default(0)
|
||||
.describe("Size of leaf vector, reserved for vector tree");
|
||||
}
|
||||
@@ -114,6 +115,7 @@ class RegTree : public Model {
|
||||
Node(int32_t cleft, int32_t cright, int32_t parent,
|
||||
uint32_t split_ind, float split_cond, bool default_left) :
|
||||
parent_{parent}, cleft_{cleft}, cright_{cright} {
|
||||
this->SetParent(parent_);
|
||||
this->SetSplit(split_ind, split_cond, default_left);
|
||||
}
|
||||
|
||||
@@ -319,6 +321,13 @@ class RegTree : public Model {
|
||||
return nodes_ == b.nodes_ && stats_ == b.stats_ &&
|
||||
deleted_nodes_ == b.deleted_nodes_ && param == b.param;
|
||||
}
|
||||
/*!
|
||||
* \brief Compares whether 2 trees are equal from a user's perspective. The equality
|
||||
* compares only non-deleted nodes.
|
||||
*
|
||||
* \parm b The other tree.
|
||||
*/
|
||||
bool Equal(const RegTree& b) const;
|
||||
|
||||
/**
|
||||
* \brief Expands a leaf node into two additional leaf nodes.
|
||||
|
||||
@@ -40,6 +40,13 @@ class TreeUpdater : public Configurable {
|
||||
* \param args arguments to the objective function.
|
||||
*/
|
||||
virtual void Configure(const Args& args) = 0;
|
||||
/*! \brief Whether this updater can be used for updating existing trees.
|
||||
*
|
||||
* Some updaters are used for building new trees (like `hist`), while some others are
|
||||
* used for modifying existing trees (like `prune`). Return true if it can modify
|
||||
* existing trees.
|
||||
*/
|
||||
virtual bool CanModifyTree() const { return false; }
|
||||
/*!
|
||||
* \brief perform update to the tree models
|
||||
* \param gpair the gradient pair statistics of the data
|
||||
|
||||
Reference in New Issue
Block a user