Skip to main content

LinearLeafModel

Struct LinearLeafModel 

Source
pub struct LinearLeafModel { /* private fields */ }
Available on crate feature alloc only.
Expand description

Online ridge regression leaf model with AdaGrad optimization.

Learns a linear function w . x + b using Newton-scaled gradient descent with per-weight AdaGrad accumulators for adaptive learning rates. Features at different scales converge at their natural rates without manual tuning.

Weights are lazily initialized on the first update call so the model adapts to whatever dimensionality arrives.

Optional exponential weight decay (decay) gives the model a finite memory horizon for non-stationary streams.

Implementations§

Source§

impl LinearLeafModel

Source

pub fn new(learning_rate: f64, decay: Option<f64>, use_adagrad: bool) -> Self

Create a new linear leaf model with the given base learning rate, optional exponential decay factor, and AdaGrad toggle.

When decay is Some(d) with d in (0, 1), weights are multiplied by d before each update, giving the model a memory half-life of ln(2) / ln(1/d) samples.

When use_adagrad is true, per-weight squared gradient accumulators give each feature its own adaptive learning rate. When false, all weights share a single Newton-scaled learning rate (plain SGD).

Trait Implementations§

Source§

impl LeafModel for LinearLeafModel

Source§

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

Produce a prediction given input features.
Source§

fn update(&mut self, features: &[f64], gradient: f64, hessian: f64, lambda: f64)

Update model parameters given a gradient, hessian, and regularization lambda.
Source§

fn clone_fresh(&self) -> Box<dyn LeafModel>

Create a fresh (zeroed / re-initialized) clone of this model’s architecture.
Source§

fn clone_warm(&self) -> Box<dyn LeafModel>

Create a warm clone preserving learned weights but resetting optimizer state. 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.