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

عبدالرحمن_

الأعضاء
  • المساهمات

    3
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو عبدالرحمن_

  1. سألت سابقا عن كيفية تقسيم البيانات الهرمية، وخلصنا الى انه يجب تقسيمها بناء على السجلات الرئيسية. لكن ماذا سيحدث اذا اضطررت لتقسيمها بناء على عامل اخر في الوقت ذاته؟ يعني لنفترض أن لدينا بيانات عملاء لكل عميل ID خاصة به ولدينا بيانات فرعية لكل عميل بناء على حساباته في مختلف البنوك فسنقسم البيانات الى تدريب واختبار وربما تصديق "validation" ايضا. ولكن عند تقسيم البيانات باستخدام TrainTestSplit او GroupShuffleSplit سيتم تقسيم البيانات بشكل عشوائي. ولكن لنفترض أننا نمتلك 1000 عميل و فقط عدد قليل منهم يمتلك رصيد حساب عالٍ فمنحنى التوزيع ليس توزيعا طبيعيًا NOT Gaussian distribution. عند تقسيم البيانات بشكل عشوائي بناء على الID ربما تذهب بيانات اصحاب الارصدة المرتفعة الى احدى المجموعات بشكل مبالغ به. ومن المهم لنا ضمان أن تكون الشبكة العصبية قادرة على التنبؤ بجميع فئات الارصدة وخصوصا المرتفعة منها، فإذا ذهب معظمها الى التدريب ولم يبقَ الكثير للاختبار لن نكون على يقين من قدرة الشبكة على التنبؤ بالارصدة المرتفعة لقلّة عددها في بيانات الاختبار والعكس صحيح اذا كان معظمها في الاختبار فالشبكة لن تستطيع التعلم بشكل جيد لقّة الارصدة المرتفعة في بيانات التدريب؟ كيف يمكننا ضبط هذه العملية بما يضمن توازن هذه الفئة من البيانات في جميع مجموعات التدريب والاختبار والتصديق؟ او ربما تصنيف هذه الفئة بشكل يدوي وترك بقية العملاء للشبكة بشكل عشوائي؟ وهذا كله بضمان بقاء نسب التصنيف بين المجموعات الثلاثة ثابتا لنفترض 70% تدريب و 15% لكل من التصديق والاختبار مع بقاء التصنيف بناء على الID حتى لا واجه مشاكل تسرب البيانات.
  2. تخيل أننا ندرب شبكة عصبية باستخدام بيانات، حيث يمثل كل سجل كيانًا أكبر (مثل عميل)، ويمثل كل سجل فرعي أجزاءً أصغر مرتبطة به (مثل معاملات العميل الفردية). الآن، لدى بعض العملاء 3 معاملات، ولدى آخرين 10 معاملات أو أكثر. عند تقسيم البيانات إلى مجموعات تدريب واختبار، يمكننا: التقسيم حسب السجلات الفرعية (المعاملات)، مما يعني أن معاملات العميل نفسه قد تظهر في كل من مجموعتي التدريب والاختبار. التقسيم حسب السجلات (العملاء)، مما يعني أن جميع معاملات العميل تظهر معًا إما في التدريب أو الاختبار، ولكن ليس في كليهما. مثال آخر: إذا كنا نتنبأ بشدة الزلازل ولدينا 1000 زلزال، ولكل زلزال 3 سجلات على الأقل (سجلها مراقبون مختلفون)، فهل يجب علينا تقسيم البيانات بناءً على 1000 زلزال بحيث يكون (800 * 3 على الأقل) منها تدريبًا و200 * 3 على الأقل) اختبارًا؟ في هذه الحالة، نعلم أن 80% من بيانات الزلازل الأرضية مخصصة للتدريب، ولكن هذا قد يجعل عدد السجلات المُدرَّبة أكثر أو أقل من 80% من إجمالي السجلات. أم يجب علينا التقسيم بناءً على إجمالي عدد السجلات؟ ما يقلقني هو تسرب البيانات: إذا رأى النموذج بعض معاملات العميل/الزلزال أثناء التدريب، ثم تم اختباره على معاملات أخرى من نفس العميل/الزلزال، فإنه يكون قد "رأى" بالفعل جزءًا من بيانات الاختبار بشكل غير مباشر - حتى لو اختلفت المعاملات المحددة. أم ان عملية التدريب مختلفة عن ذلك؟ إذن، السؤال هو: عند تدريب نموذج على بيانات هرمية (سجلات تحتوي على سجلات فرعية)، هل يجب إجراء تقسيم التدريب/الاختبار على مستوى السجل أم على مستوى السجل الفرعي لتجنب تلوث البيانات أو تسربها؟
×
×
  • أضف...