خطوات الاستخدام
الخطوة 1: إدخال عدد عينات الأقلية (minorityClass). هذا هو عدد العينات الأصلية في الفئة الأقلية قبل تطبيق SMOTE. على سبيل المثال، إذا كان لديك 100 عينة من الفئة الأقلية، أدخل 100. تؤثر هذه القيمة بشكل مباشر على عدد العينات الاصطناعية المطلوبة.
الخطوة 2: إدخال عدد عينات الأغلبية (majorityClass). هذا هو عدد العينات الأصلية في الفئة الأغلبية. على سبيل المثال، إذا كان لديك 1000 عينة من الفئة الأغلبية، أدخل 1000. تستخدم هذه القيمة لتحديد الحجم المستهدف للفئة الأقلية بعد SMOTE.
الخطوة 3: إدخال النسبة المستهدفة (targetRatio). هذه هي النسبة المطلوبة بين الفئة الأقلية والفئة الأغلبية بعد تطبيق SMOTE. على سبيل المثال، إذا كنت تريد توازناً كاملاً (1:1) أدخل 1.0. إذا كنت تريد أن تكون الفئة الأقلية نصف حجم الأغلبية، أدخل 0.5. النسبة عادة ما تكون بين 0 و 1 أو أكثر من 1 إذا كنت ترغب في جعل الأقلية أكبر.
الخطوة 4: حساب عدد العينات الاصطناعية المطلوبة. تستخدم الحاسبة الصيغة: synthetic_samples = (majorityClass * targetRatio) - minorityClass. إذا كانت النتيجة موجبة، فهذا هو عدد العينات الاصطناعية التي يجب إنشاؤها بواسطة SMOTE. إذا كانت النتيجة صفراً أو سالبة، فهذا يعني أن الفئة الأقلية بالفعل تفي بالهدف ولا حاجة إلى SMOTE.
الخطوة 5: تفسير النتيجة. تشير النتيجة إلى عدد العينات الاصطناعية الجديدة اللازمة لتحقيق النسبة المستهدفة. على سبيل المثال، إذا كانت minorityClass=100، majorityClass=1000، targetRatio=1.0، فإن synthetic_samples = (1000*1.0)-100 = 900. هذا يعني أنك بحاجة إلى إنشاء 900 عينة اصطناعية من فئة الأقلية باستخدام SMOTE لتحقيق توازن كامل. يمكن استخدام هذه القيمة لتكوين معلمة SMOTE في مكتبات مثل imbalanced-learn.
أمثلة محلولة
تطبيقات عملية على نسبة الإفراط في العينات (SMOTE) بخطوات الحل كاملة.
الحل
لحساب عدد العينات الاصطناعية المطلوبة، نستخدم الصيغة: synthetic_samples = (majorityClass * targetRatio) - minorityClass. في هذا المثال، minorityClass = 200، majorityClass = 800، targetRatio = 1.0. إذن synthetic_samples = (800 * 1.0) - 200 = 800 - 200 = 600. هذا يعني أننا بحاجة إلى إنشاء 600 عينة اصطناعية من فئة الأقلية باستخدام SMOTE لتحقيق توازن كامل. بعد التوليد، سيكون لدينا 200 + 600 = 800 عينة من الفئة الأقلية و 800 من الفئة الأغلبية، أي توزيع متوازن تماماً. يتم توليد هذه العينات الاصطناعية عن طريق إقحام نقاط جديدة بين العينات الأصلية للأقلية وجيرانها في مساحة الميزات، مما يحسن أداء النماذج مثل الانحدار اللوجستي والغابات العشوائية.
الحل
في هذه الحالة، minorityClass = 500، majorityClass = 2000، targetRatio = 0.6. نستخدم الصيغة: synthetic_samples = (majorityClass * targetRatio) - minorityClass = (2000 * 0.6) - 500 = 1200 - 500 = 700. لذا نحتاج إلى إنشاء 700 عينة اصطناعية. بعد SMOTE، سيكون لدينا 500 + 700 = 1200 عينة من الفئة الأقلية، و 2000 عينة من الفئة الأغلبية، أي نسبة 0.6 كما هو مطلوب. هذا مفيد عندما لا ترغب في التوازن الكامل لأن ذلك قد يسبب overfitting أو يغير التوزيع الحقيقي للبيانات. يتم اختيار targetRatio بناءً على تحليل البيانات وأداء النموذج.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة نسبة الإفراط في العينات (SMOTE).
مثال 1: 200 مقابل 800 بنسبة 1.0 → 600 عينة اصطناعية
- حجم فئة الأقلية
- 200
- حجم فئة الأغلبية
- 800
- النسبة المستهدفة (أقلية ÷ أغلبية)
- 1
مثال 2: 500/2000 بنسبة 0.6 → 700 عينة و37.5% من البيانات
- حجم فئة الأقلية
- 500
- حجم فئة الأغلبية
- 2,000
- النسبة المستهدفة (أقلية ÷ أغلبية)
- 0.6
مثال الخطوة 5: 100 من 1000 → 900 عينة لبلوغ التوازن
- حجم فئة الأقلية
- 100
- حجم فئة الأغلبية
- 1,000
- النسبة المستهدفة (أقلية ÷ أغلبية)
- 1
الأقلية تتجاوز الهدف: صفر عينات وعلامة no
- حجم فئة الأقلية
- 900
- حجم فئة الأغلبية
- 1,000
- النسبة المستهدفة (أقلية ÷ أغلبية)
- 0.8
نسبة 1.5 (الأقلية أكبر): 650 عينة → 60% من البيانات
- حجم فئة الأقلية
- 100
- حجم فئة الأغلبية
- 500
- النسبة المستهدفة (أقلية ÷ أغلبية)
- 1.5