تقنية

مجموعات متداخلة في التقسيم: لماذا يجمعنا سجل وسيط في طرف واحد؟

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

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

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

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

  • تتيح SciPy تحليل المكونات المتصلة، ومع directed=False تعامل الروابط بوصفها غير موجهة وتعيد تسميات المكونات عند طلبها. [1]
  • نؤلف أ من الأسرة 1 والمؤسسة 1 ، وب من الأسرة 1 والمؤسسة 2 ، وج من الأسرة 2 والمؤسسة 2. الرابط أ–ب أسرة، وب–ج مؤسسة، رغم غياب رابط مباشر أ–ج.
  • إذا وضعنا أ في التدريب وج في الاختبار وأسندنا ب إلى أحدهما، قطعنا رابطا في الحالتين. حفظ الرابطين مع إسناد الثلاثة يفرض أن تبقى أ وب وج في الجانب نفسه.
  • المكون هنا وحدة فصل وفق سياسة معلنة، وليس هوية شخص واحد. نثبت العلاقات والسياسة ونراجع حجم المكونات؛ الرسم لا يضمن وجود تقسيم مناسب أو جودة التقييم.

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

تحلل connected_components في SciPy المكونات المتصلة؛ وعند اختيار directed=False تعمل على رسم غير موجه ويمكن أن تعيد تسمية مكون كل عقدة. [1]

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

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

كيف يشترك سجل وسيط في علاقتين؟

تشترك أ وب في الأسرة 1 ، فتوجد بينهما رابطة الأسرة. وتشترك ب وج في المؤسسة 2 ، فتوجد رابطة المؤسسة. أ وج لا تشتركان مباشرة في الأسرة أو المؤسسة وفق الجدول.

نرسم الروابط غير موجهة لأن شرطنا «يبقيهما معا» لا يعتمد اتجاه الانتقال. يوجد مسار من أ إلى ج عبر ب، فتدخل الثلاثة في مكون واحد لهذا الرسم، رغم أن كل زوج لا يحمل العلاقة المباشرة نفسها.

هذه بيانات علاقات مؤلفة، وليست نتيجة تجميع على أشخاص حقيقيين. لم نستدع SciPy أو نستنتج علاقات خفية؛ نعرف الرابطين لأن الجدول والسياسة صرحا بهما.

السجل المؤلفمعرف الأسرةمعرف المؤسسة
أ11
ب12
ج22

لماذا لا يحل إسناد الوسيط مشكلة الفصل؟

نريد أ في التدريب وج في الاختبار، ونشترط إسناد ب إلى أحد هذين الجانبين أيضا. إذا وضعنا ب في التدريب، صار ب وج في جانبين مختلفين رغم اشتراك المؤسسة 2. وإذا وضعناه في الاختبار، فصلناه عن أ رغم اشتراك الأسرة 1.

الحالتان تستنفدان خيارات ب المعلنة. إذن لا يمكن تحقيق هذا الفصل مع حفظ الرابطين وإسناد السجلات الثلاثة جميعها. وضع الثلاثة في جانب واحد يحقق شرط عدم قطع الروابط، لكنه لا يمنحنا جانبين غير فارغين من هذه السجلات وحدها.

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

ما الذي نراجع قبل استعمال المكونات؟

نقترح حفظ أنواع العلاقات ومصادرها والسياسة التي جعلت كل علاقة قيدا، ثم معرف المكون الذي صار وحدة الإسناد. المكون قد يضم عدة أسر ومؤسسات؛ لا نسميه أسرة واحدة أو شخصا واحدا لأن أفراده بقوا معا.

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

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

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

  1. SciPy: connected_components (يفتح في نافذة جديدة)docs.scipy.org

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