تقنية

خلط GroupKFold: هل يوازن عدد المجموعات أم عدد الصفوف؟

أربع مجموعات أحجامها ثمانية وواحد وواحد وواحد تعطي تسعة مقابل اثنين عند مساواة عدد المجموعات أو ثمانية مقابل ثلاثة عند مراعاة أحجام الصفوف
رسم أصلي لتوزيعين مؤلفين، لا نتيجة خلط أو مقارنة أداء.

خلط GroupKFold يغير قاعدة توزيع المجموعات، فلا نستنتج من عدد مجموعات متساو أن أحجام صفوف الطيات متساوية. عندما توجد مجموعة كبيرة وعدة مجموعات صغيرة، قد يصنع توازن المجموعات تفاوتا واضحا في عدد صفوف التحقق.

الخلاصة السريعة

بحسب الدليل والتنفيذ المحددين، يحاول shuffle=True مساواة عدد المجموعات المختلفة، بينما يراعي shuffle=False عدد الصفوف؛ ولا يضمن أي منهما توازنا تاما.

  • يفرق دليل scikit-learn بين موازنة عدد العينات عند shuffle=False وموازنة عدد المجموعات دون احتساب أحجامها عند shuffle=True. [1]
  • نؤلف 4 مجموعات بأحجام 8 و 1 و 1 و 1 ، مع طيتي تحقق. توزيع مجموعتين في كل طية يضع الكبيرة مع صغيرة، فيعطي 9 صفوف مقابل 2 مهما تبدلت أسماء الصغيرات.
  • توزيع الكبيرة وحدها مقابل الصغيرات الثلاث يعطي 8 صفوف مقابل 3 ، لكن عدد المجموعات 1 مقابل 3. إنه توزيع يراعي الصفوف، وليس نتيجة تشغيل ادعيناها.
  • المجموعة ذات 8 صفوف أكبر من نصف الإجمالي 11 ، فلا يمكن تساوي الجانبين مع بقائها كاملة. نراجع الأعداد والإعداد والفئات الفعلية، ولا نستنتج أن الخلط يحسن أداء النموذج.

أي وحدة يوازنها الإعداد؟

يشرح دليل scikit-learn أن GroupKFold مع shuffle=False يحاول موازنة العينات، بينما مع shuffle=True يحاول موازنة المجموعات المختلفة ولا يحتسب أحجامها. [1]

راجعنا هذا التفريق أيضا في مصدر الإصدار 1.9.1: فرع الخلط يقسم قائمة المجموعات بعد تبديلها، وفرع عدم الخلط يراجع عدد صفوف كل مجموعة. نحصر الشرح في السلوك الذي قرأناه؛ لا نفترضه لأي إصدار أو أداة تحمل اسما مشابها. [2]

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

ماذا يحدث لأربع مجموعات مختلفة الحجم؟

نؤلف مجموعة فيها 8 صفوف وثلاثا في كل منها صف واحد، فالإجمالي 11. في السطر الأول تحصل كل طية على مجموعتين؛ أي زوج يحتوي الكبيرة معه صغيرة، فيبلغ 9 ، ويبقى زوج صغيرتين حجمه 2.

هذا الفرق في أعداد الصفوف لا يعتمد اسم الصغيرة التي صاحبت الكبيرة. لم نختر بذرة أو نولد ترتيب خلط، ولا نتوقع قائمة معرفات يرجعها استدعاء فعلي. أثبتنا العدد من جميع احتمالات هذا القيد في المثال.

في السطر الثاني نضع المجموعة الكبيرة في طرف والثلاث الصغيرة في الآخر، فيصبح العدد 8 مقابل 3. الجدول يقارن قاعدتي توزيع في مثال مؤلف، لا زمن تشغيل أو تحسن مقياس.

توزيع مفترض لطيتينعدد مجموعات التحققعدد صفوف التحقق
الكبيرة مع صغيرة، والصغيرتان معا2 مقابل 29 مقابل 2
الكبيرة وحدها، والصغيرات الثلاث معا1 مقابل 38 مقابل 3

هل يمكن بلوغ توازن تام في هذا المثال؟

لا يمكن أن يقارب أي طرف يحتوي المجموعة الكبيرة عددا أقل من 8 مع بقائها كاملة. وبما أن الإجمالي 11 ، فإن الطرف الآخر لا يزيد على 3. لذلك لا يصنع التبديل العشوائي تقسيم 5 و 6 أو أحجاما متساوية من هذه المجموعات.

يحقق توزيع 8 مقابل 3 أصغر فرق ممكن في المثال بين جانبين غير فارغين كاملَي المجموعات؛ أما 9 مقابل 2 فيحفظ عدد مجموعتين لكل جانب. يلزم تحديد الوحدة المقصودة عند وصف «التوازن».

ولا نسوي ذلك بتوازن الفئات. لم نعط الصفوف وسوما في المثال؛ قد توجد قيود أخرى على التوزيع. صحة عدد المجموعات لا تجيب تلقائيا عن نسبة فئة أو تغطية فترة زمنية.

كيف نقرأ تقرير الطيات؟

نقترح عرض معرفات مجموعات كل طية وعددها وعدد صفوفها، مع قيمة shuffle وبقية إعداد التقسيم. ثم نضيف الفئات أو الفترات التي يحتاجها سؤال التقييم، بدل الاكتفاء بعبارة «طيات متوازنة».

إذا اختلفت الأحجام، نراجع سببها وما الذي حاول الإجراء موازنته، ونحدد هل القيد مقبول للمهمة. لا نجعل تفتيت المجموعة إصلاحا تلقائيا إذا كان سؤال التعميم يتطلب بقاءها كاملة.

لم نجر تحققًا متقاطعا أو نقارن نماذج. يظهر الحساب فرق وحدة العد وحد التوازن الممكن، بينما يحتاج اختيار التصميم النهائي تبريرا مرتبطا بالبيانات والسؤال.

المصادر ومتابعة القراءة

  1. scikit-learn: Cross-validation: evaluating estimator performance (يفتح في نافذة جديدة)scikit-learn.org
  2. scikit-learn 1.9.1: GroupKFold implementation (يفتح في نافذة جديدة)raw.githubusercontent.com

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.