مجموعات البيانات غير المتوازنة: كيفية إدارتها بفعالية
دليل كامل لفهم ومعالجة مجموعات البيانات غير المتوازنة في الذكاء الاصطناعي مع المقاييس والتقنيات والأمثلة الملموسة.
تُعد مجموعات البيانات غير المتوازنة تحديًا شائعًا في الذكاء الاصطناعي. فعندما تمثل فئة واحدة 99% من الأمثلة بينما لا تمثل الأخرى سوى 1%، غالبًا ما تفشل النماذج القياسية في اكتشاف الحالات النادرة. يمس هذا الظاهر العديد من المجالات التطبيقية ويتطلب مناهج خاصة لتجنب التنبؤات المتحيزة.
ما هي مجموعة البيانات غير المتوازنة ولماذا تشكل مشكلة؟
تكون مجموعة البيانات غير متوازنة عندما يكون توزيع الفئات غير متساوٍ بشكل كبير. على سبيل المثال، في كشف الاحتيال البنكي، تقل نسبة المعاملات الاحتيالية عن 0,5 %. وفي المجال الطبي، يكشف الكشف عن الأمراض النادرة مثل بعض أنواع السرطان أحيانًا عن مريض واحد فقط من بين 1000. ويتبع churn العملاء والبريد المزعج أو العيوب الصناعية النمط نفسه.
يغش النموذج حينها بتنبؤ الفئة الأكثرية بشكل منهجي. فيحصل على دقة عالية مع إغفال الحالات الأقلية تمامًا، مما يجعل النظام غير قابل للاستخدام عمليًا.
فخ الـ accuracy والمقاييس التي يجب تفضيلها
الـ accuracy مضللة لأنها تعكس بشكل أساسي الأداء على الفئة الأكثرية. لذلك يجب استخدام مقاييس أكثر ملاءمة: مصفوفة الالتباس، الدقة، الاستدعاء (recall)، درجة F1، الدقة المتوازنة، معامل كوهين كابا وخاصة PR-AUC (المساحة تحت منحنى الدقة-الاستدعاء) والتي غالباً ما تكون أكثر ملاءمة من ROC-AUC في حالة الاختلال الشديد.
- فضّل الاستدعاء عندما تكون النتائج السلبية الكاذبة مكلفة (مرض غير مكتشف).
- فضّل الدقة عندما تكون النتائج الإيجابية الكاذبة مكلفة (إنذار احتيال غير ضروري).
تقنيات إعادة أخذ العينات
يعدّل إعادة أخذ العينات توزيع الفئات. يقوم الـoversampling بتكرار أو توليد أمثلة من الفئة الأقلية (SMOTE، ADASYN، Borderline-SMOTE). يقوم الـundersampling بتقليل الفئة الأكثرية (Random Undersampling، Tomek Links، NearMiss، ENN). غالباً ما تقدم التركيبات مثل SMOTETomek أو SMOTEENN حلاً جيداً.
- المزايا: يحسّن اكتشاف الفئة النادرة.
- المخاطر: الإفراط في الملاءمة مع التكرار البسيط، وفقدان المعلومات مع undersampling المفرط.
الأساليب على مستوى الخوارزمية
بدلاً من تعديل البيانات، يمكن تكييف الخوارزمية. يعاقب المعامل class_weight في scikit-learn على الأخطاء في الفئة الأقلية. يبرز الـcost-sensitive learning والـfocal loss أهمية الأمثلة الصعبة. يتيح تعديل عتبة القرار (threshold moving) تحسين الاستدعاء أو الدقة بعد التدريب.
الطرق التجميعية المتخصصة
تجمع الطرق التجميعية عدة نماذج مدربة على مجموعات فرعية متوازنة. وتُعد BalancedRandomForest و EasyEnsemble و RUSBoost و BalancedBagging متغيرات قوية تدمج عدم التوازن بشكل طبيعي وتقلل من خطر overfitting.
متى الانتقال إلى إطار كشف الشذوذ
عندما تمثل الفئة النادرة أقل من 1 % من البيانات، تصبح تقنيات التصنيف التقليدية غير فعالة. حينئذٍ يكون من الأفضل التحول إلى أساليب كشف الشذوذ (Isolation Forest, One-Class SVM, autoencodeurs) التي تقوم بنمذجة الفئة الأغلبية فقط وتشير إلى الانحرافات.
أفضل ممارسات التحقق والـ pipelines
لا يجب تطبيق resampling أبدًا على مجموعة الاختبار أو التحقق، وإلا فسيحدث تسرب للبيانات. استخدم دائمًا stratified k-fold وقم ببناء pipeline مع imbalanced-learn لضمان أن SMOTE أو أي تقنية أخرى لا تُطبق إلا على folds التدريب.
مثال ملموس للكود باستخدام imbalanced-learn
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from imblearn.pipeline import Pipeline
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
X, y = make_classification(n_classes=2, weights=[0.95, 0.05], n_samples=10000, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.2, random_state=42)
pipeline = Pipeline([
('over', SMOTE(sampling_strategy=0.3, random_state=42)),
('under', RandomUnderSampler(sampling_strategy=0.5, random_state=42)),
('clf', RandomForestClassifier(class_weight='balanced', random_state=42))
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
print(classification_report(y_test, y_pred))
يطبّق هذا الـ pipeline عملية SMOTE والـ undersampling فقط على بيانات التدريب ويستخدم class_weight لتعزيز المتانة.
قائمة تحقق عملية لمشاريعك
- تحليل توزيع الفئات قبل أي تدريب.
- اختيار المقاييس المناسبة (F1, PR-AUC, balanced accuracy).
- تطبيق إعادة أخذ العينات فقط على بيانات التدريب عبر خط أنابيب.
- اختبار عدة تقنيات (SMOTE, class_weight, seuils).
- استخدام التحقق المتقاطع الطبقي.
- مقارنة النهج على مجموعة اختبار سليمة.
باختصار، تتطلب مجموعات البيانات غير المتوازنة اهتمامًا خاصًا في كل مرحلة من مراحل المشروع. من خلال الجمع بين المقاييس المناسبة، وتقنيات إعادة أخذ العينات المتحكم فيها، وخطوط الأنابيب الدقيقة، ستحصل على نماذج موثوقة حتى عندما تكون الفئات النادرة حرجة. جرب هذه الطرق تدريجيًا على بياناتك الخاصة لترى تأثيرها الملموس.
💬 هل لديك سؤال أو ترغب في التعمق أكثر؟ انضم إلى المجتمع على Discord : https://discord.gg/GwhUKccQcM