Conformal 0.2.0 conformalquantilerule - CyrilB1531/lodestar GitHub Wiki

Lodestar.Conformal 0.2.0. This page is frozen at that release. Read the current documentation for what main says now. A link to a decision or a migration page follows main, and leaves the archive.

Home › Split conformal prediction

ConformalQuantileRule

Which order statistic SplitConformal.Quantile reads from the calibration scores.

public enum ConformalQuantileRule { Ceiling, MapieClassification }

Members — Ceiling reads the k-th smallest score, k = ceil((n + 1)(1 − alpha)), which is what MAPIE 1.5.0's SplitConformalRegressor reads, and the default. MapieClassification reads numpy.quantile(scores, (n + 1)(1 − alpha)/n, method="higher"), which is what MAPIE's SplitConformalClassifier reads before predict_set.

Example — nineteen scores at 10 % miscoverage, where the two rules part by one rank.

using Lodestar.Conformal;

double[] scores = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];

double ceiling = SplitConformal.Quantile(scores, 0.1);                                           // => 18
double mapie = SplitConformal.Quantile(scores, 0.1, ConformalQuantileRule.MapieClassification);   // => 19

Remarks — the two rules agree on most (n, alpha) pairs and part by one rank on the rest, so a prediction set can include or exclude a class differently. Take MapieClassification when the sets must match MAPIE's; Ceiling is kept as the default so an existing call keeps its answer. Decision 0005 has the measurement and why the default did not move.

Ceiling is the zero value, so a default(ConformalQuantileRule) reads the default rule. A value outside the two, a cast from an int most likely, is refused with ArgumentOutOfRangeException.

Applies to — net10.0, netstandard2.0.

See also — SplitConformal.Quantile, SplitConformal.PredictionSet, the Python equivalence table.