-
Notifications
You must be signed in to change notification settings - Fork 0
Metrics logloss score
Development build. This page describes
main, not a released package. The latest published Lodestar.Metrics is 0.3.0 — read its documentation.
The binary cross-entropy — sklearn.metrics.log_loss.
public static double Score(ReadOnlySpan<int> yTrue, ReadOnlySpan<double> yProba, int posLabel = 1, bool normalize = true, ReadOnlySpan<double> sampleWeight = default)Parameters — yTrue is the true labels, one per sample. yProba is the probability of
posLabel for each sample, in [0, 1]. posLabel is the label that probability is about, 1 by
default. normalize divides by the total weight; pass false for the sum, which is
normalize=False. sampleWeight is one weight per sample, or empty — the default.
Returns — double, 0 or above and unbounded. A perfect prediction scores
2.2204460492503136e-16 rather than 0, because the clip applies at the top end too.
Exceptions — ArgumentException when the lengths disagree, the input is empty, or a probability
falls outside [0, 1]. The message is the reference's — "y_prob contains values greater than 1: 1.5"
above, and "y_prob contains values lower than 0: -0.1" below.
BrierScore.Score words that second one as less than, which is its own
reference's wording rather than an inconsistency here.
Example — four samples, well calibrated.
using Lodestar.Metrics;
int[] truth = [0, 1, 1, 0];
double[] confidence = [0.1, 0.9, 0.8, 0.3];
double loss = LogLoss.Score(truth, confidence); // => 0.1976…One confident mistake is what the metric is built to punish:
using Lodestar.Metrics;
int[] truth = [1, 0];
double[] certainAndWrong = [0.0, 0.5];
double punished = LogLoss.Score(truth, certainAndWrong); // => 18.3684…Remarks — posLabel is a widening. log_loss has no such parameter: a one-dimensional
probability column always describes the greater of the two labels present, and passing labels in
the other order does not change that — measured, it warns and returns the same number. Scoring about
the other class is the same call on the complement, which is what this parameter reaches, and the
frozen corpus pins that equivalence.
The clip is machine epsilon; the type page has what that decides.
Applies to — net10.0, netstandard2.0.
See also — LogLoss.MultiClass,
BrierScore.Score, RocAuc.Score, the
Python equivalence table.
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels