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)
- Pick an evaluation set with trusted labels — human-verified occurrences, or a held-out labelled collection.
- Snapshot the baseline final predictions before any filter runs.
- Run each filter, and a few meaningful combinations, over the same set through the existing admin / Job path.
- 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.
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
Sketch of an approach (to discuss)
What we still need to verify
Notes
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.