مصفوفة الارتباك في التعلم الآلي مع مثال
⚡ ملخص ذكي
مصفوفة الارتباك هي جدول لقياس أداء نماذج التصنيف يقارن التصنيفات المتوقعة بالتصنيفات الفعلية المعروفة، مما يكشف بدقة عن الفئات التي يصنفها المصنف بشكل صحيح والفئات التي يخطئ فيها.

ما هي مصفوفة الارتباك؟
A الارتباك مصفوفة هي تقنية لقياس الأداء لـ آلة التعلم التصنيف. هو جدول يوضح أداء نموذج التصنيف على مجموعة بيانات اختبارية معروفة قيمها الحقيقية مسبقًا. مصطلح "مصفوفة الارتباك" بسيط، لكن المصطلحات المستخدمة فيه قد تكون مُربكة، لذا سنشرح كل جزء منها بلغة مبسطة أدناه.
تنطبق المصفوفة على أي المصنف الخاضع للإشراف — الانحدار اللوجستي، شجرة القرار، أ نموذج بايز ساذج أو الشبكة العصبية العميقة — لأنه يقارن فقط عمودين من التصنيفات: ما تنبأ به النموذج وما كان صحيحًا بالفعل.
أربع نتائج لمصفوفة الارتباك
تعمل مصفوفة الارتباك على توضيح دقة المصنف من خلال مقارنة الفئات الفعلية والمتوقعة. تتكون مصفوفة الارتباك الثنائية من مربعات:

يوضح الجدول أعلاه المربعات الأربعة التي تحتوي عليها كل مصفوفة ارتباك ثنائية:
- TP: إيجابي حقيقي: تم التنبؤ بالقيم المتوقعة بشكل صحيح على أنها قيم موجبة فعلية
- FP: نتيجة إيجابية خاطئة: تم التنبؤ بالقيم بشكل خاطئ على أنها موجبة فعلية، أي تم التنبؤ بالقيم السالبة على أنها موجبة.
- FN: نتيجة سلبية خاطئة: القيم الموجبة تُعتبر قيماً سالبة
- TN: سلبي حقيقي: تم التنبؤ بالقيم المتوقعة بشكل صحيح على أنها قيمة سالبة فعلية
تُطلق الإحصائيات على خليتي الخطأ اسمين خاصين بهما. والنتيجة الإيجابية الخاطئة هي خطأ من النوع الأول أثار النموذج إنذارًا ما كان ينبغي إطلاقه أبدًا. النتيجة السلبية الخاطئة هي خطأ من النوع الثاني — التزم النموذج الصمت في حين كان ينبغي عليه إطلاق الإنذار. معرفة أي الخيارين أكثر تكلفة لحل مشكلتك يحدد المقياس الذي ستضبطه لاحقًا.
يمكنك حساب اختبار الدقة من مصفوفة الارتباك، كما توضح الصيغة أدناه:
مثال على مصفوفة الارتباك
مصفوفة الارتباك هي أسلوب مفيد في التعلم الآلي، يسمح لك بقياس الاستدعاء، والدقة، والصحة، ومنحنى AUC-ROC. يوضح المثال التالي في كرة القدم معاني المصطلحات: إيجابي صحيح، سلبي صحيح، إيجابي خاطئ، وسلبي خاطئ، وذلك بلغة بسيطة.
صحيح إيجابي:
توقعتَ نتيجة إيجابية، وقد صدقت توقعاتك. على سبيل المثال، توقعتَ فوز فرنسا بكأس العالم، وقد فازت بالفعل.
سلبي حقيقي:
توقعتَ نتيجة سلبية، وهذا صحيح أيضاً. لقد توقعتَ أن إنجلترا لن تفوز، وقد خسرت.
إيجابية كاذبة:
توقعاتك إيجابية وهي كاذبة.
كنت تتوقع فوز إنجلترا، لكنها خسرت.
سلبي خطأ:
توقعك سلبي، والنتيجة تجعله خاطئاً.
لقد توقعت أن فرنسا لن تفوز، لكنها فازت.
يجب أن تتذكر أن الكلمة الأولى تصف ما إذا كان التوقع صحيحًا أم خاطئًا (صحيح أو خاطئ) والكلمة الثانية تصف ما توقعه النموذج (إيجابي أو سلبي).
كيفية حساب مصفوفة الارتباك
فيما يلي الخطوات التفصيلية لحساب مصفوفة الارتباك في استخراج البيانات:
- الخطوة 1) أولاً، أنت بحاجة إلى مجموعة بيانات اختبارية مع قيم النتائج المتوقعة.
- الخطوة 2) توقع جميع الصفوف في مجموعة بيانات الاختبار.
- الخطوة 3) قارن النتائج المتوقعة بالتنبؤات وقم بالعد:
- مجموع التوقعات الصحيحة لكل فئة.
- مجموع التوقعات غير الصحيحة لكل فئة.
بعد ذلك، يتم تنظيم هذه الأرقام بالطرق الموضحة أدناه:
- يتوافق كل صف من صفوف المصفوفة مع فئة فعلية.
- يرتبط كل عمود من أعمدة المصفوفة بفئة متوقعة.
- يتم إدخال إجمالي عدد التصنيفات الصحيحة وغير الصحيحة في الجدول.
- يتم وضع مجموع التوقعات الصحيحة لفئة معينة في الخلية التي يلتقي فيها الصف الفعلي لتلك الفئة مع عمودها المتوقع - أي في القطر.
- يتم وضع مجموع التنبؤات غير الصحيحة لفئة معينة في الصف الفعلي لقيمة تلك الفئة وفي العمود المتوقع للفئة التي اختارها النموذج بدلاً من ذلك.
تُعدّ أدوار الصفوف والأعمدة اصطلاحًا وليست قاعدة ثابتة، وبعض أدوات الرسم البياني تُبدّل التخطيط، لذا اقرأ دائمًا تسميات المحاور قبل تفسير المصفوفة. التوجيه المستخدم هنا - الفعلي في الصفوف، والمتوقع في الأعمدة - هو التوجيه الذي تُنتجه مكتبة scikit-learn.
مصطلحات مهمة أخرى باستخدام مصفوفة الارتباك
بمجرد تحديد القيم الأربع، تصف مجموعة من المصطلحات الثانوية شرائح مختلفة من نفس الجدول:
- القيمة التنبؤية الإيجابية (PPV): هذا قريب جدًا من الدقة. أحد الفروق الجوهرية بين المصطلحين هو أن القيمة التنبؤية الإيجابية تأخذ الانتشار في الحسبان. في حالة التوازن التام بين الفئات، تكون القيمة التنبؤية الإيجابية مساوية للدقة.
- معدل الخطأ الفارغ: يُحدد هذا المصطلح مدى احتمالية خطأ توقعاتك إذا توقعت دائمًا الفئة الأكثر شيوعًا. يمكنك اعتباره مقياسًا أساسيًا لمقارنة أداء المصنف الخاص بك.
- درجة ف: تُعتبر درجة F1 متوسطًا مرجحًا لمعدل الإيجابية الحقيقية (الاستدعاء) والدقة.
- منحنى ROC: يرسم منحنى ROC معدل الإيجابية الحقيقية مقابل معدل الإيجابية الكاذبة عند نقاط قطع مختلفة. كما يوضح المفاضلة بين الحساسية (الاستدعاء) والنوعية، وهي معدل السلبية الحقيقية.
- الدقة: يُظهر مقياس الدقة دقة الفئة الإيجابية. إنه يقيس مدى احتمالية صحة التنبؤ بالفئة الإيجابية.
تكون أعلى درجة هي 1 عندما يصنف المصنف جميع القيم الموجبة بدقة تامة. لا يُعدّ مقياس الدقة وحده مفيدًا جدًا لأنه يتجاهل الفئة السالبة. عادةً ما يُقترن هذا المقياس بمقياس الاستدعاء. يُسمى الاستدعاء أيضًا بالحساسية أو معدل الإيجابية الحقيقية، ويُكتب كما هو موضح أدناه.
- حساسية: تحسب الحساسية نسبة الفئات الإيجابية التي تم اكتشافها بشكل صحيح. يوضح هذا المقياس مدى جودة النموذج في التعرف على الفئة الإيجابية.
مقاييس ومعادلات مصفوفة الارتباك
كل مقياس مما سبق هو عملية حسابية على نفس النقاط الأربع، لذلك من المفيد رؤيتها جنبًا إلى جنب مع السؤال الذي يجيب عليه كل منها.
| متري | المعادلة | السؤال يجيب عليه | استخدمه عندما |
|---|---|---|---|
| الدقة | (TP + TN) / (TP + TN + FP + FN) | كم عدد التوقعات التي كانت صحيحة إجمالاً؟ | الفصول الدراسية متوازنة تقريبًا |
| دقة | TP / (TP + FP) | عندما يقول النموذج نتيجة إيجابية، فكم مرة يكون ذلك صحيحاً؟ | الإنذارات الكاذبة مكلفة |
| أذكر (حساسية) | TP / (TP + FN) | من بين جميع الحالات الإيجابية الحقيقية، كم عدد الحالات التي تم اكتشافها؟ | إن عدم اكتشاف الحالات الإيجابية مكلف |
| النوعية | TN / (TN + FP) | من بين جميع الحالات السلبية الحقيقية، كم منها تمت تبرئتها؟ | الطبقة السلبية مهمة أيضاً |
| نقاط F1 | 2 × (الدقة × الاستدعاء) / (الدقة + الاستدعاء) | ما هو التوازن بين الاثنين؟ | تحتاج إلى رقم واحد لكليهما |
لنفترض أن لدينا مرشحًا للبريد العشوائي تم اختباره على 100 بريد إلكتروني، وكانت نتائجه كالتالي: TP = 45، FN = 5، FP = 10، وTN = 40. الدقة = (45 + 40) / 100 = 0.85. الدقة = 45 / (45 + 10) = 0.82، الاستدعاء = 45 / (45 + 5) = 0.90، والنوعية = 40 / (40 + 10) = 0.80. أما قيمة F1 فهي 0.86.
تكشف هذه الأرقام عن حقيقةٍ تخفيها نسبة الدقة وحدها: إذ يلتقط الفلتر 90% من الرسائل المزعجة الحقيقية، لكنه يعزل خطأً رسالةً إلكترونيةً شرعيةً واحدةً من بين كل خمس رسائل مُعلّمة. ويتوقف قبول هذه المقايضة على تكلفة كل خطأ، وهذا تحديدًا هو سبب عرض المصفوفة بدلًا من الدقة وحدها.
مصفوفة الارتباك لتصنيف متعدد الفئات
نادراً ما تتوقف مسائل التصنيف عند تصنيفين، وتتغير أبعاد المصفوفة دون تغيير شكلها. بالنسبة لعدد N من الفئات، يصبح الجدول شبكة N×N: يحتوي القطر على كل تنبؤ صحيح، وتسجل كل خلية غير قطرية الفئة التي تم الخلط بينها وبين أي فئة أخرى.
نموذج ثلاثي التصنيفات يُصنّف الصور إلى قطط وكلاب وأرانب، يُنتج شبكة 3×3. إذا كانت الخلية في الصف "قطط"، العمود "كلاب" تحتوي على 12، فهذا يعني أن 12 صورة لقطط صُنّفت ككلاب. هذا المستوى من التفصيل هو ما يجعل المصفوفة أكثر فائدة من النتيجة: فهي تُحدّد زوج التصنيفات الذي لا يستطيع النموذج فصله.
يتم تعريف الدقة والاستدعاء ومقياس F1 لكل فئة باستخدام منظور "واحد مقابل الباقي"، حيث تكون الفئة المعنية هي الفئة الموجبة، وكل ما عداها سلبي. ثم يتم دمج قيم كل فئة بإحدى ثلاث طرق:
- المتوسط الكلي: يحسب المقياس لكل فئة على حدة، ثم يأخذ المتوسط غير المرجح. كل فئة لها نفس الأهمية، لذلك لا يتم تجاهل الفئات النادرة.
- المتوسط الجزئي: يتم تجميع عدد النتائج الإيجابية الصحيحة (TP) والنتائج الإيجابية الخاطئة (FP) والنتائج السلبية الخاطئة (FN) عبر جميع الفئات قبل حساب المقياس. تهيمن الفئات الكبيرة، وبالنسبة لمشاكل التصنيف الفردي، تكون الدقة الجزئية والاستدعاء الجزئي والدقة متطابقة.
- المتوسط المرجح: يقوم بحساب متوسط درجات كل فئة باستخدام عدد الحالات الحقيقية لكل فئة كوزن، مما يحافظ على عدم توازن الفئات مرئيًا.
اختر الماكرو عندما تكون كل فئة مهمة بنفس القدر، واختر الموزون عندما يعكس توزيع الفئات حركة المرور الحقيقية.
كيفية إنشاء مصفوفة الارتباك في Python
تقوم مكتبة scikit-learn بإنشاء الجدول بأكمله من مصفوفتين للتصنيفات، لذا لا حاجة للعد اليدوي. يقارن المثال أدناه عشرة تصنيفات صحيحة بعشرة تنبؤات.
from sklearn.metrics import confusion_matrix y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0] cm = confusion_matrix(y_true, y_pred) print(cm)
تُرجع هذه العملية مصفوفة NumPy بحجم 2×2 حيث يمثل الصف 0 الفئة السلبية الفعلية ويمثل الصف 1 الفئة الإيجابية الفعلية:
[[4 1] [1 4]]
بقراءة المصفوفة وفقًا لاتفاقية مكتبة scikit-learn، نحصل على القيم التالية: TN = 4 (أعلى اليسار)، FP = 1 (أعلى اليمين)، FN = 1 (أسفل اليسار)، وTP = 4 (أسفل اليمين). يؤدي فك هذه القيم الأربع في سطر واحد إلى إنشاء الخريطة.ping صريح:
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
للحصول على الدقة والاستدعاء وF1 لكل فئة في وقت واحد، بما في ذلك المتوسطات الكلية والمرجحة الموضحة أعلاه، اتصل بـ classification_report() بدلاً من حساب كل مقياس يدويًا:
from sklearn.metrics import classification_report print(classification_report(y_true, y_pred))
للحصول على نسخة مرسومة، ConfusionMatrixDisplay.from_predictions(y_true, y_pred) يعرض الجدول نفسه كخريطة حرارية مُصنّفة. قائمة الوسائط الكاملة، بما في ذلك labels و normalize الخيارات موثقة في مرجع مصفوفة الارتباك في مكتبة scikit-learnتنطبق خطوة التقييم نفسها على النماذج المبنية باستخدام TensorFlow، لأن المقياس يعتمد فقط على التصنيفات المتوقعة.
لماذا تحتاج مصفوفة الارتباك؟
فيما يلي مزايا وفوائد استخدام مصفوفة الارتباك.
- يوضح ذلك كيف يصبح نموذج التصنيف مرتبكًا عندما يقوم بالتنبؤات.
- تمنحك مصفوفة الارتباك نظرة ثاقبة ليس فقط على الأخطاء التي يرتكبها المصنف الخاص بك، ولكن أيضًا على أنواع الأخطاء التي يرتكبها.
- يساعدك هذا التحليل على التغلب على قصور استخدام دقة التصنيف وحدها.
- يمثل كل عمود في مصفوفة الارتباك مثيلات تلك الفئة المتوقعة.
- يمثل كل صف من مصفوفة الارتباك مثيلات الفئة الفعلية.
- إنها تحول تقييم النموذج إلى تشخيص، يشير إلى زوج الفئات المحدد الذي يحتاج إلى مزيد من البيانات أو ميزة أفضل.
تكمن أهمية مصفوفة الارتباك التشخيصية في كونها محور مرحلة التقييم في أي علم البيانات سير العمل، ولماذا عادةً ما يكون الجدول الأول الذي تتم مراجعته قبل ترقية المصنف إلى مرحلة الإنتاج.


