pub enum RidgePolicy {
ExactFullObjective,
SolverOnly,
}Expand description
Structurally valid ways a diagonal ridge may participate in a computation.
The former public boolean matrix admitted contradictory states such as a quadratic penalty without the corresponding Hessian. This enum has only the coherent inhabitants the engine actually selects.
§Why there is no approximate-determinant inhabitant (#2670)
A third variant, PositivePartApproximateObjective, used to route the ridged
log-determinant through a smooth positive-part spectral approximation
(log|A|_reg = Σ log r_ε(σ_j)), which is a DIFFERENT estimand from the exact
SPD determinant and was named as such. Nothing in production ever selected
it: every construction of it lived under #[cfg(test)], so the only thing it
bought the library was a second, worse answer a user could opt into by
mistake. It is deleted rather than kept as a fallback — a preserved fallback
is a second implementation of the same quantity, and this one changed the
estimand while doing it.
The smooth regulariser itself is NOT deleted and was never this enum’s
business: spectral_regularize / spectral_epsilon stay live in the REML
outer engine’s DenseSpectralOperator, where a caller genuinely wants the
smooth surrogate together with its matching analytic gradient.
With one determinant semantics left there is no determinant_mode() and no
RidgeDeterminantMode: a query whose answer is a constant is not a query.
Variants§
ExactFullObjective
Ridge is an explicit part of the exact objective: quadratic, penalty normalizer, and Laplace Hessian all include it, using a full SPD logdet.
SolverOnly
Ridge changes only an inner linear solve and never the fitted objective, exported Hessian, determinant, covariance, or serialized model.
Implementations§
Source§impl RidgePolicy
impl RidgePolicy
pub const fn exact_full_objective() -> RidgePolicy
pub const fn solver_only() -> RidgePolicy
pub const fn accounts_for_objective(self) -> bool
Trait Implementations§
Source§impl Clone for RidgePolicy
impl Clone for RidgePolicy
Source§fn clone(&self) -> RidgePolicy
fn clone(&self) -> RidgePolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RidgePolicy
Source§impl Debug for RidgePolicy
impl Debug for RidgePolicy
Source§impl<'de> Deserialize<'de> for RidgePolicy
impl<'de> Deserialize<'de> for RidgePolicy
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<RidgePolicy, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<RidgePolicy, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for RidgePolicy
Source§impl Hash for RidgePolicy
impl Hash for RidgePolicy
Source§impl PartialEq for RidgePolicy
impl PartialEq for RidgePolicy
Source§impl Serialize for RidgePolicy
impl Serialize for RidgePolicy
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for RidgePolicy
Auto Trait Implementations§
impl Freeze for RidgePolicy
impl RefUnwindSafe for RidgePolicy
impl Send for RidgePolicy
impl Sync for RidgePolicy
impl Unpin for RidgePolicy
impl UnsafeUnpin for RidgePolicy
impl UnwindSafe for RidgePolicy
Blanket Implementations§
impl<T> Boilerplate for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.