MixtureNegativeLogLikelihoodLoss#
- class mlquantify.losses.MixtureNegativeLogLikelihoodLoss(reduction='mean')[source]#
Negative log-likelihood for class likelihood mixtures.
Computes the mixture likelihood
\[p(x_i) = \sum_c \hat{p}_c \cdot p(x_i \mid c)\]and then applies the negative log-likelihood reduction. This is the standard loss used by the Expectation–Maximisation Quantifier (EMQ).
- Parameters:
- reduction{‘mean’, ‘sum’}, default=’mean’
How to reduce the per-sample log-likelihood values.
- Attributes:
- reductionstr
The configured reduction mode.
Examples
>>> from mlquantify.losses import get_loss >>> import numpy as np >>> loss = get_loss("mixture_nll") >>> prev = np.array([0.4, 0.6]) >>> lkl = np.array([[0.3, 0.7], [0.6, 0.4]]) >>> loss(prev, lkl) 0.5...
- __call__(prevalences, class_likelihoods)[source]#
Compute mixture negative log-likelihood.
- Parameters:
- prevalencesarray-like of shape (n_classes,)
Estimated class prevalence vector.
- class_likelihoodsarray-like of shape (n_classes, n_samples) or (n_samples, n_classes)
Per-class likelihood for each test instance. The axis whose length matches
n_classesis contracted withprevalences.
- Returns:
- lossfloat
Reduced mixture negative log-likelihood.
Examples
>>> from mlquantify.losses import get_loss >>> import numpy as np >>> loss = get_loss("ml") >>> prev = np.array([0.5, 0.5]) >>> lkl = np.array([[0.2, 0.8], [0.7, 0.3]]) >>> round(loss(prev, lkl), 4) 0.6931