39#ifndef STOCHTREE_CUTPOINT_CANDIDATES_H_
40#define STOCHTREE_CUTPOINT_CANDIDATES_H_
42#include <stochtree/meta.h>
43#include <stochtree/partition_tracker.h>
52 FeatureCutpointGrid(
int cutpoint_grid_size) : node_stride_begin_{}, node_stride_length_{}, cutpoint_grid_size_{cutpoint_grid_size} {}
87 std::vector<std::uint32_t>
out;
90 out.push_back(
static_cast<std::uint32_t
>(cutpoint_values_.at(
j)));
97 std::vector<data_size_t> node_stride_begin_;
98 std::vector<data_size_t> node_stride_length_;
99 std::vector<double> cutpoint_values_;
114 feature_cutpoint_grid_.resize(num_features_);
115 for (
int i = 0;
i < num_features_;
i++) {
118 cutpoint_grid_size_ = cutpoint_grid_size;
123 void Reset(Eigen::MatrixXd&
covariates, Eigen::VectorXd&
residuals,
int cutpoint_grid_size) {
125 feature_cutpoint_grid_.resize(num_features_);
126 for (
int i = 0;
i < num_features_;
i++) {
129 cutpoint_grid_size_ = cutpoint_grid_size;
165 std::vector<std::unique_ptr<FeatureCutpointGrid>> feature_cutpoint_grid_;
167 int cutpoint_grid_size_;
191 return (std::find(nodes_enumerated_.begin(), nodes_enumerated_.end(),
node_id) != nodes_enumerated_.end());
199 std::vector<data_size_t> node_stride_length_;
203 std::vector<int32_t> nodes_enumerated_;
Container class for FeatureCutpointGrid objects stored for every feature in a dataset.
Definition cutpoint_candidates.h:110
double CutpointValue(int i, int feature_index)
Value of the upper-bound (cutpoint) implied by bin i.
Definition cutpoint_candidates.h:153
int32_t BinStartIndex(int i, int feature_index)
Beginning index of bin i.
Definition cutpoint_candidates.h:144
int32_t BinLength(int i, int feature_index)
Size of bin i.
Definition cutpoint_candidates.h:147
int32_t NumCutpoints(int feature_index)
Number of potential cutpoints enumerated.
Definition cutpoint_candidates.h:141
std::vector< std::uint32_t > CutpointVector(int i, int feature_index)
Vector of cutpoint values up to and including bin i Helper function for converting categorical split ...
Definition cutpoint_candidates.h:158
void CalculateStrides(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index, std::vector< FeatureType > &feature_types)
Calculate strides.
Definition cutpoint_candidates.h:133
int32_t CutpointGridSize()
Max size of cutpoint grid.
Definition cutpoint_candidates.h:138
int32_t BinEndIndex(int i, int feature_index)
Beginning index of bin i.
Definition cutpoint_candidates.h:150
Computing and tracking cutpoints available for a given feature at a given node Store cutpoint bins in...
Definition cutpoint_candidates.h:50
int32_t NumCutpoints()
Number of potential cutpoints enumerated.
Definition cutpoint_candidates.h:69
void CalculateStridesOrderedCategorical(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Split numeric / ordered categorical feature and update sort indices.
std::vector< std::uint32_t > CutpointVector(int i)
Vector of cutpoint values up to and including bin i Helper function for converting categorical split ...
Definition cutpoint_candidates.h:86
void CalculateStrides(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index, std::vector< FeatureType > &feature_types)
Calculate strides.
int32_t BinLength(int i)
Size of bin i.
Definition cutpoint_candidates.h:75
void CalculateStridesNumeric(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Split numeric / ordered categorical feature and update sort indices.
void CalculateStridesUnorderedCategorical(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Split unordered categorical feature and update sort indices.
int32_t BinEndIndex(int i)
Beginning index of bin i.
Definition cutpoint_candidates.h:78
int32_t BinStartIndex(int i)
Beginning index of bin i.
Definition cutpoint_candidates.h:72
double CutpointValue(int i)
Value of the upper-bound (cutpoint) implied by bin i.
Definition cutpoint_candidates.h:81
Computing and tracking cutpoints available for a given feature at a given node.
Definition cutpoint_candidates.h:171
void CalculateStridesCategorical(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Split unordered categorical feature and update sort indices.
int32_t NumCutpoints()
Number of potential cutpoints enumerated.
Definition cutpoint_candidates.h:187
void CalculateStridesNumeric(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Split numeric / ordered categorical feature and update sort indices.
int32_t CurrentNodeEvaluated()
Node id of the node that has been most recently evaluated.
Definition cutpoint_candidates.h:195
bool NodeCutpointEvaluated(int32_t node_id)
Whether a cutpoint grid has been enumerated for a given node.
Definition cutpoint_candidates.h:190
std::vector< data_size_t > node_stride_begin_
Vectors of node stride starting points and stride lengths.
Definition cutpoint_candidates.h:198
void CalculateStrides(Eigen::MatrixXd &covariates, Eigen::VectorXd &residuals, SortedNodeSampleTracker *feature_node_sort_tracker, int32_t node_id, data_size_t node_begin, data_size_t node_end, int32_t feature_index)
Calculate strides.
Data structure for tracking observations through a tree partition with each feature pre-sorted.
Definition partition_tracker.h:605
static void GFRSampleOneIter(TreeEnsemble &active_forest, ForestTracker &tracker, ForestContainer &forests, LeafModel &leaf_model, ForestDataset &dataset, ColumnVector &residual, TreePrior &tree_prior, std::mt19937 &gen, std::vector< double > &variable_weights, std::vector< int > &sweep_update_indices, double global_variance, std::vector< FeatureType > &feature_types, int cutpoint_grid_size, bool keep_forest, bool pre_initialized, bool backfitting, int num_features_subsample, int num_threads, LeafSuffStatConstructorArgs &... leaf_suff_stat_args)
Definition tree_sampler.h:816
A collection of random number generation utilities.
Definition bart.h:15