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

السؤال

نشر

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

يعني لنفترض أن لدينا بيانات عملاء لكل عميل ID خاصة به ولدينا بيانات فرعية لكل عميل بناء على حساباته في مختلف البنوك فسنقسم البيانات الى تدريب واختبار وربما تصديق "validation" ايضا.

ولكن عند تقسيم البيانات باستخدام TrainTestSplit او GroupShuffleSplit سيتم تقسيم البيانات بشكل عشوائي. ولكن لنفترض أننا نمتلك 1000 عميل و فقط عدد قليل منهم يمتلك رصيد حساب عالٍ فمنحنى التوزيع ليس توزيعا طبيعيًا NOT Gaussian distribution. عند تقسيم البيانات بشكل عشوائي بناء على الID ربما تذهب بيانات اصحاب الارصدة المرتفعة الى احدى المجموعات بشكل مبالغ به. ومن المهم لنا ضمان أن تكون الشبكة العصبية قادرة على التنبؤ بجميع فئات الارصدة وخصوصا المرتفعة منها، فإذا ذهب معظمها الى التدريب ولم يبقَ الكثير للاختبار لن نكون على يقين من قدرة الشبكة على التنبؤ بالارصدة المرتفعة لقلّة عددها في بيانات الاختبار والعكس صحيح اذا كان معظمها في الاختبار فالشبكة لن تستطيع التعلم بشكل جيد لقّة الارصدة المرتفعة في بيانات التدريب؟

كيف يمكننا ضبط هذه العملية بما يضمن توازن هذه الفئة من البيانات في جميع مجموعات التدريب والاختبار والتصديق؟ او ربما تصنيف هذه الفئة بشكل يدوي وترك بقية العملاء للشبكة بشكل عشوائي؟ وهذا كله بضمان بقاء نسب التصنيف بين المجموعات الثلاثة ثابتا لنفترض 70% تدريب و 15% لكل من التصديق والاختبار مع بقاء التصنيف بناء على الID حتى لا واجه مشاكل تسرب البيانات.

Recommended Posts

  • 0
نشر

عليك بالتقسيم الطبقي المُجمع Stratified Group Splitting وأقصد Stratified Group K-Fold وليس Stratified Split، حيث ستصنف العملاء أنفسهم أي المجموعات إلى فئات بمعنى طبقات بناءًا على أعلى رصيد لديهم بواسطة df.groupby

ثم تقسيم العملاء مع الحفاظ على نسبة الفئات في كل مجموعة، لو 3 فئات n_bins = 3 مثلاً التقسيم سيتم على أساس منخفض، متوسط، عالي، وستستخدم pd.qcut لتقسيم متساوٍا حسب الكمية.

ولتقسيم البيانات مرة واحدة مثلاً 70% تدريب، 15% تصديق، 15% اختبار، استخدم دالة train_test_split مرتين، وفي كل مرة، مرر فئات الرصيد التي أنشأتها إلى معامل stratify، للحفاظ على نسب الفئات.

بمعنى StratifiedGroupKFold، لتنفيذ Cross-Validation بعد التقسيم الأولي، أي على مجموعة التدريب نفسها، لاختيار أفضل إعدادات للنموذج.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...