Struct forust_ml::splitter::MissingBranchSplitter
source · pub struct MissingBranchSplitter {
pub l2: f32,
pub gamma: f32,
pub min_leaf_weight: f32,
pub learning_rate: f32,
pub allow_missing_splits: bool,
pub constraints_map: ConstraintMap,
}Expand description
Missing branch splitter Always creates a separate branch for the missing values of a feature. This results, in every node having a specific “missing”, direction. If this node is able, it will be split further, otherwise it will a leaf node will be generated.
Fields§
§l2: f32§gamma: f32§min_leaf_weight: f32§learning_rate: f32§allow_missing_splits: bool§constraints_map: ConstraintMapTrait Implementations§
source§impl Splitter for MissingBranchSplitter
impl Splitter for MissingBranchSplitter
fn get_constraint(&self, feature: &usize) -> Option<&Constraint>
fn get_gamma(&self) -> f32
fn get_l2(&self) -> f32
source§fn evaluate_split(
&self,
left_gradient: f32,
left_hessian: f32,
right_gradient: f32,
right_hessian: f32,
missing_gradient: f32,
missing_hessian: f32,
lower_bound: f32,
upper_bound: f32,
constraint: Option<&Constraint>
) -> Option<(NodeInfo, NodeInfo, MissingInfo)>
fn evaluate_split( &self, left_gradient: f32, left_hessian: f32, right_gradient: f32, right_hessian: f32, missing_gradient: f32, missing_hessian: f32, lower_bound: f32, upper_bound: f32, constraint: Option<&Constraint> ) -> Option<(NodeInfo, NodeInfo, MissingInfo)>
Evaluate a split, returning the node info for the left, and right splits,
as well as the node info the missing data of a feature.
source§fn handle_split_info(
&self,
split_info: SplitInfo,
n_nodes: &usize,
node: &mut SplittableNode,
index: &mut [usize],
data: &Matrix<'_, u16>,
cuts: &JaggedMatrix<f64>,
grad: &[f32],
hess: &[f32],
parallel: bool
) -> Vec<SplittableNode>
fn handle_split_info( &self, split_info: SplitInfo, n_nodes: &usize, node: &mut SplittableNode, index: &mut [usize], data: &Matrix<'_, u16>, cuts: &JaggedMatrix<f64>, grad: &[f32], hess: &[f32], parallel: bool ) -> Vec<SplittableNode>
Handle the split info, creating the children nodes, for the provided nodes
push them onto the growable stack.
Return a tuple, where the first value is the number of nodes pushed onto the
growable stack, and the second value is the number of potential leaves
that have been added.
fn best_split(&self, node: &SplittableNode) -> Option<SplitInfo>
fn best_feature_split( &self, node: &SplittableNode, feature: usize ) -> Option<SplitInfo>
fn split_node( &self, n_nodes: &usize, node: &mut SplittableNode, index: &mut [usize], data: &Matrix<'_, u16>, cuts: &JaggedMatrix<f64>, grad: &[f32], hess: &[f32], parallel: bool ) -> Vec<SplittableNode>
Auto Trait Implementations§
impl RefUnwindSafe for MissingBranchSplitter
impl Send for MissingBranchSplitter
impl Sync for MissingBranchSplitter
impl Unpin for MissingBranchSplitter
impl UnwindSafe for MissingBranchSplitter
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more