Guias
Regras de comparação
Comparando um candidato com uma linha de base mostra o fluxo de trabalho. Esta página é a referência das regras pelas quais uma comparação é decidida: quais tipos existem, o que cada um pergunta, em que unidade uma margem é medida e o que altera o intervalo a partir do qual elas são lidas.
Três tipos
Uma regra de comparação indica um kind e uma métrica. Ela nunca recebe min ou max: uma diferença não é inferida a partir de um limiar.
| Tipo | Pergunta | Recebe |
|---|---|---|
| superiority | O candidato é melhor que a linha de base? | nenhuma margem |
| non_inferiority | O candidato não é pior que a linha de base por mais que a margem? | margin e, opcionalmente, direction |
| equivalence | O candidato está dentro da margem em relação à linha de base, nas duas direções? | margin |
Uma margem é expressa nas unidades da própria métrica. Para uma taxa, 0.05 são cinco pontos percentuais; para um quantil de latência, 5 são cinco milissegundos.
version: 1
rules:
- id: not-worse
kind: non_inferiority
metric: exact_label
margin: 0.05
- id: same-quality
kind: equivalence
metric: exact_label
margin: 0.05
- id: better
kind: superiority
metric: exact_label
- id: not-slower
kind: non_inferiority
metric: latency_p50
direction: max
margin: 5As regras de comparação ficam em um arquivo próprio, passado com --policy, porque release.yaml decide uma única execução, e uma regra de limiar e uma regra de comparação leem evidências diferentes.
oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yamlAs mesmas regras contra dois candidatos
Duzentas perguntas rotuladas. A linha de base rotula errado vinte delas. Cada candidato abaixo foi executado sobre a mesma suíte e comparado com essa linha de base usando o arquivo acima.
Um candidato que se comporta exatamente como a linha de base:
Comparison sha256:7d2396c475b94028925930d4e52ae070d9a216a4558e22646169db492757c4de of run_01M3C44TVGT0X067W2H0BZ6GC9 against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +0.0 points [-2.7, +2.7] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.067 ms [-0.113, -0.001] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
not-worse exact_label non-inferiority, margin 5.0 points PASS lower_bound_above_margin
same-quality exact_label equivalence, margin ±5.0 points PASS interval_within_margins
better exact_label superiority INSUFFICIENT_EVIDENCE interval_overlaps_zero
not-slower latency_p50 maximum increase 5 ms PASS lower_bound_above_margin
Gate: BLOCK (exit 3)Um candidato que corrige os vinte:
Comparison sha256:1e36f48662cbbc0af20217a2c69248f90b473bbf0873dc6dd222ccb1895bb33a of run_01M3C44VQ0TFFNW4FRM5Z2D12R against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +10.0 points [+4.6, +17.9] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.038 ms [-0.089, +0.009] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
not-worse exact_label non-inferiority, margin 5.0 points PASS lower_bound_above_margin
same-quality exact_label equivalence, margin ±5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margins
better exact_label superiority PASS difference_above_zero
not-slower latency_p50 maximum increase 5 ms PASS lower_bound_above_margin
Gate: BLOCK (exit 3)Leia os dois gates juntos. Ambos bloqueiam, por razões opostas. O primeiro candidato é estabelecido como equivalente e não é estabelecido como melhor; o segundo é estabelecido como melhor e, portanto, não é estabelecido como equivalente. Uma política que mantém os três tipos para uma mesma métrica está fazendo duas perguntas incompatíveis, e uma delas sempre ficará sem resposta. Escolha a regra que expressa a afirmação que você está fazendo.
Direção
non_inferiority usa por padrão direction: min: maior é melhor, e a regra exige que o candidato não fique abaixo da linha de base por mais que a margem. direction: max é para métricas em que menor é melhor, como latência, tokens ou custo. A regra passa então a funcionar como um teto para um aumento, que é como o terminal a exibe: maximum increase 5 ms.
superiority e equivalence não recebem direção. A equivalência já limita os dois lados, e a superioridade pergunta se a diferença está acima de zero no sentido próprio da métrica.
O que altera o intervalo
Uma comparação é pareada: o resultado do candidato em cada caso é confrontado com o resultado da linha de base no mesmo caso. Duas coisas alargam o intervalo resultante, e nenhuma delas é a mudança que você fez.
Casos ausentes em qualquer um dos lados
Um caso que deu erro em qualquer uma das execuções fica ausente do par, e ele é limitado em vez de descartado: o intervalo admite que cada caso ausente possa ter ido para qualquer lado. Uma suíte menor, com um critério chamado ok: as mesmas quatro discordâncias em trinta e quatro casos pareados, primeiro sem casos ausentes e depois com mais quatro que deram erro nas duas execuções:
ok: +11.8 points [-7.2, +34.3] · 34 paired · 0 missing · 0 excludedok: +11.8 points [-24.8, +44.7] · 34 paired · 4 missing · 0 excludedA estimativa é a mesma, porque é calculada a partir dos casos observados nos dois lados. O intervalo não, porque quatro casos que ninguém viu poderiam, cada um, ter movido a diferença em um caso inteiro. Corrija os erros antes de adicionar casos: mais casos com a mesma taxa de erro não fecham a lacuna.
Uma diferença de ranking pareada, como o ROC-AUC entre duas versões de um modelo, não consegue limitar linhas ausentes dessa forma: ela compara as linhas que os dois lados pontuaram. Uma regra sobre ela resulta em missingness_unbounded até declarar max_missing_fraction, a fração de linhas ausentes que ela aceita como ausentes ao acaso.
O método
O intervalo padrão para uma diferença de taxas é um intervalo de média limitada sobre as diferenças por caso. Uma política pode indicar, em vez disso, o método exato condicional:
version: 1
difference_method: conditional_exact_paired_difference@1
rules:
- {id: not-worse, metric: exact_label, kind: non_inferiority, margin: 0.05}O candidato acima, dez pontos melhor, resulta em [+4.6, +17.9] pelo método padrão e nisto pelo método exato:
exact_label: +10.0 points [+3.5, +15.8] · 200 paired · 0 missing · 0 excludedNenhum dos dois é uniformemente mais estreito, e é por isso que o método é escolhido na política, antes de qualquer evidência ser lida, e nunca pelo engine a partir dos dados. Ele se aplica apenas a diferenças de taxas.
Quando uma regra não consegue decidir
Uma regra de comparação com INSUFFICIENT_EVIDENCE pode trazer uma linha abaixo dela dizendo o que a decidiria. A comparação de trinta e quatro casos sem nada ausente:
Decisions
not-worse ok non-inferiority, margin 5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margin
about 5 more paired cases would decide it, if the difference holds (39 in total at 12% discordance)
Gate: BLOCK (exit 3)Essa estimativa pressupõe que a diferença e a fração de casos em desacordo se mantenham à medida que mais casos chegam. oloproof plan COMPARISON_ID exibe a mesma linha com o tempo que os casos extras levariam.
Quando há pares ausentes, nenhum tamanho é oferecido, porque os pares ausentes são limitados no pior cenário e mais casos não os resolveriam. A mesma comparação com quatro pares ausentes não exibe nenhuma linha de recomendação, e o plano explica por quê:
oloproof plan COMPARISON_IDComparison sha256:22c1aa4fddc4e96ca77e0509ac9835c2a377ed237ca80556bbf1a54a172239bd: no sample size can be computed for a rule that did not decide.
not-worse: 4 missing pairs are bounded at their worst, and the advice does not size under missingness; resolve them and compare againE quando a própria diferença está do lado errado da margem, mais casos só a confirmariam, então a recomendação diz isso:
overall ok non-inferiority, margin 5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margin
no sample size would make this PASS: the difference itself (-5.0 points) is outside the margin, so more cases would move it toward FAILPróximos passos
- Comparando um candidato com uma linha de base trata do fluxo de trabalho e da primeira leitura
de um intervalo.
- Casos agrupados trata de suítes cujos casos não são independentes, o que uma
comparação ainda não decide.
- Segmentos trata de regras restritas a uma parte da suíte.