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

Cross-Validation

التحقّق المتقاطع (Cross-Validation) Cross-Validation

التحقّق المتقاطع يقسّم البيانات عدة مرات ويُدرّب النموذج في كل مرة على جزء ويُقيّمه على جزء آخر، ثم يُعدّل النتائج — للحصول على تقدير أكثر استقرارًا لأداء النموذج.

التحقّق المتقاطع يحلّ مشكلة الاعتماد على تقسيم واحد للبيانات. الفكرة: بدل تقسيم 80/20 مرة واحدة، تقسّم البيانات K أجزاء (folds)، ثم تدرّب النموذج K مرة — في كل مرة تستخدم K-1 جزء للتدريب والجزء المتبقي للتقييم. متوسط النتائج يعطيك تقديرًا أكثر استقرارًا وأقل تأثرًا بالعشوائية.

أشكاله: K-Fold (الشكل الأساسي)، Stratified K-Fold (للتصنيف غير المتوازن)، Leave-One-Out (K = عدد العيّنات، بطيء لكن دقيق لمجموعات صغيرة)، Time Series Split (لسلاسل زمنية تحترم الترتيب الزمني).

مهم جدًا: التحقّق المتقاطع يُستخدم لاختيار النموذج وضبط المعلمات، أما التقييم النهائي فيبقى على مجموعة اختبار مستقلة لم تُستخدم في أي تجربة سابقة. بيانات الاختبار تبقى آخر خطوة لا رجعة فيها.

الصياغة

from sklearn.model_selection import cross_val_score

scores = cross_val_score(
    model, X, y,
    cv=5,                 # عدد الطيّات (folds)
    scoring="accuracy"
)
print(f"متوسط الدقة: {scores.mean():.2f} ± {scores.std():.2f}")

📄 مثال

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=1000)

# 5-fold cross-validation
scores = cross_val_score(model, X, y, cv=5, scoring="accuracy")
print(f"دقة كل طيّة: {scores.round(2)}")
print(f"المتوسط: {scores.mean():.2f} ± {scores.std():.3f}")

أهم النقاط

النقطةالوظيفة
cv=5عدد الطيّات — القيمة 5 أو 10 الأكثر شيوعًا
scoringمقياس التقييم (accuracy, f1, neg_mean_squared_error...)
Stratified K-Foldللتصنيف — يحافظ على نسبة الفئات في كل طيّة
Time Series Splitلسلاسل زمنية — يحترم الترتيب الزمني دون تسريب مستقبلي

💡 نصائح عملية

  • استخدم Stratified K-Fold لمشاكل التصنيف، خاصة حين تكون الفئات غير متوازنة — يضمن توزيعًا متشابهًا للفئات في كل طيّة
  • أضف ± الانحراف المعياري بجانب المتوسط — فارق صغير بين النماذج قد لا يكون ذا معنى إحصائيًا

⚠️ أخطاء شائعة

  • تضمين بيانات الاختبار النهائية ضمن التحقّق المتقاطع — يفقد التقييم النهائي موضوعيته
  • استخدام K-Fold القياسي لبيانات سلاسل زمنية — يسمح للنموذج "بالتنبؤ بالماضي" من المستقبل

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.