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