Overfitting
فرط التعلّم (Overfitting) Overfitting
فرط التعلّم يعني أن النموذج يحفظ بيانات التدريب بدل تعلّم الأنماط العامة، فيصبح أداؤه ممتازًا على التدريب وضعيفًا على بيانات جديدة — الفجوة بين الدقتين علامة عليه.
فرط التعلّم يظهر حين يصبح النموذج معقّدًا جدًا مقارنة بحجم البيانات أو طبيعتها، فيبدأ يحفظ التفاصيل والضوضاء بدل استخلاص الأنماط الحقيقية. النتيجة: دقة تدريب عالية جدًا (مثل 99%) لكن دقة اختبار منخفضة (مثل 65%) — هذه الفجوة (generalization gap) هي العلامة الحقيقية لفرط التعلّم، وليس مجرد "دقة تدريب عالية".
أسبابه الشائعة: نموذج أكبر من اللازم (معلمات أكثر مما تستحقه البيانات)، بيانات تدريب قليلة جدًا، تكرارات تدريب مفرطة، أو غياب آليات تنظيم (regularization).
طرق معالجته: جمع بيانات أكثر، تقليل تعقيد النموذج، إضافة dropout/regularization، إيقاف التدريب مبكرًا (early stopping)، أو زيادة تنويع البيانات (data augmentation). فرط التعلّم عكسه تمامًا underfitting — حيث النموذج بسيط جدًا فلا يلتقط حتى الأنماط الأساسية.
الصياغة
if train_acc >> val_acc:
print("فرط تعلّم — النموذج يحفظ بدل أن يتعمّم")
elif train_acc ≈ val_acc and low:
print("نقص تعلّم — النموذج بسيط جدًا")📄 مثال
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
# شجرة عميقة جدًا — أكثر عرضة لفرط التعلّم
model = DecisionTreeRegressor(max_depth=None)
model.fit(X_train, y_train)
print(f"R² تدريب: {model.score(X_train, y_train):.3f}")
print(f"R² اختبار: {model.score(X_test, y_test):.3f}")
# فجوة كبيرة بين القيمتين = فرط تعلّمأهم النقاط
| النقطة | الوظيفة |
|---|---|
| Generalization Gap | فرق الأداء بين التدريب والاختبار — كلما كبر، زاد فرط التعلّم |
| Early Stopping | إيقاف التدريب حين يبدأ خطأ التحقق بالارتفاع |
| Regularization | إضافة عقوبة لمدى تعقيد النموذج (L1/L2, Dropout) |
| Data Augmentation | تكبير مجموعة التدريب بصريًا أو لغويًا |
💡 نصائح عملية
- راقب الفرق بين دقة التدريب ودقة التحقق لا دقة التدريب وحدها — فرط التعلّم فجوة وليست دالة لدقة واحدة
- حين تبدأ دقة التحقق بالانخفاض أثناء التدريب، أوقف التدريب (early stopping) قبل أن يتعلّم ضوضاء
⚠️ أخطاء شائعة
- تشخيص فرط التعلّم بمجرد "دقة تدريب عالية" — النموذج البسيط قد تكون دقة تدريبه 100% وهو سليم
- تجاهل إشارة التحذير لأن دقة التدريب "جيدة" — الحقيقة أن ما يهم هو الأداء على بيانات جديدة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: scikit-learn Documentation