Confusion Matrix
تحصي مصفوفة الالتباس تنبؤات النموذج مقارنة بالتسميات الحقيقية، فئةً فئة. تعرّف على كيفية قراءتها والمقاييس التي توفرها وصيغتها للكشف.
مصفوفة الالتباس جدول يحصي مدى توافق تنبؤات نموذج التصنيف مع التصنيفات الحقيقية. يعرض أحد المحورين الفئات الفعلية، ويعرض الآخر الفئات المتنبأ بها، وتحسب كل خلية الأمثلة التي تندرج ضمن ذلك الزوج. تقع التنبؤات الصحيحة على القطر، وتقع كل الأخطاء خارجه في الخلية التي تحدد بدقة الفئة التي التُبس أمرها بالفئة الأخرى. لذلك تُعد مصفوفة الالتباس الأسلوب القياسي لإلقاء النظرة الأولى على أخطاء النموذج، ومصدرًا لحساب الدقة والإحكام والاستدعاء ودرجة F1.
قراءة مصفوفة الالتباس الثنائية#
تتكون المصفوفة ذات الفئتين من أربع خلايا:
- الإيجابيات الحقيقية (TP): أمثلة إيجابية صُنفت على أنها إيجابية، مثل قطعة معيبة أُشير إليها على أنها معيبة.
- الإيجابيات الكاذبة (FP): أمثلة سلبية صُنفت على أنها إيجابية، وتُسمى أيضًا أخطاء النوع الأول أو الإنذارات الكاذبة.
- السلبيات الكاذبة (FN): أمثلة إيجابية صُنفت على أنها سلبية، وتُسمى أيضًا أخطاء النوع الثاني أو حالات الإخفاق في الاكتشاف.
- السلبيات الحقيقية (TN): أمثلة سلبية صُنفت على أنها سلبية.
معظم المقاييس الثنائية نسبٌ محسوبة من هذه الأعداد الأربعة. الإحكام هو TP / (TP + FP)، والاستدعاء هو TP / (TP + FN)، والدقة هي (TP + TN) مقسومًا على مجموع الأعداد الأربعة. وتعتمد أهمية كل خلية خارج القطر على التطبيق: إذ يُضبط فحص السرطان لتقليل السلبيات الكاذبة، بينما يُضبط مرشح الرسائل المزعجة لتقليل الإيجابيات الكاذبة.
مصفوفات الالتباس متعددة الفئات#
تكون المصفوفة ذات N فئات بأبعاد N × N. ووفق الترتيب المستخدم في scikit-learn confusion_matrix، يمثل كل صف فئة حقيقية، ويمثل كل عمود فئة متنبأ بها. توضح قراءة الصف ما آلت إليه أمثلة تلك الفئة، لذا فإن قسمة قيمة الخلية القطرية على مجموع الصف تعطي استدعاء الفئة. وتوضح قراءة العمود ما كانت عليه فعليًا تنبؤات النموذج بتلك الفئة، لذا فإن قسمة قيمة الخلية القطرية على مجموع العمود تعطي إحكام الفئة. تعرض بعض الأدوات المصفوفة معكوسة المحاور، لذلك تحدد تسميات المحاور كيفية قراءة المخطط.
from sklearn.metrics import confusion_matrix
# التصنيفات الحقيقية والمتنبأ بها لـ 10 صور
y_true = ["cat", "cat", "cat", "dog", "dog", "dog", "dog", "fox", "fox", "fox"]
y_pred = ["cat", "cat", "dog", "dog", "dog", "dog", "cat", "fox", "dog", "fox"]
# الصفوف هي الفئات الحقيقية والأعمدة هي الفئات المتنبأ بها، وفق ترتيب هذه التصنيفات
labels = ["cat", "dog", "fox"]
matrix = confusion_matrix(y_true, y_pred, labels=labels)
print(matrix)الصفوف المطبوعة للفئات cat وdog وfox هي [2 1 0] و[1 3 0] و[0 1 2]. يحتوي القطر على 7 من أصل 10 صور، لذا تبلغ الدقة 0.7. يضم عمود dog صورة واحدة من cat وأخرى من fox، ما يجعل إحكام dog يساوي 3 / 5 = 0.6، بينما يفقد صف dog صورة واحدة لصالح cat، ما يجعل استدعاء dog يساوي 3 / 4 = 0.75. تقسم المصفوفة المطبّعة كل خلية على مجموع فئتها الحقيقية، لذا يوضح القطر استدعاء كل فئة، وتصبح الفئات ذات الأحجام المختلفة جدًا قابلة للمقارنة.
مصفوفات الالتباس لاكتشاف الأجسام#
تضيف عملية الاكتشاف فئة للخلفية، لأن الكاشف قد يعرض صندوقًا في موضع خالٍ أو قد يفوته جسم تمامًا. تُطابق التنبؤات أولًا مع التصنيفات باستخدام التقاطع على الاتحاد (IoU)، ثم تُحصى: تقع الأزواج المتطابقة في خلايا الفئات، وتُحسب التنبؤات غير المتطابقة إيجابيات كاذبة مقابل الخلفية، وتُحسب التصنيفات غير المتطابقة سلبيات كاذبة متنبأ بها على أنها خلفية. تظل خلية الخلفية-الخلفية فارغة، إذ لا يمكن إحصاء مناطق الصور الخالية، لذلك لا تتضمن مصفوفة الاكتشاف سلبيات حقيقية. تنشئ عملية التحقق في YOLO26 هذه المصفوفة مع صف وعمود إضافيين للخلفية، وتطابق التنبؤات مع التصنيفات عند تجاوز IoU مقدار 0.45، وتحفظها باسم confusion_matrix.png، مع الفئات المتنبأ بها على المحور الرأسي والفئات الحقيقية على المحور الأفقي.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validation builds the confusion matrix and saves it as confusion_matrix.png
metrics = model.val(data="coco8.yaml")
matrix = metrics.confusion_matrix.matrix # rows: predicted class, columns: true class
# 80 COCO classes plus one background row and column
print(matrix.shape)
# Class 0 is "person": correct detections and people the model missed
print(f"Person TP: {matrix[0, 0]:.0f}, missed: {matrix[-1, 0]:.0f}")شكلها هو (81, 81)، ويحصي الصف الأخير الأشخاص المصنفين الذين لم يطابقهم أي تنبؤ.
مصفوفة الالتباس والأدوات ذات الصلة#
- منحنى ROC: نقطة واحدة لكل عتبة قرار، تلخص كل نقطة مصفوفة الالتباس لتلك العتبة على هيئة معدل إيجابيات حقيقية ومعدل إيجابيات كاذبة.
- متوسط الدقة المتوسطة (mAP): مقياس الاكتشاف الأساسي، ويُبنى على قرارات TP وFP نفسها عبر جميع مستويات الثقة، دون إظهار الفئات التي يلتبس بعضها ببعض.
- الدقة: اختزال المصفوفة في رقم واحد، هو مجموع القيم القطرية مقسومًا على الإجمالي. في مجموعة بيانات تكون 95% من أمثلتها سلبية، يحقق نموذج يتنبأ دائمًا بكلمة "سلبية" دقة قدرها 95%، بينما تُظهر مصفوفتُه عدم وجود أي إيجابيات حقيقية.










