tangram_model 0.6.0

Tangram is an all-in-one automated machine learning framework.
Documentation
#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "static", value_size = 8)]
pub enum ModelTrainOptions {
	#[buffalo(id = 0, required)]
	Linear(LinearModelTrainOptions),
	#[buffalo(id = 1, required)]
	Tree(TreeModelTrainOptions),
}

#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "dynamic")]
pub struct LinearModelTrainOptions {
	#[buffalo(id = 0, required)]
	pub compute_loss: bool,
	#[buffalo(id = 1, required)]
	pub l2_regularization: f32,
	#[buffalo(id = 2, required)]
	pub learning_rate: f32,
	#[buffalo(id = 3, required)]
	pub max_epochs: u64,
	#[buffalo(id = 4, required)]
	pub n_examples_per_batch: u64,
	#[buffalo(id = 5, required)]
	pub early_stopping_options: Option<LinearEarlyStoppingOptions>,
}

#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "dynamic")]
pub struct LinearEarlyStoppingOptions {
	#[buffalo(id = 0, required)]
	pub early_stopping_fraction: f32,
	#[buffalo(id = 1, required)]
	pub n_rounds_without_improvement_to_stop: u64,
	#[buffalo(id = 2, required)]
	pub min_decrease_in_loss_for_significant_change: f32,
}

#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "dynamic")]
pub struct TreeModelTrainOptions {
	#[buffalo(id = 0, required)]
	pub binned_features_layout: BinnedFeaturesLayout,
	#[buffalo(id = 1, required)]
	pub compute_loss: bool,
	#[buffalo(id = 2, required)]
	pub early_stopping_options: Option<TreeEarlyStoppingOptions>,
	#[buffalo(id = 3, required)]
	pub l2_regularization_for_continuous_splits: f32,
	#[buffalo(id = 4, required)]
	pub l2_regularization_for_discrete_splits: f32,
	#[buffalo(id = 5, required)]
	pub learning_rate: f32,
	#[buffalo(id = 6, required)]
	pub max_depth: Option<u64>,
	#[buffalo(id = 7, required)]
	pub max_examples_for_computing_bin_thresholds: u64,
	#[buffalo(id = 8, required)]
	pub max_leaf_nodes: u64,
	#[buffalo(id = 9, required)]
	pub max_rounds: u64,
	#[buffalo(id = 10, required)]
	pub max_valid_bins_for_number_features: u8,
	#[buffalo(id = 11, required)]
	pub min_examples_per_node: u64,
	#[buffalo(id = 12, required)]
	pub min_gain_to_split: f32,
	#[buffalo(id = 13, required)]
	pub min_sum_hessians_per_node: f32,
	#[buffalo(id = 14, required)]
	pub smoothing_factor_for_discrete_bin_sorting: f32,
}

#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "static", value_size = 0)]
pub enum BinnedFeaturesLayout {
	#[buffalo(id = 0)]
	RowMajor,
	#[buffalo(id = 1)]
	ColumnMajor,
}

#[derive(buffalo::Read, buffalo::Write)]
#[buffalo(size = "dynamic")]
pub struct TreeEarlyStoppingOptions {
	#[buffalo(id = 0, required)]
	pub early_stopping_fraction: f32,
	#[buffalo(id = 1, required)]
	pub n_rounds_without_improvement_to_stop: u64,
	#[buffalo(id = 2, required)]
	pub min_decrease_in_loss_for_significant_change: f32,
}