Skip to content

Measure the effect of post-processing filters on final predictions (offline eval) #1360

Description

@mihow

Summary

The post-processing framework (#1289) and its first filters — small-size filter, class masking, and rank roll-up (#999) — are deployed admin-only. Each filter rewrites detections or classifications and therefore the occurrence-level predictions a project shows, but we do not yet have a quantitative measure of whether a given filter improves the final predictions or merely changes them. This issue proposes an offline evaluation that runs each filter over a set with trusted labels and reports how the final predictions move relative to ground truth, so operators can decide which filters to enable per project on evidence rather than intuition.

This is a follow-up to the initial admin-only deployment, not a blocker for it.

What we want to learn

  • For each filter, how the final predictions change against a verified / ground-truth set: accuracy and precision/recall by rank, the share of occurrences whose determination changed, and the direction of change (corrected vs regressed).
  • Whether the effect depends on input confidence — class masking and rank roll-up are both expected to behave differently on diffuse, low-confidence distributions than on confident ones.
  • Per-filter parameter sensitivity (size threshold; taxa list / region for class masking; rank thresholds for roll-up).

Sketch of an approach (to discuss)

  1. Pick an evaluation set with trusted labels — human-verified occurrences, or a held-out labelled collection.
  2. Snapshot the baseline final predictions before any filter runs.
  3. Run each filter, and a few meaningful combinations, over the same set through the existing admin / Job path.
  4. Compare the post-filter final predictions to the trusted labels and to the baseline, reporting the metrics above per filter and per parameter setting.

What we still need to verify

  • A suitable ground-truth set, and how to freeze a comparable baseline. The filters mutate classifications in place, so the harness needs either a non-destructive snapshot or a copy of the data to compare against.
  • Agreement on the metrics and on rank-aware scoring — a roll-up to a correct ancestor is partial credit, not a miss.
  • Whether the existing model-agreement / verification tooling can be reused for the scoring step.

Notes

  • Rank roll-up currently picks the global argmax per rank rather than restricting to the source taxon's ancestors, so on a diffuse distribution it can reparent a detection to a family outside its own lineage (documented TODO in ami/ml/post_processing/rank_rollup.py). The evaluation should treat that as one of the behaviours under measurement, and may inform the open lineage-constrained vs distribution-roll-up design choice.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmlrelated to machine learning models or pipeline servicespost-processingPost-processing task framework and tasks: size filter, class masking, rank rollup, tracking

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions