Metrics tweediedeviance score - CyrilB1531/lodestar GitHub Wiki

Development build. This page describes main, not a released package. The latest published Lodestar.Metrics is 0.3.0 โ€” read its documentation.

Home โ€บ Metrics โ€บ Regression metrics

TweedieDeviance.Score

The mean Tweedie deviance at one power โ€” sklearn.metrics.mean_tweedie_deviance.

public static double Score(ReadOnlySpan<double> yTrue, ReadOnlySpan<double> yPred, double power = 0, ReadOnlySpan<double> sampleWeight = default)

Parameters โ€” yTrue and yPred are the true and predicted values, of the same length. power selects the distribution whose deviance is taken: 0 the normal, 1 the Poisson, 2 the gamma, 3 the inverse gaussian, and anything at most 0 or at least 1 in between. sampleWeight is one weight per sample, or empty โ€” the default โ€” to weight every sample by 1.

Returns โ€” double, 0 for a perfect prediction and larger the worse it is. Unbounded above, and not comparable across powers: the same pair scores 0.4375 at power 0, 0.1967โ€ฆ at 1 and 0.0982โ€ฆ at 2.

Exceptions โ€” ArgumentOutOfRangeException when power lies in the open interval (0, 1), which names no distribution. ArgumentException when the lengths disagree, the input is empty or holds a non-finite value, or an operand falls outside the regime's domain โ€” the table on the type page has all four regimes, and the message is scikit-learn's own sentence, naming the power.

Example โ€” the same four samples read as three different distributions.

using Lodestar.Metrics;

double[] truth = [1.0, 2.0, 3.0, 4.0];
double[] predicted = [1.5, 2.5, 2.0, 4.5];

double normal = TweedieDeviance.Score(truth, predicted);  // => 0.4375
using Lodestar.Metrics;

double[] truth = [1.0, 2.0, 3.0, 4.0];
double[] predicted = [1.5, 2.5, 2.0, 4.5];

double poisson = TweedieDeviance.Score(truth, predicted, power: 1.0);  // => 0.1967โ€ฆ

The number falls as the power rises here because a higher power expects the variance to grow with the mean, and these predictions miss most where the values are largest.

Remarks โ€” at power 0 this is MeanSquaredError.Score exactly, since that regime's deviance is the squared residual. At 1 and 2 it is PoissonDeviance.Score and GammaDeviance.Score, which the test suite asserts across the whole corpus rather than on one pair.

y ร— log(y / ลท) is taken as 0 when y is 0, which is its limit and what numpy's xlogy gives โ€” that is what makes a zero truth legal in the [1, 2) regimes at all.

Applies to โ€” net10.0, netstandard2.0.

See also โ€” D2Tweedie.Score, PoissonDeviance.Score, GammaDeviance.Score, the Python equivalence table.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ