Skip to main content

TreeSlot

Struct TreeSlot 

Source
pub struct TreeSlot { /* private fields */ }
Expand description

Manages the lifecycle of a single tree in the ensemble.

When the drift detector signals DriftSignal::Warning, an alternate tree begins training alongside the active tree. When DriftSignal::Drift is confirmed, the alternate replaces the active tree (or a fresh tree is created if no alternate exists). The drift detector is then reset via clone_fresh to monitor the new tree.

Implementations§

Source§

impl TreeSlot

Source

pub fn new( tree_config: TreeConfig, detector: Box<dyn DriftDetector>, max_tree_samples: Option<u64>, ) -> Self

Create a new TreeSlot with a fresh tree and drift detector.

The active tree starts as a single-leaf tree (prediction = 0.0). No alternate tree is created until a Warning signal is received.

Source

pub fn from_trees( active: HoeffdingTree, alternate: Option<HoeffdingTree>, tree_config: TreeConfig, detector: Box<dyn DriftDetector>, max_tree_samples: Option<u64>, ) -> Self

Reconstruct a TreeSlot from pre-built trees and a fresh drift detector.

Used during model deserialization to restore tree state without replaying the training stream.

Source

pub fn train_and_predict( &mut self, features: &[f64], gradient: f64, hessian: f64, ) -> f64

Train the active tree (and alternate if it exists) on a single sample.

The absolute value of the gradient is fed to the drift detector as an error proxy (gradient = derivative of loss = prediction error signal).

§Returns

The prediction from the active tree before training on this sample. This ensures the prediction reflects only previously seen data, which is critical for unbiased gradient computation in the boosting loop.

§Drift handling
  • DriftSignal::Stable: no action.
  • DriftSignal::Warning: spawn an alternate tree if one is not already being trained. The alternate receives the same training sample.
  • DriftSignal::Drift: replace the active tree with the alternate (or a fresh tree if no alternate exists). The drift detector is reset via clone_fresh so it monitors the new tree from a clean state.
Source

pub fn predict(&self, features: &[f64]) -> f64

Predict without training.

Routes the feature vector through the active tree and returns the leaf value. Does not update any state.

Source

pub fn predict_with_variance(&self, features: &[f64]) -> (f64, f64)

Predict with variance for confidence estimation.

Returns (leaf_value, variance) where variance = 1 / (H_sum + lambda).

Source

pub fn n_leaves(&self) -> usize

Number of leaves in the active tree.

Source

pub fn n_samples_seen(&self) -> u64

Total samples the active tree has seen.

Source

pub fn has_alternate(&self) -> bool

Whether an alternate tree is currently being trained.

Source

pub fn split_gains(&self) -> &[f64]

Accumulated split gains per feature from the active tree.

Source

pub fn active_tree(&self) -> &HoeffdingTree

Immutable access to the active tree.

Source

pub fn alternate_tree(&self) -> Option<&HoeffdingTree>

Immutable access to the alternate tree (if one is being trained).

Source

pub fn tree_config(&self) -> &TreeConfig

Immutable access to the tree configuration.

Source

pub fn detector(&self) -> &dyn DriftDetector

Immutable access to the drift detector.

Source

pub fn detector_mut(&mut self) -> &mut dyn DriftDetector

Mutable access to the drift detector.

Source

pub fn alt_detector(&self) -> Option<&dyn DriftDetector>

Immutable access to the alternate drift detector (always None in the current architecture – the alternate tree shares the main detector). Reserved for future use.

Source

pub fn alt_detector_mut(&mut self) -> Option<&mut dyn DriftDetector>

Mutable access to the alternate drift detector.

Source

pub fn reset(&mut self)

Reset to a completely fresh state: new tree, no alternate, reset detector.

Trait Implementations§

Source§

impl Clone for TreeSlot

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TreeSlot

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more