leaspy.models.noise_models.OrdinalNoiseModel

class OrdinalNoiseModel(parameters: DictParamsTorch | None = None, max_levels: Dict[FeatureType, int] | None = None)

Bases: OrdinalFamily, AbstractOrdinalNoiseModel

Class implementing ordinal noise models (likelihood is based on PDF).

Parameters:
parametersdict [ str, torch.Tensor ] or None

Values for all the free parameters of the distribution family. All of them must have values before using the sampling methods.

max_levelsdict, optional

Maximum levels for ordinal noise.

Attributes:
mask
max_level
max_levels
ordinal_infos
parameters

Methods

compute_canonical_loss(data, predictions)

Compute a human-friendly overall loss (independent from instance parameters), useful as a measure of goodness-of-fit after personalization (nll by default - assuming no free parameters).

compute_nll(data, predictions, *[, ...])

Compute the negative log-likelihood and its gradient wrt predictions.

compute_sufficient_statistics(data, predictions)

Computes the set of noise-related sufficient statistics and metrics (to be extended in child class).

factory(pdf, **kws)

Generate a new MultinomialDistribution from its probability density function instead of its survival function.

move_to_device(device)

Move all torch tensors stored in this instance to the provided device (parameters & hyperparameters).

raise_if_partially_defined()

Raise an error if some of the free parameters are not defined.

raise_if_unknown_parameters(params)

Raise an error if the provided parameters are not part of the free parameters.

rv_around(loc)

Return the torch distribution centred around values (only if noise is not None).

sample_around(loc)

Realization around loc with respect to partially defined distribution.

sampler_around(loc)

Return the sampling function around input values.

to_dict()

Serialize instance as dictionary.

update_parameters(*[, validate])

(Partial) update of the free parameters of the distribution family.

update_parameters_from_predictions(data, ...)

Updates noise-model parameters in-place (nothing done by default).

update_parameters_from_sufficient_statistics(...)

Updates noise-model parameters in-place (nothing done by default).

validate(**params)

Validation function for parameters (based on 'validate_xxx' methods).

compute_canonical_loss(data: Dataset, predictions: Tensor) Tensor

Compute a human-friendly overall loss (independent from instance parameters), useful as a measure of goodness-of-fit after personalization (nll by default - assuming no free parameters).

Parameters:
dataDataset

The dataset related to the computation of the log likelihood.

predictionstorch.Tensor

The model’s predictions from which to compute the canonical loss.

Returns:
torch.Tensor

The computed loss.

compute_nll(data: Dataset, predictions: Tensor, *, with_gradient: bool = False) Tensor | Tuple[Tensor, Tensor]

Compute the negative log-likelihood and its gradient wrt predictions.

Parameters:
dataDataset

The dataset related to the computation of the log likelihood.

predictionstorch.Tensor

The model’s predictions from which to compute the log likelihood.

with_gradientbool, optional

If True, returns also the gradient of the negative log likelihood wrt the predictions. If False, only returns the negative log likelihood. Default=False.

Returns:
torch.Tensor or tuple of torch.Tensor

The negative log likelihood (and its jacobian if requested).

compute_sufficient_statistics(data: Dataset, predictions: Tensor) Dict[str, Tensor]

Computes the set of noise-related sufficient statistics and metrics (to be extended in child class).

Parameters:
dataDataset

The dataset related to the computation of the sufficient statistics.

predictionstorch.Tensor

The model’s predictions from which to compute the sufficient statistics.

Returns:
DictParamsTorch

The sufficient statistics.

classmethod factory(pdf: Tensor, **kws)

Generate a new MultinomialDistribution from its probability density function instead of its survival function.

Parameters:
pdftorch.Tensor

The input probability density function.

**kws

Additional keyword arguments to be passed for instance initialization.

move_to_device(device: device) None

Move all torch tensors stored in this instance to the provided device (parameters & hyperparameters).

Parameters:
devicetorch.device

Torch device on which to move the tensors.

raise_if_partially_defined() None

Raise an error if some of the free parameters are not defined.

classmethod raise_if_unknown_parameters(params: Iterable | None) None

Raise an error if the provided parameters are not part of the free parameters.

Parameters:
paramsIterable, optional

The list of parameters to analyze.

rv_around(loc: Tensor) Distribution

Return the torch distribution centred around values (only if noise is not None).

Parameters:
loctorch.Tensor

The loc around which to sample.

Returns:
torch.distributions.distribution.Distribution

The torch distribution centered around the loc.

sample_around(loc: Tensor) Tensor

Realization around loc with respect to partially defined distribution.

Parameters:
loctorch.Tensor

The loc around which to sample.

Returns:
torch.Tensor

The requested sample.

sampler_around(loc: Tensor) Callable[[], Tensor]

Return the sampling function around input values.

Parameters:
loctorch.Tensor

The loc around which to sample.

Returns:
Callable

The sampler.

to_dict() Dict[str, Any]

Serialize instance as dictionary.

Warning

Do NOT export hyper-parameters that are derived (error-prone and boring checks when re-creating).

Returns:
KwargsType

The instance serialized as a dictionary.

update_parameters(*, validate: bool = False, **parameters: Tensor) None

(Partial) update of the free parameters of the distribution family.

Parameters:
validatebool, optional

If True, the provided parameters are validated before being updated. Default=False.

**parameterstorch.Tensor

The new parameters.

update_parameters_from_predictions(data: Dataset, predictions: Tensor) None

Updates noise-model parameters in-place (nothing done by default).

Parameters:
dataDataset

The dataset related to the computation of the log likelihood.

predictionstorch.Tensor

The model’s predictions from which to update the parameters.

update_parameters_from_sufficient_statistics(data: Dataset, sufficient_statistics: Dict[str, Tensor]) None

Updates noise-model parameters in-place (nothing done by default).

Parameters:
dataDataset

The dataset related to the computation of the log likelihood.

sufficient_statisticsDictParamsTorch

The sufficient statistics to use for parameter update.

validate(**params: Any) Dict[str, Tensor]

Validation function for parameters (based on ‘validate_xxx’ methods).

Parameters:
**paramsAny

The parameters to validate.

Returns:
DictParamsTorch

The validated parameters.