Skip to content

가이드

군집 케이스

대부분의 구간 계산은 모든 케이스가 서로 독립이라고 가정합니다. 한 대화의 세 턴은 그렇지 않습니다. 대화가 잘못되면 세 턴 모두 잘못되는 경향이 있습니다. 이들을 독립으로 취급하는 스위트는 근거가 뒷받침하는 것보다 좁은 구간을 보고하며, 게이트가 그 구간으로 통과할 수 있습니다.

군집 선언하기

케이스는 group_id로 자신의 군집을 지정하며, 이는 행의 최상위 수준에서 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"}}

어느 케이스든 하나라도 군집을 선언하면 스위트 전체가 군집 단위로 분석됩니다. 지표별로 되돌리는 스위치는 없습니다. 묶인 케이스를 독립으로 취급하는 것은 안전하지 않은 방향이므로 제공하지 않습니다.

무엇이 달라지는가

36개 대화에서 나온 같은 108개 턴이며, 대화 여섯 개 중 하나는 첫 턴부터 마지막 턴까지 알아볼 수 없게 뒤섞여 있습니다. group_id가 없으면 다음과 같습니다.

│ exact_label │ 83.3%    │ [74.9%, 89.9%] │ 90 / 108 observed · 0 missing · 0 excluded │

있으면 다음과 같습니다.

│ exact_label │ 83.3%    │ [65.2%, 94.6%] │ 90 / 108 observed · 0 missing · 0 excluded · 36 clusters · approximate │

추정치는 동일합니다. 구간은 약 두 배 넓은데, 스위트가 108개가 아니라 36개의 독립 관측을 담고 있기 때문입니다. 하한 0.70에 대해, 아래에서 설명하는 명시적 허용을 적용하면 첫 번째 실행은 통과하고 두 번째 실행은 통과하지 못합니다.

label-floor: PASS (lower_bound_meets_minimum)
label-floor: INSUFFICIENT_EVIDENCE (interval_overlaps_threshold)

이 데이터에는 두 번째 답이 올바른 답입니다.

명시적 허용

군집 구간은 스튜던트화 군집 부트스트랩입니다. 이는 근사적 방법이며, 규칙이 이를 근거로 결정하려면 먼저 정책이 근사적 방법을 허용한다고 밝혀야 합니다. 그렇지 않으면 같은 군집 실행은 다음과 같이 읽힙니다.

label-floor: MANUAL_REVIEW (approximate_method_not_permitted)

그리고 4로 종료합니다. 규칙이 결정하도록 하려면 release.yaml에 다음을 추가하십시오.

allow_approximate_methods: true

두 가지 설정이 더 있어, 이 방법에 무엇을 맡길지 제한합니다.

설정기본값하는 일
min_clusters20군집이 이보다 적으면 규칙은 insufficient_clusters와 함께 INSUFFICIENT_EVIDENCE로 읽힙니다. 10까지 낮출 수 있으며 그보다 낮출 수는 없습니다.
max_missing_fraction없음규칙에 설정합니다. 군집 구간은 독립 구간처럼 누락 케이스를 범위로 반영할 수 없으므로, 누락 케이스가 하나라도 있는 지표에 대한 군집 규칙은 규칙이 허용할 누락 비율을 밝히기 전까지 missingness_unbounded로 읽힙니다.

min_clusters: 5를 설정한 정책은 무엇이든 결정되기 전에 거부됩니다.

Configuration error: p5.yaml: min_clusters: Input should be greater than or equal to 10

같은 대화들에서 하나가 모든 턴에서 오류를 낸 경우입니다.

│ exact_label │ 82.9%    │ [64.3%, 94.5%] │ 87 / 105 observed · 3 missing · 0 excluded · 35 clusters · approximate │
label-floor: INSUFFICIENT_EVIDENCE (missingness_unbounded)

허용할 누락 비율을 밝힌 규칙입니다.

rules:
  - id: label-floor
    metric: exact_label
    min: 0.60
    max_missing_fraction: 0.15
label-floor: PASS (lower_bound_meets_minimum)

비율을 밝히는 것은 하나의 가정을 기록하는 것입니다. 누락된 케이스가 무작위로 누락되었다는 가정입니다. 결정은 그 가정만큼만 타당하며, 그래서 엔진은 여러분 대신 그 가정을 세우지 않습니다.

군집 스위트가 아직 할 수 없는 것

군집 구간이 있는 것은 통과/실패 비율뿐입니다. group_id를 선언한 스위트에서는 다음과 같습니다.

  • 평균, 분위수, 순위 지표에는 구간이 없으며, 이에 대한 규칙은 unsupported_dependence_structure와 함께 MANUAL_REVIEW로 읽힙니다.
  • replicates:가 1보다 크면 통과/실패 비율을 포함해 어떤 지표에도 구간이 없습니다. 두 의존 구조가 결합되는데 둘 다를 모델링하는 것이 없기 때문입니다.
  • 두 실행의 비교에는 어떤 지표에도 구간이 없습니다.

군집 스위트에서의 지연 시간 분위수입니다.

│ latency_p50 │ 1.365 ms │ no interval: unsupported_dependence_structure │ p50 of 108 observed · 0 missing · 0 excluded │

마지막 제약이 가장 중요합니다. 대화 스위트의 두 실행을 비교하며, 후보는 뒤섞인 대화를 모두 고칩니다.

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml
Comparison 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)

군집 스위트에 대한 대응 절차 중 검증 그리드를 통과한 것이 없으므로, 비교는 근사적으로 결정하는 대신 차이를 보고하고 사람에게 묻습니다. INSUFFICIENT_EVIDENCE가 아니라 MANUAL_REVIEW인 이유는, 같은 종류의 케이스를 더 모아도 이 문제가 해결되지 않기 때문입니다.

다음 단계