الأدلة الإرشادية
الإنصاف عبر المجموعات
قد يتجاوز النموذج حد الدقة في كل مجموعة ومع ذلك يكون أقسى على إحداها: ضعف السلبيات الكاذبة، أو نصف الاختيارات. يقرأ oloproof fairness ملفًا من الحالات المحسومة ويسأل كم تبتعد المجموعات بعضها عن بعض. ويجيب بالحالات الأربع نفسها التي تجيب بها كل قاعدة أخرى. قُبلت طريقة التكافؤ في تدقيق مستقل في 3 نوفمبر 2026، بالشروط التي تذكرها هذه الصفحة: حالات مستقلة، ومجموعات معلنة أولًا، وكل قاعدة تخص الحالات التي سُجّلت فيها سماتها، والتكافؤ مقيس على وسومك.
الملف والإعلان
ملف CSV أو JSONL واحد بصف لكل حالة: معرّف، والتسمية (0 أو 1)، والتنبؤ (0 أو 1، فارغ حين لم يُعطِ النظام شيئًا)، واحتمال اختياريًا، وعمود لكل سمة محمية.
fairness:
name: loan-screen
cases: decided.csv
label: label
prediction: prediction
probability: score
attributes:
sex: [female, male]
age_band: [under_30, 30_to_60, over_60]
intersections:
- [sex, age_band]
min_cell: 30
rules:
- {id: fnr-by-sex, rate: false_negative, attribute: sex, max_group_gap: 0.05}
- {id: fnr-crossed, rate: false_negative, attribute: [sex, age_band], max_group_gap: 0.10}oloproof fairness fairness.yaml --policy release.yaml --jsonيفترض المجال أن كل حالة شخص مختلف. سمِّ العمود الذي يحدد الشخص بـ unit: person_id فيُرفض الملف الذي لشخص واحد فيه عدة حالات؛ ومن دونه تذكر الإجابة هذا الافتراض.
المعدل واحد من error، أو false_positive (على الحالات الموسومة 0)، أو false_negative (على الحالات الموسومة 1)، أو selection (التنبؤ 1، على كل الحالات). سمِّ المجموعات قبل قراءة الملف. لا تقرأ كل قاعدة إلا الحالات التي سُجّلت سماتها الخاصة بقيمة معلنة؛ الحالة التي تنقصها سمة تُستبعد من القواعد التي تستخدمها وتبقى في غيرها، وكل جواب يعدّ ما استبعده ولماذا. وحين تنقص سمة لدى بعض الناس أكثر من غيرهم، يكون الجواب عن الحالات التي سُجّلت فيها، وهي مجتمع مختلف: اقرأ العدد قبل الحكم. القاعدة التي تستبعد أكثر من max_left_out من الملف (10% افتراضيًا؛ اضبطه على القاعدة) تُقرأ INSUFFICIENT_EVIDENCE، لأن الحالات المسجّلة قد لا تمثّل البقية بعد ذلك. رمز الخروج هو رمز أسوأ قاعدة: 0 PASS، 1 FAIL، 3 INSUFFICIENT_EVIDENCE، 4 MANUAL_REVIEW.
كيف يحسم
يحصل معدل كل مجموعة على الفترة الدقيقة التي يستخدمها Oloproof لمعدل واحد، عند ميزانية الخطأ مقسومة على عدد المجموعات المعلنة. وتُحدّ كل فجوة بين مجموعتين من هذه الفترات دفعة واحدة، فلا يحتاج أي زوج إلى تصحيح خاص به. تنجح قاعدة max_group_gap حين يكون الطرف الأعلى لكل فجوة عند الحد أو دونه، وتفشل حين تكون فجوة ما فوق الحد بكامل فترتها. التنبؤ المفقود يبقى في مجموعته ويُعدّ بأسوأ قيمه.
المجموعات الصغيرة والمجموعات المتقاطعة
تقاطع سمتين يضاعف الخلايا، وسيكون بعضها صغيرًا. الخلية التي فيها حالات ذات تنبؤ أقل من min_cell (الحالات التي ينقصها التنبؤ لا تُحتسب فيه) تُبلَّغ INSUFFICIENT_EVIDENCE في سطرها الخاص، وتظل تُعدّ في التقسيم، وتمنع القاعدة من النجاح، لأن أكبر فجوة قد تكون هناك. اجمع حالات أكثر لتلك الخلية، أو أعلن تقاطعًا أخشن قبل التشغيل.
الحدود الدنيا والفجوات
استخدم worst_group لحد أدنى يجب أن تتجاوزه كل مجموعة ("كل منطقة تحل 80% على الأقل")، وmax_group_gap لسقف على المسافة بين المجموعات ("تختلف السلبيات الكاذبة بخمس نقاط على الأكثر"). متطلب الحوكمة لنتائج غير منحازة تشهد له الفجوة جزئيًا، للمعدل الذي اخترته؛ ومتطلب أن تُخدم كل مجموعة جيدًا يشهد له الحد الأدنى. ولا يُظهر أي منهما وحده أن النظام عادل. تحتاج معظم الأنظمة إلى الاثنين.
المعايرة حسب المجموعة
مع عمود احتمال، يُبلَّغ عن خطأ المعايرة المتوقع لكل مجموعة، لكل سمة ولكل تقاطع معلن، على calibration_bins فئات متساوية العرض من الاحتمال (10 افتراضيًا). لا يحكم أبدًا: لا طريقة مقبولة تحدّه، وهو في المجموعة الصغيرة كثير الضجيج.
ما لا يمكن لهذا أن يخبرك به
- أي معدل هو المنصف أن يُساوى: ذلك قرارك، ويستحق أن يُسجَّل مع السمات التي اخترتها.
- أي شيء عن مجموعات لم تعلنها، أو عن أشخاص عُدّوا مرتين (شخص واحد، حالات عدة).
- ما إذا كانت المعايرة تختلف بين المجموعات بأكثر من الصدفة.
- ما إذا كانت التسميات نفسها منحازة: التكافؤ يُقاس بالنسبة إلى التسميات التي تأتي بها.