Handleidingen
Geclusterde cases
De meeste intervalberekeningen gaan ervan uit dat elke case onafhankelijk is van elke andere. Drie beurten van één gesprek zijn dat niet: wanneer het gesprek misgaat, gaan ze meestal alle drie mis. Een suite die ze als onafhankelijk behandelt, rapporteert een smaller interval dan het bewijs ondersteunt, en een gate kan daarop slagen.
Een cluster declareren
Een case noemt zijn cluster met group_id, op het hoogste niveau van de rij naast id:
{"id": "conv00_t0", "group_id": "conv00", "input": {"question": "Conversation 0 turn 0: refund please (garbled)"}, "expected": {"label": "refund"}}
{"id": "conv00_t1", "group_id": "conv00", "input": {"question": "Conversation 0 turn 1: where is my order (garbled)"}, "expected": {"label": "other"}}
{"id": "conv00_t2", "group_id": "conv00", "input": {"question": "Conversation 0 turn 2: refund please (garbled)"}, "expected": {"label": "refund"}}Zodra één case er een declareert, wordt de hele suite per cluster geanalyseerd. Er is geen schakelaar per metriek om terug te gaan: gegroepeerde cases als onafhankelijk behandelen is de onveilige richting, dus die wordt niet aangeboden.
Wat er verandert
Dezelfde 108 beurten uit 36 gesprekken, waarvan één gesprek op de zes verminkt is van de eerste tot de laatste beurt. Zonder group_id:
│ exact_label │ 83.3% │ [74.9%, 89.9%] │ 90 / 108 observed · 0 missing · 0 excluded │Met:
│ exact_label │ 83.3% │ [65.2%, 94.6%] │ 90 / 108 observed · 0 missing · 0 excluded · 36 clusters · approximate │De schatting is identiek. Het interval is ongeveer twee keer zo breed, omdat de suite 36 onafhankelijke observaties bevat in plaats van 108. Tegen een ondergrens van 0.70, met de hieronder beschreven opt-in, slaagt de eerste run en de tweede niet:
label-floor: PASS (lower_bound_meets_minimum)label-floor: INSUFFICIENT_EVIDENCE (interval_overlaps_threshold)Het tweede antwoord is het juiste voor deze data.
De opt-in
Het geclusterde interval is een gestudentiseerde clusterbootstrap. Het is een benaderende methode, en een policy moet zeggen dat ze die accepteert voordat een regel erop mag beslissen. Zonder dat leest dezelfde gegroepeerde run:
label-floor: MANUAL_REVIEW (approximate_method_not_permitted)en eindigt met 4. Om de regel te laten beslissen, voeg je dit toe aan release.yaml:
allow_approximate_methods: trueNog twee instellingen begrenzen waarmee de methode wordt vertrouwd.
| Instelling | Standaard | Wat die doet |
|---|---|---|
| min_clusters | 20 | Met minder clusters dan dit leest een regel INSUFFICIENT_EVIDENCE met insufficient_clusters. Het mag worden verlaagd tot 10 en niet verder. |
| max_missing_fraction | geen | Ingesteld op een regel. Een geclusterd interval kan ontbrekende cases niet begrenzen zoals een onafhankelijk interval dat doet, dus een geclusterde regel over een metriek met ook maar één ontbrekende case leest missingness_unbounded totdat de regel vermeldt hoeveel ontbreken ze accepteert. |
Een policy die min_clusters: 5 instelt, wordt geweigerd voordat er iets wordt beslist:
Configuration error: p5.yaml: min_clusters: Input should be greater than or equal to 10Dezelfde gesprekken, waarvan er één bij elke beurt een fout geeft:
│ exact_label │ 82.9% │ [64.3%, 94.5%] │ 87 / 105 observed · 3 missing · 0 excluded · 35 clusters · approximate │label-floor: INSUFFICIENT_EVIDENCE (missingness_unbounded)Een regel die vermeldt hoeveel ontbreken ze accepteert:
rules:
- id: label-floor
metric: exact_label
min: 0.60
max_missing_fraction: 0.15label-floor: PASS (lower_bound_meets_minimum)Een fractie vermelden legt een aanname vast: dat de ontbrekende cases willekeurig ontbreken. De beslissing is maar zo goed als die aanname, en daarom maakt de engine haar niet voor je.
Wat een geclusterde suite nog niet kan
Alleen slagingspercentages hebben een geclusterd interval. Op een suite die group_id declareert:
- heeft een gemiddelde, een kwantiel of een rangschikkingsmetriek geen interval, en een regel
daarop leest MANUAL_REVIEW met unsupported_dependence_structure;
- heeft met replicates: boven 1 geen enkele metriek een interval, slagingspercentages
inbegrepen, omdat de twee afhankelijkheidsstructuren samenkomen en niets beide modelleert;
- heeft een vergelijking van twee runs voor geen enkele metriek een interval.
Een latentiekwantiel op de gegroepeerde suite:
│ latency_p50 │ 1.365 ms │ no interval: unsupported_dependence_structure │ p50 of 108 observed · 0 missing · 0 excluded │De laatste beperking doet er het meest toe. Twee runs van de gesprekssuite vergelijken, waarbij de kandidaat elk verminkt gesprek herstelt:
oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yamlComparison sha256:ed7820e6471f70ce2b5e16ba618fdd48ea92a5ed39d23cce0b719ab31fcb16af of run_01M3C43MWTH8127R7S5M4N9DQ9 against run_01M3C43J2DVM93EWWWRBMRW22E · 108 paired cases
exact_label: +16.7 points · 108 paired · 0 missing · 0 excluded
no interval: unsupported_dependence_structure
Decisions
no-regression exact_label non-inferiority, margin 5.0 points MANUAL_REVIEW unsupported_dependence_structure
Gate: BLOCK (exit 4)Geen enkele gepaarde procedure voor geclusterde suites heeft haar validatieraster doorstaan, dus de vergelijking rapporteert het verschil en vraagt een persoon in plaats van bij benadering te beslissen. MANUAL_REVIEW in plaats van INSUFFICIENT_EVIDENCE, omdat meer cases van dezelfde soort het niet zouden oplossen.
Verder lezen
- Vergelijkingsregels behandelt de regels waarmee over een vergelijking
wordt beslist.
- Kernbegrippen behandelt de vier beslissingstoestanden.