pub struct Ebm { /* private fields */ }Expand description
The settings of an explainable boosting machine (booster = ebm;
see crate::ebm). Build with Ebm::builder; the
defaults are one bag of every row, main effects only, no early stopping,
and the classic cyclic EBM.
use std::num::NonZeroUsize;
use hessboost::config::{Ebm, EbmEarlyStopping};
let stopping = EbmEarlyStopping::new(
NonZeroUsize::new(50).unwrap(),
EbmEarlyStopping::DEFAULT_TOLERANCE,
)?;
let ebm = Ebm::builder()
.interactions(2)
.outer_bags(8)
.bag_fraction(0.85)
.early_stopping(stopping)
.build()?;
assert_eq!((ebm.interactions(), ebm.outer_bags()), (2, 8));
assert_eq!(ebm.early_stopping(), Some(stopping));
// Early stopping scores each bag on the rows it does not train on.
assert!(Ebm::builder().early_stopping(stopping).build().is_err());Implementations§
Source§impl Ebm
impl Ebm
Sourcepub fn builder() -> EbmBuilder
pub fn builder() -> EbmBuilder
Start a builder at the defaults.
Sourcepub fn interactions(&self) -> usize
pub fn interactions(&self) -> usize
Number of pairwise interaction terms added after the main effects:
the top pairs by FAST (Lou et al., KDD 2013) on the main-effect
model’s gradients, each boosted like a main effect on its two
features. At most n_features (n_features − 1) / 2 (checked at
training). ebm_interactions.
Sourcepub fn outer_bags(&self) -> usize
pub fn outer_bags(&self) -> usize
Outer bags (InterpretML’s outer_bags): each bag boosts its own copy
of every term on its own row sample, and the model averages them.
ebm_outer_bags.
Sourcepub fn bag_fraction(&self) -> f64
pub fn bag_fraction(&self) -> f64
Fraction of the rows each outer bag trains on, drawn without
replacement per bag (InterpretML trains each bag on 1 − validation_size = 0.85). ebm_bag_fraction.
Sourcepub fn boulevard(&self) -> bool
pub fn boulevard(&self) -> bool
Boulevard-regularized EBM (Fang, Tan, Pipping & Hooker, AISTATS
2026, Algorithm 1): every round fits one tree per term to the same
residuals, centers it, and averages it into its term with learning
rate eta ∈ (0, 1], so the terms converge to a feature-wise kernel
ridge regression with confidence bands
(EbmInference). Squared error
only, with Boulevard’s refusals, one bag of every row, and no early
stopping. ebm_boulevard.
Sourcepub fn early_stopping(&self) -> Option<EbmEarlyStopping>
pub fn early_stopping(&self) -> Option<EbmEarlyStopping>
Per-bag early stopping of a classic EBM (EbmEarlyStopping),
None for none.
Trait Implementations§
impl Copy for Ebm
impl StructuralPartialEq for Ebm
Auto Trait Implementations§
impl Freeze for Ebm
impl RefUnwindSafe for Ebm
impl Send for Ebm
impl Sync for Ebm
impl Unpin for Ebm
impl UnsafeUnpin for Ebm
impl UnwindSafe for Ebm
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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