Skip to content

Guías

Reglas de comparación

Comparar un candidato con una línea base muestra el flujo de trabajo. Esta página es la referencia de las reglas con las que se decide una comparación: qué tipos existen, qué pregunta cada uno, en qué se mide un margen y qué modifica el intervalo a partir del cual se leen.

Tres tipos

Una regla de comparación indica un kind y una métrica. Nunca admite min ni max: una diferencia no se infiere a partir de un umbral.

TipoPreguntaAdmite
superiority¿Es el candidato mejor que la línea base?ningún margen
non_inferiority¿Es el candidato no peor que la línea base en más que el margen?margin y, opcionalmente, direction
equivalence¿Está el candidato dentro del margen de la línea base, en ambas direcciones?margin

Un margen se expresa en las unidades propias de la métrica. Para una tasa, 0.05 son cinco puntos porcentuales; para un cuantil de latencia, 5 son cinco milisegundos.

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: 5

Las reglas de comparación viven en su propio archivo, que se pasa con --policy, porque release.yaml decide sobre una sola ejecución, y una regla de umbral y una regla de comparación leen evidencia distinta.

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml

Las mismas reglas frente a dos candidatos

Doscientas preguntas etiquetadas. La línea base etiqueta mal veinte de ellas. Cada candidato siguiente se ejecutó sobre la misma suite y se comparó con esa línea base usando el archivo anterior.

Un candidato que se comporta exactamente como la línea 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)

Un candidato que corrige esas veinte:

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)

Lea los dos gates juntos. Ambos bloquean, por razones opuestas. El primer candidato queda establecido como equivalente y no queda establecido como mejor; el segundo queda establecido como mejor y, por tanto, no queda establecido como equivalente. Una política que mantiene los tres tipos para una misma métrica plantea dos preguntas incompatibles, y una de ellas siempre quedará sin respuesta. Elija la regla que exprese la afirmación que usted hace.

Dirección

non_inferiority usa por defecto direction: min: más alto es mejor, y la regla exige que el candidato no caiga más del margen por debajo de la línea base. direction: max es para métricas en las que más bajo es mejor, como la latencia, los tokens o el coste. La regla se lee entonces como un tope a un aumento, que es como la imprime la terminal: maximum increase 5 ms.

superiority y equivalence no admiten dirección. La equivalencia ya acota ambos lados, y la superioridad pregunta si la diferencia está por encima de cero en el sentido propio de la métrica.

Qué modifica el intervalo

Una comparación es emparejada: el resultado de cada caso en el candidato se contrasta con su propio resultado en la línea base. Dos factores ensanchan el intervalo resultante, y ninguno de ellos es el cambio que usted hizo.

Casos faltantes en cualquiera de los lados

Un caso que dio error en cualquiera de las dos ejecuciones falta en el par, y se acota en lugar de descartarse: el intervalo admite que cada caso faltante haya ido en cualquier sentido. Una suite más pequeña, con un criterio llamado ok: las mismas cuatro discrepancias sobre treinta y cuatro casos emparejados, primero sin casos faltantes y luego con otros cuatro que dieron error en ambas ejecuciones:

ok: +11.8 points [-7.2, +34.3] · 34 paired · 0 missing · 0 excluded
ok: +11.8 points [-24.8, +44.7] · 34 paired · 4 missing · 0 excluded

La estimación es la misma, porque se calcula a partir de los casos observados en ambos lados. El intervalo no, porque cuatro casos que nadie vio podrían haber movido cada uno la diferencia en un caso completo. Corrija los errores antes de añadir casos: más casos con la misma tasa de error no cierran la brecha.

Una diferencia de ranking emparejada, como el ROC-AUC entre dos versiones de un modelo, no puede acotar las filas faltantes de esta manera: compara las filas que ambos lados puntuaron. Una regla sobre ella indica missingness_unbounded hasta que declara max_missing_fraction, la proporción de filas faltantes que acepta como faltantes al azar.

El método

El intervalo por defecto para una diferencia de tasas es un intervalo de media acotada sobre las diferencias por caso. Una política puede indicar en su lugar el método exacto condicional:

version: 1
difference_method: conditional_exact_paired_difference@1
rules:
  - {id: not-worse, metric: exact_label, kind: non_inferiority, margin: 0.05}

El candidato anterior, que es diez puntos mejor, da [+4.6, +17.9] con el método por defecto y esto con el método exacto:

exact_label: +10.0 points [+3.5, +15.8] · 200 paired · 0 missing · 0 excluded

Ninguno es uniformemente más estrecho, por eso el método se elige en la política, antes de leer ninguna evidencia, y nunca lo elige el motor a partir de los datos. Se aplica solo a diferencias de tasas.

Cuando una regla no puede decidir

Una regla de comparación en INSUFFICIENT_EVIDENCE puede llevar debajo una línea que indica qué la decidiría. La comparación de treinta y cuatro casos sin nada faltante:

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)

Esa estimación supone que la diferencia y la proporción de casos discordantes se mantienen a medida que llegan más casos. oloproof plan COMPARISON_ID imprime la misma línea con el tiempo que llevarían los casos adicionales.

Cuando faltan pares, no se ofrece ningún tamaño, porque los pares faltantes se acotan en su peor caso y más casos no los resolverían. La misma comparación con cuatro pares faltantes no imprime línea de recomendación, y el plan explica por qué:

oloproof plan COMPARISON_ID
Comparison 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 again

Y cuando la propia diferencia está en el lado equivocado del margen, más casos solo la confirmarían, así que la recomendación dice eso en su lugar:

  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 FAIL

Siguientes pasos

de un intervalo.

  • Casos agrupados trata las suites cuyos casos no son independientes, que una

comparación todavía no decide.

  • Segmentos trata las reglas limitadas a una parte de la suite.