تُنشئ SMOTE أمثلة جديدة للفئة الأقل عبر الاستيفاء بين نقطة موجودة وأحد أقرب جيرانها من الفئة نفسها، فتضع نقطة صناعية في موضع ما على الخط الواصل بينهما. وهي بذلك تختلف عن الزيادة العشوائية لأنها لا تكرّر السجلات، فيرى النموذج تنوعًا بدل تكرار المثال نفسه. لكنها لا تعمل إلا حين يكون الاستيفاء ذا معنى: خصائص مستمرة، وفئة أقل تحوي نقاطًا كافية ليكون لها جيران حقيقيون، وخلوّ البيانات من حقول فئوية يجري حساب متوسطها فينتج قيم لا وجود لها.
SMOTE تدخّل يقع في مرحلة التدريب وله قاعدة موضع صارمة. فإذا وُضع في الموقع الخاطئ من المسار أنتج نتيجة تحقق ممتازة ونموذجًا يُخفق فور التشغيل.
ما المشكلة التي يعالجها هذا الحل؟
لدى فريق فحص بصري على خط تغليف 40,000 سجل لقطع سليمة مقابل 310 سجلات عيوب. رفعت أوزان الفئات الاستدعاء من الصفر، لكن النموذج ما زال يُغفل فئات عيوب كاملة، لأن 310 أمثلة موزّعة على ستة أنواع عيوب تترك بعض الأنواع بثلاثين سجلًا فقط.
الميل الغريزي هو تكرار سجلات العيوب حتى تتوازن الفئات. وهذا هو الزيادة العشوائية، وهو يعلّم النموذج حفظ تلك النقاط الـ310 بعينها بدل تعلّم شكل العيب. فيضيق حدّ الفصل حول عينات مفردة وينهار أمام أي اختلاف بسيط.
وSMOTE هي الاستجابة لهذا الإخفاق تحديدًا: توليد نقاط جديدة لكنها منطقية، تقع بين العيوب الحقيقية لا فوقها.
كيف يعمل الحل؟
لكل عينة من الفئة الأقل، تبحث SMOTE عن أقرب k جيران من الفئة نفسها (القيمة الافتراضية 5)، وتختار واحدًا منهم عشوائيًا، ثم تُنشئ نقطة جديدة في موضع عشوائي على الخط المستقيم الواصل بينهما، وتكرر ذلك حتى تبلغ نسبة الفئات الهدف المطلوب.
ولأن النقطة الصناعية تقع بين مثالين حقيقيين، فهي ترث طابعهما العام دون أن تطابق أيًا منهما. فتزداد كثافة منطقة الفئة الأقل ويستطيع المصنّف رسم حدّ حول منطقة بدل رسمه حول نقاط مفردة.
وتوجد صيغ بديلة للحالات التي تتعامل معها SMOTE الأساسية بشكل سيئ: SMOTENC للخصائص المختلطة الفئوية والمستمرة، وBorderlineSMOTE للتركيز على العينات القريبة من حدّ الفصل، وADASYN لترجيح التوليد نحو نقاط الفئة الأقل الأصعب تصنيفًا.
- 1اختيار عينة من الفئة الأقل خذ مثالًا حقيقيًا واحدًا من الفئة الممثَّلة تمثيلًا ناقصًا.
- 2إيجاد الجيران احسب أقرب k جيران من الفئة الأقل في فضاء الخصائص، باستخدام المسافة الإقليدية افتراضيًا.
- 3اختيار جار واحد اختر واحدًا من هؤلاء الجيران عشوائيًا.
- 4الاستيفاء ولّد نقطة جديدة عند x_new = x + rand(0,1) * (x_neighbour - x)، فتقع في موضع ما على القطعة الواصلة بين النقطتين.
- 5التكرار حتى الهدف استمر حتى تبلغ الفئة الأقل نسبة أخذ العينات المطلوبة، ثم درّب على مجموعة التدريب الموسّعة.
البنية المرجعية
تنتمي SMOTE إلى طبقة واحدة بالضبط. ومعظم التطبيقات الخاطئة تنشأ من وضعها في موضع آخر.
| Layer | What it contains |
|---|---|
| البيانات الخام | لا تُعاد معاينتها إطلاقًا. فالتوزيع الأصلي هو المرجع الحقيقي للتقييم والمراقبة. |
| حدّ التقسيم | تُنشأ هنا تقسيمات التدريب والاختبار وطيّات التحقق المتقاطع، قبل أن تمسّ إعادة أخذ العينات أي شيء. |
| طيّة التدريب وحدها | تُنفَّذ SMOTE داخل الطيّة فتنتج نقاطًا صناعية لا وجود لها إلا لغرض الملاءمة. |
| التقييم | تحتفظ مجموعتا التحقق والاختبار بعدم التوازن الأصلي حتى تعكس المقاييس واقع التشغيل. |
خيارات النشر: مولّد العينات أثر من آثار مرحلة التدريب ولا يصاحبه أي اعتماد وقت الاستدلال. والذي يجب تسليمه هو تعريف المسار نفسه، حتى تُعيد عملية إعادة تدريب بعد ستة أشهر إنتاج البناء ذاته.
القدرات الرئيسية
فرز أنواع الخصائص
حكم مسبق على صلاحية الاستيفاء للأعمدة المستخدمة، قبل اختيار أي مولّد عينات.
availableبناء مسار آمن من التسرّب
وضع إعادة أخذ العينات داخل طيّة التحقق حتى تصمد النتيجة المُبلَّغ عنها أمام التشغيل.
availableاختيار الصيغة المناسبة
اختيار SMOTE أو SMOTENC أو BorderlineSMOTE أو ADASYN وفق فضاء الخصائص الفعلي وسلوك حدّ الفصل.
custom developmentحوكمة البيانات الصناعية
التعامل مع سجلات الفئة الأقل المولّدة على أنها بيانات شخصية مشتقة متى كان المصدر شخصيًا.
custom developmentالتكاملات
SMOTE خطوة داخل مسار تدريب، لذا فإن سطح تكاملها هو تعريف المسار ومخزن الأدوات المنتَجة، لا واجهة برمجية وقت التشغيل.
| النظام | نقطة التكامل والبيانات المتبادلة | الاتجاه |
|---|---|---|
| مسار التدريب | يُدار مولّد العينات بالإصدارات مع النموذج حتى تعيد أي إعادة تدريب لاحقة البناء نفسه. ← Class Imbalance: When 95% Accuracy Means the Model Found Nothing | bi-directional |
| تتبّع التجارب | تُسجَّل نسبة أخذ العينات وقيمة k_neighbors والبذرة العشوائية كمعاملات، لأن النتائج تتغير بتغيّرها. | bi-directional |
| سجل حوكمة البيانات | ترث السجلات الصناعية المشتقة من بيانات شخصية تصنيف مصدرها. | bi-directional |
حالات الاستخدام والقطاعات
فحص الجودة في التصنيع
تتراكم فئات العيوب ببطء في خط عالي الجودة، والاستيفاء بين عيوب مقيسة يزيد كثافة منطقة متفرقة.
مخاطر المدفوعات
تستوفي الخصائص السلوكية المستمرة بشكل منطقي، لكن حقول التاجر الفئوية تتطلب SMOTENC.
الصيانة التنبؤية
خصائص الاهتزاز والحرارة مستمرة ومناسبة للاستيفاء بين حالات الإخفاق المسجّلة.
دعم القرار السريري
ممكن مع القياسات المستمرة، لكن يجب أولًا حسم مسألة حوكمة السجلات المولّدة المشتقة من بيانات المرضى.
اعتبارات الإمارات والخليج
مسألة إقامة البيانات الصناعية كثيرًا ما تكون غير محسومة في أطر الحوكمة بالإمارات والخليج. فالسجل المولّد بـ SMOTE ليس مجهول الهوية: هو استيفاء بين سجلين حقيقيين وقد يحمل بنية قابلة للتعريف، خصوصًا في الفئات الأقل الصغيرة حيث يكون الجيران قليلين. تعامل مع بيانات الفئة الأقل المولّدة على أنها بيانات شخصية مشتقة، وأبقِها داخل النطاق المعتمد نفسه لمصدرها، وأكّد الموقف مع مسؤول حماية البيانات لدى الجهة قبل أي تدريب عابر للحدود.
منهجية التنفيذ
- 1فحص أنواع الخصائص أي عمود فئوي أو ترتيبي أو مُرمَّز بترميز أحادي يُسقط صلاحية SMOTE الأساسية. استخدم SMOTENC أو رمّز عمدًا.
- 2عدّ الفئة الأقل يجب أن تكون k_neighbors أصغر من عدد الفئة الأقل في أصغر طيّة، وإلا فشلت الملاءمة تمامًا.
- 3بناء المسار استخدم Pipeline من imblearn حتى ينحصر المولّد في طيّة التدريب عند كل تقسيم.
- 4المقارنة بأمانة قِس الأداء مقابل أوزان الفئات وحدها. فكثيرًا ما لا تتفوق SMOTE عليها، وهذه نتيجة صحيحة.
- 5توثيق الموقف الحوكمي وثّق مصدر اشتقاق السجلات الصناعية والمواضع المسموح بتخزينها فيها.
الأمن وخيارات النشر
سجلات الفئة الأقل المولّدة من بيانات شخصية هي بيانات شخصية مشتقة. خزّنها داخل النطاق نفسه لمصدرها، واستبعدها من أي مجموعة بيانات تُشارَك لأغراض المقارنة المرجعية، واحذفها مع أدوات التدريب. وحين تكون الفئة الأقل صغيرة جدًا، قد يقترب الاستيفاء بين سجلين من شخص حقيقي بدرجة ذات أثر.
مثال عملي
سجلّا عيب يوصفان بخاصيتين مقيستين — انحراف السطح بالمليمتر ودرجة حرارة الدورة.
- النقطة أ. عيب حقيقي عند (0.40 مم، 62 درجة).
- النقطة ب. أقرب جار لها من الفئة الأقل، وهو عيب حقيقي عند (0.60 مم، 70 درجة).
- سحب lambda. لنفترض أن السحب العشوائي أعطى lambda = 0.25.
- استيفاء كل خاصية. السطح: 0.40 + 0.25 × (0.60 − 0.40) = 0.45 مم. الحرارة: 62 + 0.25 × (70 − 62) = 64 درجة.
- النتيجة. عيب صناعي عند (0.45 مم، 64 درجة) — قطعة منطقية لم تُنتَج فعليًا قط.
والآن غيّر الخاصية الثانية إلى «رمز الوردية» بقيم 1 و2 و3. الاستيفاء بين الوردية 1 والوردية 2 يعطي الوردية 1.25، وهي غير موجودة. هذا الاستبدال وحده يفسّر سبب وجود SMOTENC، ويفسّر لماذا يكون استخدام SMOTE الأساسية على أعمدة فئوية خطأً صامتًا لا خطأً معلنًا.
مثال برمجي
المسار أدناه هو البناء الصحيح. واستخدام Pipeline من imblearn بدل sklearn مقصود: فهو يطبّق إعادة أخذ العينات على طيّة التدريب وحدها، فتبقى نتائج التحقق المتقاطع صادقة.
from sklearn.datasets import make_classification
from sklearn.model_selection import StratifiedKFold, cross_val_score, train_test_split
from sklearn.ensemble import RandomForestClassifier
from imblearn.over_sampling import SMOTE
from imblearn.pipeline import Pipeline
X, y = make_classification(
n_samples=5000, n_features=12, n_informative=5,
weights=[0.985, 0.015], random_state=7,
)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=7,
)
# imblearn's Pipeline resamples the TRAIN fold only on each CV split.
# sklearn's Pipeline would leak synthetic points into the validation fold.
pipe = Pipeline([
("smote", SMOTE(k_neighbors=5, random_state=7)),
("clf", RandomForestClassifier(n_estimators=300, random_state=7)),
])
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=7)
scores = cross_val_score(pipe, X_train, y_train, cv=cv, scoring="average_precision")
print("PR-AUC per fold:", scores.round(3))
print("mean PR-AUC:", scores.mean().round(3))
# k_neighbors must be < the minority count in the SMALLEST training fold,
# otherwise fitting raises ValueError.
print("minority in train:", int((y_train == 1).sum()))خمس قيم لـ PR-AUC لكل طيّة ومتوسطها. وإذا تباعدت الطيّات بشكل كبير، فالفئة الأقل أصغر من أن تعطي نتيجة مستقرة، والاستنتاج الأمين حينها هو الحاجة إلى مزيد من العيوب الموسومة، لا إلى مولّد عينات مختلف.
فحوصات تشخيصية
- تأكّد من وقوع المولّد داخل طيّة التحقق المتقاطع. فإذا كان PR-AUC للتحقق أعلى بكثير منه للاختبار، فهو ليس كذلك.
- افحص عينة من السجلات الصناعية يدويًا. فالقيم المستحيلة — رموز ورديات كسرية، أو مدد سالبة، أو فئات خارج النطاق — تدل على استخدام الصيغة الخاطئة.
- قارن بخط أساس موزون بأوزان الفئات. فإن لم تتفوق SMOTE عليه، فلا تُسلّم التعقيد الإضافي.
- غيّر البذرة العشوائية عبر عدة تشغيلات. فالتذبذب الكبير يعني أن الفئة الأقل أصغر من أن تعطي نتيجة مستقرة.
- تحقّق مما إذا كانت النقاط الصناعية تجسر فجوة حقيقية بين مجموعتين فرعيتين متمايزتين من الفئة الأقل، فتنشئ منطقة لا تحتوي أي مثال حقيقي.
متى تستخدم هذه التقنية
- الخصائص مستمرة أو مرتبة ترتيبًا ذا معنى، بحيث تكون النقطة الواقعة بين مثالين حقيقيين منطقية بدورها.
- الفئة الأقل تضم أعضاءً كافين ليكون الجيران قريبين فعلًا — كدليل تقريبي: أكثر من k، وبفارق مريح في كل طيّة.
- جُرِّبت أوزان الفئات وحدها وبقيت فجوة قابلة للقياس.
- الفئة الأقل متجانسة لا مجموعة ظواهر نادرة غير مترابطة تجمعها تسمية واحدة.
متى لا تستخدمها
- فضاء الخصائص فئوي أو عالي الأبعاد ومتفرق، مثل تمثيل النصوص بحقيبة كلمات، حيث يُنتج الاستيفاء متجهات بلا معنى.
- الفئة الأقل تضم عددًا ضئيلًا من الأعضاء؛ فالاستيفاء بين خمس نقاط يولّد تنويعات على خمس نقاط لا معلومات جديدة.
- التصنيفات تحوي ضوضاء. فستستوفي SMOTE حول الأمثلة الموسومة خطأً بالثقة نفسها التي تطبّقها على الصحيحة.
- الفئة الأقل متعددة الأنماط — أنواع إخفاق متمايزة تحت تسمية واحدة — حيث قد يخترع الاستيفاء هجينًا لا يقابله شيء في الواقع.
- تعمل على بيانات صور أو صوت، حيث يكون التوسيع الهندسي أو الطيفي هو النظير المناسب بدل الاستيفاء في فضاء الخصائص.
القيود والمتطلبات المسبقة
- ترفع SMOTE كثافة الفئة الأقل لكنها لا تضيف أي معلومة جديدة عنها.
- تتجاهل الفئة الأكبر تمامًا أثناء التوليد، فقد تقع الأمثلة الصناعية داخل منطقة الفئة الأكبر وتُشوّش حدّ الفصل.
- الأداء حساس لقيمة k_neighbors ونسبة أخذ العينات والبذرة العشوائية.
- لا تستطيع إصلاح خطأ التصنيف أو ضعف الخصائص أو انحياز القياس — وستضخّم الثلاثة بأمانة.
SMOTE مقابل البدائل
المقارنة الأمينة هي مع أوزان الفئات، لا مع عدم فعل شيء.
| الأسلوب | ما يفعله | أين يُخفق |
|---|---|---|
| أوزان الفئات | إعادة ترجيح دالة الخسارة دون صفوف جديدة | قد تزعزع التدريب عند النسب المتطرفة |
| الزيادة العشوائية | تكرار صفوف الفئة الأقل الموجودة | تشجّع حفظ النقاط المفردة |
| SMOTE | الاستيفاء بين جيران الفئة الأقل | الخصائص الفئوية والفئات الصغيرة أو متعددة الأنماط |
| SMOTENC | التعامل مع خليط فئوي ومستمر | ما زالت تتطلب عددًا معقولًا من الفئة الأقل |
| BorderlineSMOTE | التوليد قرب حدّ الفصل | تضخيم ضوضاء الحدّ |
| ADASYN | توليد أكثر حيث يصعب التصنيف | تركيز الجهد على القيم الشاذة والتصنيفات الخاطئة |
جرّب أوزان الفئات أولًا؛ فهي معامل واحد ولا يمكن أن تُحدث تسرّبًا، وكثيرًا ما تُغلق معظم الفجوة بمفردها.
الخلاصة
- تستوفي SMOTE بين جيران حقيقيين من الفئة الأقل بدل تكرار الصفوف.
- يجب تنفيذها داخل طيّة التدريب؛ فتنفيذها قبل التقسيم يُنتج نتيجة غير صالحة.
- يتطلب الاستيفاء خصائص مستمرة ومرتبة ترتيبًا ذا معنى — والأعمدة الفئوية تحتاج SMOTENC.
- قِسها بأمانة مقابل أوزان الفئات؛ فكثيرًا ما تكفي الأوزان وحدها.
- ترث سجلات الفئة الأقل المولّدة تصنيف البيانات الخاص بالسجلات التي اشتُقّت منها.
الأسئلة الشائعة
بعده، وداخل طيّة التدريب وحدها. فتطبيقها قبل التقسيم يضع نقاطًا صناعية مشتقة من صفوف التدريب داخل مجموعة الاختبار، فترتفع النتيجة بشكل مضلل ويبقى الإخفاق مخفيًا حتى النشر.
ليس بشكل مفيد في صورتها الخام. فالاستيفاء بين متجهات عدد الكلمات أو مصفوفات البكسل يُنتج آثارًا لا تشبه شيئًا. استخدم توسيع النصوص أو الصور بدلًا منها، أو طبّق SMOTE في فضاء تمثيلات متعلَّم بحذر.
القيمة الافتراضية 5 نقطة بداية معقولة. ويجب أن تكون أصغر من عدد الفئة الأقل في أصغر طيّة، وخفضها يساعد حين تكون الفئة الأقل متفرقة جدًا.
أحيانًا، وليس بشكل موثوق. قِس الأسلوبين بالتحقق المتقاطع نفسه واختر بناءً على PR-AUC المقيس لا على الشهرة.
نعم. فزيادة كثافة منطقة الفئة الأقل حول عدد صغير من النقاط الحقيقية قد تُنتج حدًّا يلتصق بتلك النقاط ويُعمّم بشكل ضعيف.
التوازن الكامل بنسبة 1:1 نادرًا ما يكون الأمثل. عامل نسبة أخذ العينات كمعامل فائق واضبطها مع النموذج.
لا. فهي مستوفاة من سجلات حقيقية وتحتفظ ببنية منها. تعامل معها كبيانات شخصية مشتقة متى كان المصدر شخصيًا.
غير متأكد من قابلية الفئة الأقل للتعلّم؟
أرسل أعداد الفئات وأنواع الخصائص وطريقة إنتاج التصنيفات، ونقيّم ما إذا كانت إعادة أخذ العينات هي الأداة الصحيحة أم أن المشكلة في التصنيف أو الخصائص أو القياس.
اطلب مراجعة جاهزية البياناتالمصادر والأدلة
- Chawla et al., SMOTE (JAIR 2002) — الورقة الأصلية التي عرّفت إجراء الاستيفاء.
- imbalanced-learn: over-sampling — المرجع الرسمي لـ SMOTE وSMOTENC وBorderlineSMOTE وADASYN.
- imbalanced-learn: common pitfalls — إرشادات رسمية حول إعادة أخذ العينات داخل التحقق المتقاطع.
- scikit-learn: cross-validation — مرجع بناء الطيّات وتفادي التسرّب.
أسماء الموردين والمنتجات علامات تجارية لمالكيها؛ وتُستخدم المراجع للسياق التقني ولا تعني شراكة أو اعتمادًا أو تأييدًا ما لم يُذكر ذلك صراحة.