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

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