Confusion Matrix
مصفوفة الارتباك (Confusion Matrix) Confusion Matrix
جدول يقارن تنبؤات النموذج بالحقيقة لمشكلة تصنيف: True/False Positives و True/False Negatives — منها تُشتق دقة، Precision، Recall، F1.
مصفوفة الارتباك للمشكلة الثنائية (فئتان) تتكوّن من أربع خلايا: True Positive (TP) تنبؤ إيجابي صحيح، True Negative (TN) تنبؤ سلبي صحيح، False Positive (FP) تنبؤ إيجابي خاطئ (الإنذار الكاذب)، False Negative (FN) تنبؤ سلبي خاطئ (الفائت). كل خلية لها دلالة عملية مختلفة تمامًا حسب مجال التطبيق.
في تطبيق الكشف عن مرض: FN تعني مريض لم يُكتشف — قد يكون قاتلًا. FP تعني شخص سليم شُخّص خطأ — يسبب قلقًا وفحوصات إضافية. في فلتر البريد المزعج: FP يعني رسالة مهمة صنّفها زبالة — إزعاج. FN يعني مزعجًا وصل صندوقك — أقل خطورة.
لأكثر من فئتين، المصفوفة تكبر NxN — كل صف يمثل الفئة الحقيقية وكل عمود الفئة المُتنبَّأ بها (أو العكس). القراءة المتعمّدة لكل خلية أهم من أي رقم تجميعي واحد.
الصياغة
تنبؤ الحقيقة Pos Neg Pos TP FN Neg FP TN Accuracy = (TP + TN) / (TP + TN + FP + FN) Precision = TP / (TP + FP) Recall = TP / (TP + FN)
📄 مثال
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, stratify=y) model = LogisticRegression(max_iter=1000) model.fit(X_train, y_train) y_pred = model.predict(X_test) cm = confusion_matrix(y_test, y_pred) print(cm) # الصفوف = الحقيقة، الأعمدة = التنبؤ
أهم النقاط
| النقطة | الوظيفة |
|---|---|
| True Positive | إيجابي حُدّد إيجابيًا — صحيح |
| False Positive | سلبي حُدّد إيجابيًا — إنذار كاذب (Type I Error) |
| False Negative | إيجابي حُدّد سلبيًا — فائت (Type II Error) |
| True Negative | سلبي حُدّد سلبيًا — صحيح |
💡 نصائح عملية
- لا تكتفِ بـ accuracy — حلّل المصفوفة كاملة لتعرف أي نوع من الأخطاء أكثر
- في مشكلة عدم توازن الفئات (99% فئة واحدة)، accuracy = 99% بلا قيمة عملية — راجع FP/FN
⚠️ أخطاء شائعة
- افتراض أن كل FP وFN سيّئان بالتساوي — في بعض التطبيقات (كشف السرطان) FN أخطر بكثير من FP
- قراءة المصفوفة بدون ربطها بمجال التطبيق — الأرقام وحدها لا تحكي القصة الكاملة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: scikit-learn Documentation