Skip to content

الأدلة الإرشادية

قواعد المقارنة

تعرض صفحة مقارنة المرشَّح بخط الأساس سير العمل. أما هذه الصفحة فهي المرجع للقواعد التي تُحسم بها المقارنة: ما الأنواع الموجودة، وما الذي يسأله كل نوع، وبأي وحدة يُقاس الهامش، وما الذي يحرّك الفترة التي تُقرأ منها هذه القواعد.

ثلاثة أنواع

تسمّي قاعدة المقارنة kind ومقياسًا. ولا تأخذ أبدًا min ولا max: فالفرق لا يُستنتج من عتبة.

النوعيسأليأخذ
superiorityهل المرشَّح أفضل من خط الأساس؟لا هامش
non_inferiorityهل المرشَّح ليس أسوأ من خط الأساس بأكثر من الهامش؟margin، واختياريًا direction
equivalenceهل المرشَّح ضمن الهامش من خط الأساس، في الاتجاهين كليهما؟margin

يُعبَّر عن الهامش بوحدات المقياس نفسه. فبالنسبة إلى معدل، تعني 0.05 خمس نقاط مئوية؛ وبالنسبة إلى مئين زمن الاستجابة، تعني 5 خمس ميلي ثوانٍ.

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

توجد قواعد المقارنة في ملف خاص بها، يُمرَّر عبر --policy، لأن release.yaml يحسم تشغيلًا واحدًا، ولأن قاعدة العتبة وقاعدة المقارنة تقرآن أدلة مختلفة.

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml

القواعد نفسها في مواجهة مرشَّحين اثنين

مئتا سؤال موسوم. يخطئ خط الأساس في وسم عشرين منها. شُغِّل كل مرشَّح أدناه على مجموعة الاختبار نفسها وقورن بخط الأساس ذاك باستخدام الملف أعلاه.

مرشَّح يتصرف تمامًا كخط الأساس:

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)

مرشَّح يصلح الأخطاء العشرين:

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)

اقرأ البوابتين معًا. كلتاهما تحجب، لسببين متعاكسين. فالمرشَّح الأول ثبت تكافؤه ولم يثبت أنه أفضل؛ والثاني ثبت أنه أفضل، ولذلك لم يثبت تكافؤه. والسياسة التي تجمع الأنواع الثلاثة كلها لمقياس واحد تطرح سؤالين متعارضين، وسيبقى أحدهما دائمًا بلا جواب. اختر القاعدة التي تعبّر عن الادعاء الذي تقدّمه.

الاتجاه

القيمة الافتراضية لـ non_inferiority هي direction: min: الأعلى أفضل، وتطلب القاعدة ألا ينخفض المرشَّح عن خط الأساس بأكثر من الهامش. أما direction: max فهي للمقاييس التي يكون فيها الأدنى أفضل، مثل زمن الاستجابة أو الرموز المستهلكة أو التكلفة. وعندئذ تُقرأ القاعدة سقفًا على الزيادة، وهكذا تطبعها الطرفية: maximum increase 5 ms.

لا تأخذ superiority ولا equivalence اتجاهًا. فالتكافؤ يحدّ الجانبين كليهما أصلًا، والتفوق يسأل عمّا إذا كان الفرق أعلى من الصفر بالمعنى الخاص بالمقياس.

ما الذي يحرّك الفترة

المقارنة مقترنة: تُوضع نتيجة المرشَّح لكل حالة مقابل نتيجة خط الأساس للحالة نفسها. وهناك أمران يوسّعان الفترة الناتجة، وليس أيٌّ منهما التغيير الذي أجريته.

حالات مفقودة من أي من الجانبين

الحالة التي أخفقت بخطأ في أي من التشغيلين تكون مفقودة من الزوج، وتُحَدّ بدلًا من أن تُسقَط: إذ تسمح الفترة بأن تكون كل حالة مفقودة قد مالت إلى أي من الاتجاهين. مجموعة اختبار أصغر، بمعيار يُسمّى ok: الخلافات الأربعة نفسها على أربع وثلاثين حالة مقترنة، أولًا من دون حالات مفقودة، ثم مع أربع حالات أخرى أخفقت بخطأ في التشغيلين كليهما:

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

التقدير هو نفسه، لأنه يُحسب من الحالات المرصودة على الجانبين. أما الفترة فليست كذلك، لأن أربع حالات لم يرها أحد كان يمكن لكل منها أن يحرّك الفرق بحالة كاملة. أصلح الأخطاء قبل أن تضيف حالات: فالمزيد من الحالات بمعدل الأخطاء نفسه لا يسدّ الفجوة.

أما الفرق الزوجي في الترتيب، مثل ROC-AUC بين نسختين من نموذج، فلا يمكنه أن يحدّ الصفوف المفقودة بهذه الطريقة: إذ يقارن الصفوف التي سجّل لها الجانبان كلاهما درجات. والقاعدة على فرق كهذا تُقرأ missingness_unbounded إلى أن تصرّح بـ max_missing_fraction، وهي حصة الصفوف المفقودة التي تقبلها على أنها مفقودة عشوائيًا.

الطريقة

الفترة الافتراضية لفرق المعدلات هي فترة متوسط محدود على الفروق لكل حالة. ويجوز للسياسة أن تسمّي بدلًا منها الطريقة الدقيقة الشرطية:

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

المرشَّح أعلاه الأفضل بعشر نقاط يُقرأ [+4.6, +17.9] في الطريقة الافتراضية، وهذا في الطريقة الدقيقة:

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

لا تكون أي منهما أضيق في كل الأحوال، ولهذا تُختار الطريقة في السياسة، قبل قراءة أي دليل، ولا يختارها المحرك أبدًا من البيانات. وهي تنطبق على فروق المعدلات فقط.

حين لا تستطيع القاعدة الحسم

قد تحمل قاعدة المقارنة ذات الحالة INSUFFICIENT_EVIDENCE سطرًا تحتها يذكر ما الذي سيحسمها. المقارنة ذات الأربع والثلاثين حالة من دون أي مفقود:

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)

يفترض هذا التقدير أن الفرق وحصة الحالات المختلف عليها سيبقيان كما هما مع وصول المزيد من الحالات. ويطبع oloproof plan COMPARISON_ID السطر نفسه مع الوقت الذي ستستغرقه الحالات الإضافية.

حين تكون هناك أزواج مفقودة، لا يُعرض أي حجم، لأن الأزواج المفقودة تُحَدّ عند أسوأ قيمها، والمزيد من الحالات لن يحسمها. والمقارنة نفسها مع أربعة أزواج مفقودة لا تطبع سطر نصيحة، وتوضح الخطة السبب:

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

وحين يقع الفرق نفسه على الجانب الخطأ من الهامش، فإن المزيد من الحالات لن يفعل سوى تأكيده، ولذلك تقول النصيحة ذلك بدلًا من الحجم:

  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

إلى أين بعد ذلك

للفترة.

وهي ما لا تحسمه المقارنة بعد.

  • تغطي صفحة الشرائح القواعد المقصورة على جزء واحد من مجموعة الاختبار.