sklears_model_selection/epistemic_uncertainty/
uncertainty_config.rs

1use super::calibration::CalibrationMethod;
2use super::uncertainty_decomposition::UncertaintyDecompositionMethod;
3use super::uncertainty_methods::*;
4
5#[derive(Debug, Clone)]
6pub struct EpistemicUncertaintyConfig {
7    pub method: EpistemicUncertaintyMethod,
8    pub confidence_level: f64,
9    pub random_state: Option<u64>,
10    pub calibration_method: CalibrationMethod,
11    pub temperature_scaling: bool,
12}
13
14#[derive(Debug, Clone)]
15pub struct AleatoricUncertaintyConfig {
16    pub method: AleatoricUncertaintyMethod,
17    pub confidence_level: f64,
18    pub random_state: Option<u64>,
19    pub noise_regularization: f64,
20    pub min_variance: f64,
21}
22
23#[derive(Debug, Clone)]
24pub struct UncertaintyQuantificationConfig {
25    pub epistemic_config: EpistemicUncertaintyConfig,
26    pub aleatoric_config: AleatoricUncertaintyConfig,
27    pub decomposition_method: UncertaintyDecompositionMethod,
28    pub confidence_level: f64,
29    pub random_state: Option<u64>,
30}
31
32impl Default for EpistemicUncertaintyConfig {
33    fn default() -> Self {
34        Self {
35            method: EpistemicUncertaintyMethod::Bootstrap {
36                n_bootstrap: 100,
37                sample_ratio: 0.8,
38            },
39            confidence_level: 0.95,
40            random_state: None,
41            calibration_method: CalibrationMethod::TemperatureScaling,
42            temperature_scaling: true,
43        }
44    }
45}
46
47impl Default for AleatoricUncertaintyConfig {
48    fn default() -> Self {
49        Self {
50            method: AleatoricUncertaintyMethod::ResidualBasedUncertainty { window_size: 10 },
51            confidence_level: 0.95,
52            random_state: None,
53            noise_regularization: 0.01,
54            min_variance: 1e-6,
55        }
56    }
57}
58
59impl Default for UncertaintyQuantificationConfig {
60    fn default() -> Self {
61        Self {
62            epistemic_config: EpistemicUncertaintyConfig::default(),
63            aleatoric_config: AleatoricUncertaintyConfig::default(),
64            decomposition_method: UncertaintyDecompositionMethod::VarianceDecomposition,
65            confidence_level: 0.95,
66            random_state: None,
67        }
68    }
69}