عدم توازن الفئات هو أن تحتوي إحدى الفئات على عدد من أمثلة التدريب يفوق غيرها بكثير — مثل 950 معاملة سليمة مقابل 50 معاملة احتيال. النموذج المدرَّب على هذه البيانات يستطيع أن يتنبأ بالفئة الأكبر في كل مرة، فيُسجّل دقة 95% دون أن يكتشف أي حالة احتيال. وعدم التوازن نفسه ليس خطأً؛ فهو يعكس الواقع لأن الأحداث النادرة نادرة بطبيعتها. الخطأ هو تقييم النموذج بمقياس لا يستطيع رؤية الإخفاق، وتدريبه بدالة خسارة لا تجد سببًا للاهتمام بالفئة الأقل.
الحل نادرًا ما يكون تقنية واحدة، بل قرار بشأن الأخطاء التي يستطيع العمل تحمّلها، يُعبَّر عنه عبر المقياس وأسلوب أخذ العينات وحد القرار مجتمعةً.
ما المشكلة التي يعالجها هذا الحل؟
يُطلق فريق مكافحة الاحتيال نموذجًا بدقة 95%. وفي الشهر الأول لا يرصد النموذج شيئًا. كان التوزيع 950 معاملة سليمة مقابل 50 معاملة احتيال، والتنبؤ بـ«سليمة» في كل مرة يحقق 95% بالضبط. لم يكن هذا الرقم يقيس الاكتشاف في أي لحظة.
ويتكرر النمط نفسه حيثما كان الحدث المهم نادرًا: عيب في خط إنتاج تبلغ جودته 99.2%، أو حدث أمني خلال أسبوع من تسجيلات كاميرات خالية من الحوادث، أو مرض موجود لدى 3% من الفئة المفحوصة. وفي كل حالة تكون الفئة الأكبر كافية للهيمنة على دالة الخسارة، فتصبح أرخص وسيلة لتقليل الخطأ هي تجاهل الفئة الأقل تمامًا.
كيف يعمل الحل؟
غيّر المقياس أولًا قبل المساس بالبيانات. تبقى مقاييس Precision وRecall وF1 وPR-AUC ذات دلالة حين تكون إحدى الفئات نادرة، بينما تفقد الدقة دلالتها. هذه الخطوة لا تكلّف شيئًا وكثيرًا ما تكشف أن النموذج لم يكن جيدًا كما أُبلغ عنه.
ثم حدّد أي الخطأين أغلى ثمنًا. فحالة احتيال فائتة وعميل موسوم خطأً ليسا كلفةً متكافئة، وحد القرار — لا النموذج — هو الموضع الذي تُضبط فيه هذه الموازنة.
وبعد ذلك فقط انظر في إعادة أخذ العينات. فزيادة عينات الفئة الأقل، أو تقليل عينات الفئة الأكبر، أو توليد أمثلة صناعية عبر SMOTE أو ADASYN، كلٌّ منها يغيّر توزيع التدريب بطريقة مختلفة، ولكلٍّ نمط إخفاق خاص به.
- 1قياس التوزيع احسب عدد الأمثلة لكل فئة داخل كل تقسيم. فوجود عدم توازن في التدريب دون الاختبار، أو العكس، مشكلة مختلفة وأخطر.
- 2بناء خط أساس قيّم نموذجًا يتنبأ دائمًا بالفئة الأكبر. أي نموذج حقيقي يجب أن يتفوق عليه في Recall وPR-AUC، لا في الدقة.
- 3اختيار مقياس التشغيل اختر المقياس الذي يطابق القرار المُؤتمت، واتفق عليه مع مالك العملية قبل بدء الضبط.
- 4تعديل التدريب طبّق أوزان الفئات أو إعادة أخذ العينات أو دالة خسارة حساسة للتكلفة. وأوزان الفئات هي الأقل تدخلًا وينبغي تجربتها أولًا.
- 5ضبط حد القرار امسح حد القرار عبر مجموعة التحقق واختر النقطة التي تطابق التكلفة المتفق عليها لكل نوع من الخطأ.
البنية المرجعية
يُعالَج عدم التوازن عند أربع نقاط مستقلة، والخلط بينها هو أكثر أسباب هدر الجهد شيوعًا.
| Layer | What it contains |
|---|---|
| طبقة البيانات | توزيع الفئات، وجودة التصنيفات، وما إذا كانت الفئة النادرة نادرة في الواقع أم في هذه العيّنة فقط. |
| طبقة التدريب | أوزان الفئات وإعادة أخذ العينات ودوال الخسارة الحساسة للتكلفة — وكلها تُطبَّق على تقسيم التدريب وحده. |
| طبقة التقييم | Precision وRecall وF1 وPR-AUC ومصفوفة الالتباس، محسوبة على مجموعة اختبار لم تُمس وبتوزيعها الأصلي. |
| طبقة القرار | الحد الذي يحوّل الدرجة إلى إجراء، مضبوطًا مقابل التكلفة التجارية لكل نوع من الخطأ. |
خيارات النشر: النشر داخل مقر العميل أو على الحافة أو في سحابة خاصة بحسب متطلبات إقامة البيانات. فبيانات الاحتيال والصحة والفحص الحكومي كثيرًا ما لا يمكن أن تغادر نطاق الجهة، وهو ما يقيّد موضع التدريب والمراقبة.
القدرات الرئيسية
تدقيق التوزيع وخط الأساس
توزيع موثّق للفئات في كل تقسيم، وخط أساس للفئة الأكبر يجب أن يتفوق عليه أي نموذج.
availableورشة اختيار المقياس
مقياس تشغيل متفق عليه وتكلفة خطأ معتمدة من مالك العملية، لا مختارة من فريق البيانات وحده.
availableتصميم مسار إعادة أخذ العينات
تطبيق إعادة أخذ العينات داخل طيّات التحقق المتقاطع حتى لا تتضخم النتيجة بسبب التسرّب.
custom developmentنمذجة حد القرار والتكلفة
حد قرار مختار من منحنى Precision-Recall مقيس مقابل التكلفة الفعلية للحالة الفائتة والإنذار الكاذب.
custom developmentالتكاملات
معالجة عدم التوازن جزء من مسار التدريب لا منتج منفصل. ويجب أن تصمد أمام إعادة التدريب، ما يعني أن أسلوب أخذ العينات ينتمي إلى شيفرة مُدارة بالإصدارات لا إلى دفتر ملاحظات شغّله أحدهم مرة واحدة.
| النظام | نقطة التكامل والبيانات المتبادلة | الاتجاه |
|---|---|---|
| مخزن الخصائص أو مستودع البيانات | يُراقَب توزيع الفئات عبر الزمن؛ فتغيّر المعدل الأساسي يُبطل حد القرار المضبوط بصمت. | bi-directional |
| مسار التدريب | تُنفَّذ إعادة أخذ العينات داخل طيّة التحقق المتقاطع، لا قبل التقسيم أبدًا. ← Data Leakage: The Model That Only Works Before Deployment | bi-directional |
| مراقبة النموذج | يُتابَع Recall وPrecision لكل فئة في التشغيل، لا الدقة الإجمالية وحدها. | bi-directional |
حالات الاستخدام والقطاعات
المصارف والمدفوعات
يمثّل الاحتيال جزءًا من واحد بالمئة من المعاملات، ويقود Recall وتكلفة الرفض الخاطئ ضبطَ حد القرار.
الفحص الصحي
الحالة الموجبة الفائتة أعلى كلفةً بكثير من استدعاء مريض للمراجعة، لذا يُضبط الحد عمدًا باتجاه استدعاء مرتفع.
فحص الجودة الصناعية
في خط إنتاج عالي الجودة تتراكم أمثلة العيوب ببطء، ويجب بناء مجموعة التدريب عمدًا لا أخذها عشوائيًا.
الأمن وتحليلات الكاميرات
الحوادث الحقيقية نادرة مقابل ساعات من التسجيلات الاعتيادية، والنموذج المضبوط على الدقة سيعتبر أسبوعًا خاليًا نجاحًا.
اعتبارات الإمارات والخليج
في عمليات النشر بالإمارات والخليج، يكون القيد عادةً في إقامة البيانات لا في النمذجة. فبيانات الاحتيال والمرضى والفحص الحكومي كثيرًا ما لا يمكن أن تغادر بيئة الجهة، وهو ما يستبعد عددًا من خدمات AutoML المُدارة ويدفع التدريب إلى داخل المقر أو إلى سحابة خاصة إقليمية معتمدة. أكِّد قبل اختيار المنصة موقف إقامة البيانات، ونطاق النشر المعتمد، ومتطلبات التشغيل بالعربية والإنجليزية، والجهة المالكة لجدول إعادة التدريب.
منهجية التنفيذ
- 1الاتفاق على التكلفة حدّد مع مالك العملية كلفة الحالة الموجبة الفائتة وكلفة الإنذار الكاذب. فبدون ذلك يفقد ضبط حد القرار هدفه.
- 2تثبيت المقياس استبدل الدقة في كل تقرير ولوحة متابعة. فإبقاؤها ظاهرة يضمن أن يقتبسها أحدهم منفردة.
- 3تجربة أوزان الفئات ابدأ بـ class_weight='balanced' أو ما يعادلها. فهي معامل واحد وكثيرًا ما تُغلق معظم الفجوة.
- 4إعادة أخذ العينات عند الحاجة أضف SMOTE أو ADASYN أو التقليل داخل طيّة التحقق المتقاطع، وقارن بأمانة مع خط الأساس الموزون.
- 5الضبط والمراقبة اختر حد القرار من منحنى Precision-Recall، ثم راقب المعدل الأساسي واستدعاء كل فئة بعد النشر.
الأمن وخيارات النشر
بيانات تدريب نماذج الاحتيال والصحة والأمن من أكثر ما تملكه المؤسسة حساسية. أبقِها داخل النطاق المعتمد، واستخدم مبدأ الحد الأدنى من الصلاحيات للوصول إلى بيئة التدريب، وتعامل مع أمثلة الفئة الأقل المولّدة صناعيًا على أنها بيانات شخصية مشتقة لا بيانات مجهولة الهوية — فأسلوب SMOTE يستوفي بين سجلات حقيقية وقد يحمل بنية قابلة للتعريف.
مثال عملي
لنأخذ 1000 معاملة: 950 سليمة و50 احتيالية. النموذج الذي يجيب دائمًا بـ«سليمة» يُنتج ما يلي.
- الدقة (Accuracy). 950 إجابة صحيحة من 1000 = 95.0%. هذا هو الرقم الذي يصل إلى اللجنة التوجيهية.
- الاستدعاء (Recall) للاحتيال. صفر من أصل 50 حالة احتيال = 0.0%. هذا هو الرقم الذي يهم فعلًا.
- الدقة الموجبة (Precision) للاحتيال. غير معرّفة — لأن النموذج لا يتنبأ بالاحتيال إطلاقًا، فلا توجد تنبؤات موجبة ليكون صائبًا بشأنها.
- مقياس F1 للاحتيال. 0.0، لأنه المتوسط التوافقي بين Precision وRecall، وقيمة Recall صفر.
مقياسان على التنبؤات نفسها: 95% و0%. واحد فقط منهما يصف ما إذا كان النظام يؤدي وظيفته. هذه الفجوة هي «مفارقة الدقة»، ولهذا يسبق قرارُ المقياس قرارَ النمذجة.
مثال برمجي
التفصيل الحاسم هو ترتيب التقسيم. فإعادة أخذ العينات قبل التقسيم تنسخ أو تولّد أمثلة من الفئة الأقل تظهر بعدها على جانبي التقسيم، فترفع نتيجة الاختبار بشكل مضلل وتُخفي المشكلة بدل معالجتها.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, average_precision_score
from imblearn.over_sampling import SMOTE
# 1,000 rows, 5% minority - roughly the fraud shape described above.
X, y = make_classification(
n_samples=1000, n_features=10, n_informative=4,
weights=[0.95, 0.05], random_state=42,
)
# Split FIRST. Everything that follows touches training data only.
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, stratify=y, random_state=42,
)
# Baseline: no resampling, but tell the loss function the classes differ.
baseline = LogisticRegression(max_iter=1000, class_weight="balanced")
baseline.fit(X_train, y_train)
# SMOTE applied to the TRAINING SPLIT ONLY - never before the split.
X_res, y_res = SMOTE(random_state=42).fit_resample(X_train, y_train)
resampled = LogisticRegression(max_iter=1000)
resampled.fit(X_res, y_res)
for name, model in [("class_weight", baseline), ("smote", resampled)]:
proba = model.predict_proba(X_test)[:, 1]
print(name, "PR-AUC:", round(average_precision_score(y_test, proba), 3))
print(classification_report(y_test, model.predict(X_test), digits=3))يُسجّل كلا النموذجين دقةً أقل بكثير من نموذج الفئة الأكبر، واستدعاءً أعلى بكثير للفئة الأقل. قارن بينهما بمقياس PR-AUC لا بالدقة؛ ومع فئة أقل تمثّل 5% كثيرًا ما يتغيّر الترتيب بين الأسلوبين بتغيّر البذرة العشوائية، وهذا في حد ذاته مؤشر مفيد على أن الفارق ليس ذا دلالة بعد.
فحوصات تشخيصية
- احسب خط أساس الفئة الأكبر. فإذا كانت دقة النموذج قريبة منه، فقد لا يكون النموذج قد تعلّم شيئًا.
- اقرأ مصفوفة الالتباس لا الدرجة المختصرة. فعمود من الأصفار عند الفئة الأقل دليل قاطع.
- تحقّق مما إذا كانت إعادة أخذ العينات جرت قبل تقسيم التدريب والاختبار أم بعده. فقبله تسرّبٌ ونتيجة الاختبار غير صالحة.
- قارن PR-AUC بـ ROC-AUC. فقد يبدو ROC-AUC قويًا على بيانات شديدة الاختلال بينما تكون Precision عند حد التشغيل غير قابلة للاستخدام.
- تأكّد من أن توزيع الفئات في التشغيل يطابق التوزيع الذي ضُبط عليه حد القرار.
متى تستخدم هذه التقنية
- الفئة الأقل نادرة فعلًا ومهمة فعلًا — احتيال، أو عيوب، أو مرض، أو اختراقات.
- تكلفة الحالة الموجبة الفائتة تفوق بوضوح تكلفة الإنذار الكاذب.
- يتوفر عدد كافٍ من أمثلة الفئة الأقل لتمثيلها؛ فإعادة أخذ العينات تضخّم الموجود ولا تخلق معلومات جديدة.
- المعدل الأساسي مستقر بما يكفي ليبقى حد القرار المضبوط صالحًا في الربع القادم.
متى لا تستخدمها
- عدم التوازن طفيف. فدون نسبة 1:4 تقريبًا تكفي أوزان الفئات وحد قرار معقول، وتضيف إعادة أخذ العينات مخاطرة دون فائدة.
- الفئة الأقل نادرة بسبب إخفاق في التصنيف لا بسبب الواقع — عالِج التصنيفات أولًا، لأن إعادة أخذ العينات ستضخّم الخطأ بأمانة.
- لا يوجد سوى عدد ضئيل من أمثلة الفئة الأقل. فالتوليد الصناعي سيستوفي بين نقاط قليلة جدًا ويُنتج أمثلة لا تشبه الفئة الحقيقية.
- قرار النشر لا يعتمد على الفئة النادرة أصلًا، وعندها قد لا يكون عدم التوازن مهمًا.
القيود والمتطلبات المسبقة
- إعادة أخذ العينات تغيّر توزيع التدريب لا محتواه المعلوماتي؛ فهي لا تستطيع تصنيع إشارة لا تحملها الخصائص.
- يستوفي SMOTE بين نقاط موجودة من الفئة الأقل، وقد يُنتج أمثلة غير منطقية في الفضاءات الفئوية أو عالية الأبعاد.
- يتخلّص التقليل من أمثلة الفئة الأكبر، ومعها معلومات قد تكون مفيدة عن حدّ الفصل.
- حد القرار المضبوط على معدل أساسي معيّن يصبح خاطئًا حين يتغيّر ذلك المعدل، وهو ما يحدث عادةً.
اختيار أسلوب معالجة عدم التوازن
هذه الخيارات ليست مرتبة تفضيليًا. فالأنسب منها يعتمد على مدى ندرة الفئة الأقل، وعدد الأمثلة المتاحة، وكلفة كل نوع من الخطأ.
| الأسلوب | الأنسب لـ | الخطر الرئيسي |
|---|---|---|
| أوزان الفئات | المحاولة الأولى في معظم الحالات | قد يزعزع استقرار التدريب عند النسب المتطرفة |
| الزيادة العشوائية | مجموعات البيانات الصغيرة والنماذج البسيطة | تكرار الأمثلة وتشجيع فرط التخصيص |
| التقليل العشوائي | فئة أكبر ضخمة جدًا | فقدان معلومات عن حدّ الفصل |
| SMOTE | الخصائص المستمرة مع عدد معقول من الأمثلة | نقاط صناعية غير منطقية في الفضاء الفئوي |
| ADASYN | أمثلة الفئة الأقل قرب حدّ الفصل | تضخيم الضوضاء والتصنيفات الخاطئة |
| ضبط حد القرار | كل عملية نشر، دائمًا | يفقد صلاحيته عند تغيّر المعدل الأساسي |
عمليًا يكون التسلسل: صحّح المقياس، ثم وازن الفئات، ثم اضبط حد القرار، وبعد ذلك فقط فكّر في التوليد الصناعي.
الخلاصة
- الدقة على بيانات غير متوازنة تقيس المعدل الأساسي لا النموذج.
- غيّر المقياس قبل تغيير البيانات — فهو مجاني وكثيرًا ما يكون حاسمًا.
- أوزان الفئات هي التدخل الأول، والتوليد الصناعي هو التدخل الثالث.
- طبّق أي إعادة أخذ للعينات بعد تقسيم التدريب والاختبار وداخل الطيّة، وإلا فالنتيجة غير صالحة.
- حد القرار هو الموضع الذي تُعبَّر فيه فعليًا عن التكلفة التجارية لكل خطأ.
الأسئلة الشائعة
لا توجد عتبة ثابتة. فعند نسبة 1:4 تقريبًا تتعامل معظم النماذج بأوزان الفئات وحدها، وعند 1:100 تفقد الدقة معناها وتلزم عادةً إعادة أخذ العينات أو تدريب حساس للتكلفة. والنسبة أقل أهمية من توفّر أمثلة كافية للفئة الأقل لتكون قابلة للتعلّم.
لا. ابدأ بأوزان الفئات لأنها أبسط ولا يمكن أن تُحدث تسرّبًا. ولجوؤك إلى SMOTE يكون حين لا تكفي الأوزان وتكون الخصائص مستمرة بما يجعل الاستيفاء بين نقاط الفئة الأقل ذا معنى.
لأن النموذج يتنبأ بالفئة الأكبر لكل مدخل. والدقة تكافئ هذا السلوك لأن الفئة الأكبر تهيمن على العدّ. اقرأ مصفوفة الالتباس والاستدعاء لكل فئة بدلًا منها.
فقط إلى جانب مقاييس كل فئة، ويُفضَّل عدم إدراجها في التقارير إطلاقًا. فبمجرد ظهور الدقة على لوحة متابعة سيقتبسها أحدهم منفردة.
فقط إذا احتوت البيانات الإضافية على مزيد من أمثلة الفئة الأقل. أما جمع عشرة أضعاف من سجلات الفئة الأكبر فيزيد النسبة سوءًا لا تحسّنًا.
داخل طيّة التدريب، بعد التقسيم. فإعادة أخذ العينات على كامل البيانات قبل التقسيم تضع نسخًا صناعية من نقاط التدريب داخل مجموعة الاختبار، ما يُنتج نتيجة متضخمة لن تصمد في التشغيل.
ارسم منحنى Precision-Recall على بيانات التحقق، وألحِق تكلفة بكل نوع من الخطأ، ثم اختر النقطة التي تُقلّل التكلفة المتوقعة. والقيمة الافتراضية 0.5 اصطلاح لا توصية.
هل يعرض نموذجك دقة لا يثق بها أحد؟
أرسل توزيع الفئات والمقياس المستخدم حاليًا ومثالًا واحدًا لحالة فائتة كانت مهمة، ونحدّد ما إذا كانت المشكلة في أخذ العينات أو حد القرار أو الخصائص أو التصنيفات قبل إعادة التدريب.
اطلب تقييمًا لنموذج الذكاء الاصطناعيالمصادر والأدلة
- دليل imbalanced-learn — التوثيق الرسمي لأساليب إعادة أخذ العينات بما فيها SMOTE وADASYN.
- scikit-learn: مقاييس التقييم — المرجع الرسمي لـ Precision وRecall وF1 ومتوسط الدقة.
- Chawla et al., SMOTE (JAIR 2002) — الورقة البحثية الأصلية للتوليد الصناعي لعينات الفئة الأقل.
- إطار NIST لإدارة مخاطر الذكاء الاصطناعي — سياق حوكمة القياس وصلاحية أنظمة الذكاء الاصطناعي.
أسماء الموردين والمنتجات علامات تجارية لمالكيها؛ وتُستخدم المراجع للسياق التقني ولا تعني شراكة أو اعتمادًا أو تأييدًا ما لم يُذكر ذلك صراحة.