تخطَّ إلى المحتوى

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