اذهب إلى المحتوى

السؤال

نشر (معدل)

تخيل أننا ندرب شبكة عصبية باستخدام بيانات، حيث يمثل كل سجل كيانًا أكبر (مثل عميل)، ويمثل كل سجل فرعي أجزاءً أصغر مرتبطة به (مثل معاملات العميل الفردية).

الآن، لدى بعض العملاء 3 معاملات، ولدى آخرين 10 معاملات أو أكثر. عند تقسيم البيانات إلى مجموعات تدريب واختبار، يمكننا:

التقسيم حسب السجلات الفرعية (المعاملات)، مما يعني أن معاملات العميل نفسه قد تظهر في كل من مجموعتي التدريب والاختبار.

التقسيم حسب السجلات (العملاء)، مما يعني أن جميع معاملات العميل تظهر معًا إما في التدريب أو الاختبار، ولكن ليس في كليهما.

مثال آخر: إذا كنا نتنبأ بشدة الزلازل ولدينا 1000 زلزال، ولكل زلزال 3 سجلات على الأقل (سجلها مراقبون مختلفون)، فهل يجب علينا تقسيم البيانات بناءً على 1000 زلزال بحيث يكون (800 * 3 على الأقل) منها تدريبًا و200 * 3  على الأقل) اختبارًا؟ في هذه الحالة، نعلم أن 80% من بيانات الزلازل الأرضية مخصصة للتدريب، ولكن هذا قد يجعل عدد السجلات المُدرَّبة أكثر أو أقل من 80% من إجمالي السجلات. أم يجب علينا التقسيم بناءً على إجمالي عدد السجلات؟

ما يقلقني هو تسرب البيانات:
إذا رأى النموذج بعض معاملات العميل/الزلزال أثناء التدريب، ثم تم اختباره على معاملات أخرى من نفس العميل/الزلزال، فإنه يكون قد "رأى" بالفعل جزءًا من بيانات الاختبار بشكل غير مباشر - حتى لو اختلفت المعاملات المحددة. أم ان عملية التدريب مختلفة عن ذلك؟

إذن، السؤال هو:

عند تدريب نموذج على بيانات هرمية (سجلات تحتوي على سجلات فرعية)، هل يجب إجراء تقسيم التدريب/الاختبار على مستوى السجل أم على مستوى السجل الفرعي لتجنب تلوث البيانات أو تسربها؟

تم التعديل في بواسطة عبدالرحمن_

Recommended Posts

  • 0
نشر

في حالة البيانات الهرمية عندما تكون هناك سجلات رئيسية (مثل العملاء أو الزلازل) تحتوي على سجلات فرعية (مثل المعاملات أو الملاحظات) يجب دائمًا تقسيم البيانات على مستوى السجل الرئيسي وليس السجل الفرعي.

عندما تقوم بتقسيم البيانات على مستوى السجلات الفرعية، قد يرى النموذج أثناء التدريب جزءًا من بيانات العميل نفسه أو الزلزال نفسه، ثم يُختبر على بيانات أخرى . هذا يجعل النموذج "يعرف" مسبقًا خصائص هذا العميل أو الزلزال، فيُظهر أداءً مرتفعًا زائفًا في الاختبار.

مثال:
إذا كان لدينا عميل له 10 معاملات، ووضعت 7 منها في التدريب و3 في الاختبار، فالنموذج سيتعلم نمط هذا العميل من التدريب، وبالتالي سيتنبأ بنتائج الاختبار بسهولة غير حقيقية.
أما إذا وضعت كل معاملات العميل إما في التدريب أو في الاختبار فقط، فسيكون النموذج مضطرًا لتعميم معرفته على عملاء جدد لم يسبق له رؤيتهم.

لذا نحتاج إلى تقسيم على مستوى الكيان الرئيسي (مثل العميل أو الزلزال) لتجنب تسرب البيانات وضمان أن النموذج يتعلم التعميم الحقيقي، وليس الحفظ أو التكرار.

  • 0
نشر

 دائمًا يجب إجراء تقسيم التدريب والاختبار على مستوى السجل ككل بمعنى العميل، الزلزال، المريض، المنتج، وليس على مستوى السجل الفرعي.

فخلط وتقسيم جميع التسجيلات 1000 زلزال * 3 تسجيلات على الأقل = 3000+ تسجيل، سيؤدي إلى أن تسجيلات نفس الزلزال ستكون في التدريب والاختبار، وسيتعلم النموذج الخصائص الفريدة لزلزال معين، الأمر الذي يسمح له بالغش، وسيحقق أداء جيد بشكل مصطنع عند اختباره على تسجيل آخر لنفس الزلزال.

بينما الصحيح هو، لدينا قائمة بـ 1000 زلزال فريد، نقوم بتقسيمها إلى 800 زلزال للتدريب و 200 زلزال للاختبار، ثم نضع التسجيلات المرتبطة بـ 800 زلزال في مجموعة التدريب.

وجميع التسجيلات المرتبطة بـ 200 زلزال نضعها في مجموعة الاختبار.

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

  • 0
نشر
بتاريخ 39 دقائق مضت قال Mustafa Suleiman:

 دائمًا يجب إجراء تقسيم التدريب والاختبار على مستوى السجل ككل بمعنى العميل، الزلزال، المريض، المنتج، وليس على مستوى السجل الفرعي.

فخلط وتقسيم جميع التسجيلات 1000 زلزال * 3 تسجيلات على الأقل = 3000+ تسجيل، سيؤدي إلى أن تسجيلات نفس الزلزال ستكون في التدريب والاختبار، وسيتعلم النموذج الخصائص الفريدة لزلزال معين، الأمر الذي يسمح له بالغش، وسيحقق أداء جيد بشكل مصطنع عند اختباره على تسجيل آخر لنفس الزلزال.

بينما الصحيح هو، لدينا قائمة بـ 1000 زلزال فريد، نقوم بتقسيمها إلى 800 زلزال للتدريب و 200 زلزال للاختبار، ثم نضع التسجيلات المرتبطة بـ 800 زلزال في مجموعة التدريب.

وجميع التسجيلات المرتبطة بـ 200 زلزال نضعها في مجموعة الاختبار.

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

شكرًا.

بتاريخ 41 دقائق مضت قال Mustafa Suleiman:

 دائمًا يجب إجراء تقسيم التدريب والاختبار على مستوى السجل ككل بمعنى العميل، الزلزال، المريض، المنتج، وليس على مستوى السجل الفرعي.

فخلط وتقسيم جميع التسجيلات 1000 زلزال * 3 تسجيلات على الأقل = 3000+ تسجيل، سيؤدي إلى أن تسجيلات نفس الزلزال ستكون في التدريب والاختبار، وسيتعلم النموذج الخصائص الفريدة لزلزال معين، الأمر الذي يسمح له بالغش، وسيحقق أداء جيد بشكل مصطنع عند اختباره على تسجيل آخر لنفس الزلزال.

بينما الصحيح هو، لدينا قائمة بـ 1000 زلزال فريد، نقوم بتقسيمها إلى 800 زلزال للتدريب و 200 زلزال للاختبار، ثم نضع التسجيلات المرتبطة بـ 800 زلزال في مجموعة التدريب.

وجميع التسجيلات المرتبطة بـ 200 زلزال نضعها في مجموعة الاختبار.

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

شكرًا على الاجابة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...