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
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.4375using 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.