كيفية حساب معامل ارتباط ماثيوز في R
تُعد عملية تقييم أداء نماذج التصنيف الإحصائي وخوارزميات التعلم الآلي ركيزة جوهرية في البحث العلمي التطبيقي، حيث يتوقف نجاح النماذج التنبؤية على مدى دقة وموثوقية المقاييس المستخدمة في قياس كفاءتها التمييزية. في العديد من السيناريوهات الواقعية—بدءاً من التشخيص الطبي واكتشاف الأمراض النادرة، ووصولاً إلى كشف الاحتيال المالي والتنبؤ بالأزمات النفسية والسلوكية—تواجه المقاييس التقليدية الشائعة مثل مقياس الدقة الإجمالية (Overall Accuracy) أو حتى مقياس F1-Score تحديات منهجية بالغة التعقيد، ناتجة أساساً عن مشكلة اختلال توازن الفئات (Class Imbalance). يؤدي هذا الاختلال إلى تضليل الباحثين وإعطاء انطباعات خادعة حول جودة النموذج، مما يستوجب الاعتماد على مقاييس أكثر متانة واتزاناً من الناحية الرياضية والإحصائية.
يبرز معامل ارتباط ماثيوز (Matthews Correlation Coefficient – MCC) كأحد أكثر المقاييس شمولاً واتزاناً في تقييم نماذج التصنيف الثنائي والمتعدد؛ إذ يتميز بدمجه لكافة خلايا مصفوفة الارتباك الأربعة (الإيجابيات الحقيقية، السلبيات الحقيقية، الإيجابيات الخاطئة، والسلبيات الخاطئة) في معادلة متناسقة هندسياً وإحصائياً. على عكس المقاييس التي تتجاهل السلبيات الحقيقية أو تتأثر بحجم الفئة السائدة، يقدم معامل ماثيوز تقييماً دقيقاً ومحايداً يعكس التوافق الحقيقي بين التصنيفات الفعلية والتنبؤية، مما يجعله المعيار الذهبي في بيئات تحليل البيانات الإحصائية الحيوية والحوسبة الطبية الحيوية والقياس النفسي المتقدم.
تهدف هذه المقالة المرجعية الموسعة إلى تقديم دليل أكاديمي وتطبيقي شامل حول كيفية فهم واشتقاق وحساب معامل ارتباط ماثيوز في بيئة الحوسبة الإحصائية لغة R. سنتناول في هذا الدليل التأصيل النظري والرياضي للمعامل، وتحليل سلوكه الإحصائي مقارنة بالمقاييس الأخرى، وتوضيح كيفية برمجته من الصفر باستخدام دوال لغة R الأساسية (Base R)، فضلاً عن استعراض استخدام الحزم المتخصصة مثل mltools وyardstick وcaret وDescTools. كما يتضمن المقال تطبيقات عملية متقدمة لتحسين عتبات التصنيف، وإدارة الحالات متعددة الفئات، وحساب فترات الثقة عبر تقنيات إعادة التعيين (Bootstrapping)، مع تقديم أفضل الممارسات المنهجية لتوثيق وتفسير النتائج وفق المعايير الأكاديمية الصارمة.
- 1. مقدمة تأسيسية لمعامل ارتباط ماثيوز (Matthews Correlation Coefficient – MCC)
- 2. الأسس الرياضية والإحصائية لبناء معادلة معامل ارتباط ماثيوز
- 3. أهمية معامل ماثيوز في معالجة إشكالية البيانات غير المتوازنة
- 4. مقارنة تفصيلية بين معامل ماثيوز ومقاييس الأداء الكلاسيكية الأخرى
- 5. إعداد بيئة العمل البرمجية في لغة R وحزم التحليل الإحصائي ذات الصلة
- 6. الحساب اليدوي والبرمجي لمعامل ماثيوز من الصفر باستخدام Base R
- 7. استخدام الحزم المتخصصة لحساب معامل ماثيوز في R (mltools و yardstick)
- 8. تطبيق عملي: حساب معامل ماثيوز لنموذج الانحدار اللوجستي في R
- 9. تطبيق متقدم: حساب معامل ماثيوز في مهام التصنيف متعدد الفئات (Multiclass MCC)
- 10. تفسير القيم الإحصائية لمعامل ماثيوز وربطها بالسياق التطبيقي والبحثي
- 11. الأخطاء الشائعة واستكشاف المشكلات وإصلاحها عند حساب MCC في R
- 12. أفضل الممارسات المنهجية لتوثيق وعرض نتائج MCC في الأوراق العلمية والتقارير
- الخاتمة والتوصيات العامة
- References
1. مقدمة تأسيسية لمعامل ارتباط ماثيوز (Matthews Correlation Coefficient – MCC)
1.1 الخلفية التاريخية والتعريف النظري للمقياس
تعود الجذور التاريخية لمعامل ارتباط ماثيوز إلى عام 1975، عندما ابتكره عالم الكيمياء الحيوية براين ماثيوز (Brian W. Matthews) بهدف تقييم ومقارنة دقة الخوارزميات التنبؤية بالبنية الثانوية للبروتينات (Protein Secondary Structure Prediction). في تلك الحقبة، كانت الأساليب المتاحة تعاني من تباين هائل في توزيع البنيات الببتيدية بين مناطق الصفائح وحلزونات ألفا والمناطق غير المنتظمة، مما جعل مقاييس المطابقة البسيطة غير قادرة على التمييز بين التنبؤ العلمي الدقيق والتخمين الممنهج المبني على تكرار الفئة الأكثر شيوعاً في قواعد البيانات الحيوية.
مع التطور المتسارع لعلم الأحياء الحاسوبي والإحصاء الحيوي، انتقل المقياس تدريجياً إلى مجالات التعلم الآلي، واسترجاع المعلومات، وعلوم البيانات السريرية، والقياس النفسي الحاسوبي. استند ماثيوز في بنائه النظري إلى نظرية الارتباط الإحصائي التقليدية، وتحديداً معامل ارتباط فاي (Phi Coefficient) الذي صاغه كارل بيرسون لدراسة الاقتران بين متغيرين ثنائيين اسميين. بناءً على ذلك، يُعرّف معامل ماثيوز إحصائياً بأنه مقياس للارتباط الخطي الثنائي بين قيمتين حرجتين: متجهات التصنيف الفعلي (Ground Truth) ومتجهات التصنيف التنبؤي (Model Predictions).
تتجلى القوة المنهجية لمعامل ماثيوز في كونه لا يستثني أي خلية من خلايا مصفوفة الارتباك (Confusion Matrix)؛ فهو يعتمد اعتماداً كلياً وتزامناً على الإيجابيات الحقيقية (True Positives)، والسلبيات الحقيقية (True Negatives)، والإيجابيات الخاطئة (False Positives)، والسلبيات الخاطئة (False Negatives). هذا الاعتماد التكاملي يضمن عدم إمكانية حصول أي نموذج على تقييم مرتفع ما لم يثبت جدارته في التنبؤ بكلا الفئتين (الإيجابية والسلبية) بنجاح متوازن، وهو ما يميزه جوهرياً عن المقاييس الجزئية التي قد تركز على فئة واحدة وتهمل الأخرى.
1.2 طبيعة المقياس ومجال قيمه الإحصائية
يتخذ معامل ارتباط ماثيوز سلوكاً قياسياً متطابقاً مع معاملات الارتباط البيرسونية الكلاسيكية، حيث يمتد مجاله الإحصائي في النطاق المستمر المحصور بين -1.0 و +1.0. يتيح هذا النطاق المعياري للباحثين والمحللين قراءة النتائج وتفسير جودة النماذج بسهولة استناداً إلى المنطق الإحصائي المألوف للعلاقات التبادلية، مما يمنحه ميزة تفسيرية مباشرة تتجاوز حدود المقاييس المحصورة بين 0 و 1.
تشير القيمة +1.0 إلى وجود تطابق تام ومثالي بين تنبؤات النموذج الرياضي والبيانات الواقعية الفعلية؛ أي أن النموذج استطاع تصنيف جميع الحالات الإيجابية كإيجابيات حقيقية، وجميع الحالات السلبية كسلبيات حقيقية، دون ارتكاب أي خطأ من النوع الأول أو الثاني (FP = 0 و FN = 0). في المقابل، تعكس القيمة 0.0 انعدام القدرة التمييزية للنموذج بالكامل، وهو ما يماثل أداء التخمين العشوائي المستند إلى رمي قطعة نقدية، حيث لا يوجد أي ارتباط حقيقي أو اعتمادي بين مخرجات الخوارزمية والفئات الفعلية للملاحظات الخاضعة للدراسة.
أما القيمة -1.0 فتمثل التناقض التام والانعكاس الكلي للمصفوفة التنبؤية؛ حيث تنبأ النموذج بجميع الحالات الإيجابية على أنها سلبية، وبجميع الحالات السلبية على أنها إيجابية (TP = 0 و TN = 0). من الناحية النظرية، يحمل النموذج الذي يحقق قيمة تقترب من -1.0 قدرة إخبارية كامنة كاملة ولكنها معكوسة، بحيث يمكن تحويله إلى مصنف مثالي بمجرد عكس قراراته الفئوية، وهي خاصية رياضية فريدة لا توفرها المقاييس النسبية أحادية الاتجاه.
1.3 دواعي استخدام معامل ماثيوز في النمذجة التنبؤية
تنبع الضرورة المنهجية لاستخدام معامل ماثيوز من قصور المقاييس التقليدية في مواجهة ظاهرة تُعرف باسم مفارقة الدقة (Accuracy Paradox). تتجلى هذه المفارقة بوضوح في العينات غير المتوازنة؛ فعلى سبيل المثال، إذا كانت نسبة حدوث مرض معين هي 1% في عينة بحثية قوامها 10,000 مريض، فإن نموذجاً ساذجاً يقوم بالتنبؤ الدائم بعدم وجود المرض لجميع الأفراد سيحقق دقة إجمالية تبلغ 99%. على الرغم من هذه النسبة المرتفعة خادعة الظاهر، إلا أن النموذج يُعتبر فاشلاً تماماً من الناحية العملية لعدم قدرته على اكتشاف أي حالة مصابة، وهنا يظهر MCC بقيمة مساوية للصفر أو غير معرفة ليكشف الانهيار التام لكفاءة النموذج.
علاوة على ذلك، يقدم معامل ماثيوز صورة متكاملة ومحايدة لجودة التنبؤ دون أي تحيز مسبق نحو الفئة الأكثر تكراراً (Majority Class) أو الفئة الأقل تكراراً (Minority Class). إن معظم مقاييس تقييم النماذج الشائعة تُعطي وزناً غير متكافئ لأحد أطراف المصفوفة، بينما يفرض التركيب الهندسي لمعامل ماثيوز عقاباً رياضياً صارماً للنماذج التي تُضحي بالدقة في إحدى الفئات لتحقيق مكاسب رقمية زائفة في فئة أخرى.
يوفر المعامل أيضاً لعلماء البيانات والإحصائيين معياراً موحداً وموثوقاً لإجراء المقارنات المرجعية (Benchmarking) بين الخوارزميات الإحصائية المتنوعة، مثل نماذج الانحدار اللوجستي، وغابات القرارات العشوائية (Random Forests)، وشبكات التعلم العميق (Deep Neural Networks)، وآلات المتجهات الداعمة (Support Vector Machines). يتيح هذا التوحيد القياسي المفاضلة الموضوعية بين النماذج دون الحاجة للقلق حول حساسية التقييم لتغير نسب الانتشار للفئات المستهدفة عبر مجموعات البيانات المختلفة.

2. الأسس الرياضية والإحصائية لبناء معادلة معامل ارتباط ماثيوز
2.1 تفكيك عناصر مصفوفة الارتباك (Confusion Matrix)
لفهم الأساس الرياضي لمعامل ماثيوز، يجب تفكيك مصفوفة الارتباك الثنائية (2×2 Confusion Matrix) إلى عناصرها الهيكلية الأربعة التي تصف كافة الاحتمالات المتقاطعة بين الواقع الموضوعي وقرار المصنف الإحصائي. تتألف هذه العناصر من:
- الإيجابيات الحقيقية (True Positives – TP): يمثل هذا العنصر عدد الملاحظات التي تنتمي في الأصل للحدث الإيجابي (مثل وجود المرض أو حدوث الاحتيال) والتي نجح النموذج التنبؤي في تصنيفها بدقة كحالات إيجابية. يعكس هذا الرقم قدرة النموذج على الاسترجاع والاكتشاف الدقيق.
- السلبيات الحقيقية (True Negatives – TN): يشير إلى عدد الملاحظات التي تنتمي للفئة السلبية في الواقع (مثل الأفراد الأصحاء أو المعاملات المالية السليمة) وتم تصنيفها من قبل النموذج بنجاح كحالات سلبية. يعبر هذا العنصر عن متانة النموذج في استبعاد الحالات غير المستهدفة وتفادي الإنذارات الكاذبة.
- الإيجابيات الخاطئة (False Positives – FP): تُعرف إحصائياً بأخطاء النوع الأول (Type I Error) أو ألفا؛ وهي الحالات السلبية في الأصل التي أخطأ النموذج وصنفها كحالات إيجابية. يترتب على هذه الأخطاء هدر في الموارد وإجراءات تشخيصية أو رقابية غير ضرورية.
- السلبيات الخاطئة (False Negatives – FN): تُعرف إحصائياً بأخطاء النوع الثاني (Type II Error) أو بيتا؛ وهي الحالات الإيجابية فعلياً التي فشل النموذج في كشفها وصنفها كحالات سلبية. تُعد هذه الأخطاء الأكثر خطورة في السياقات الطبية والأمنية نظراً لتبعات تجاهل الحالات الحرجة.
تتكامل هذه المكونات الأربعة لتشكل فضاء العينة الكامل المساوي لحجم العينة الإجمالي N = TP + TN + FP + FN، وتشكل اللبنات الأساسية التي تُبنى عليها كافة التحليلات التوافقية والاشتقاقات الإحصائية للارتباط الثنائي.
2.2 الصياغة الرياضية للمعادلة وتحليل حدودها
تُصاغ المعادلة الرياضية القياسية لحساب معامل ارتباط ماثيوز لحالات التصنيف الثنائي وفق الصيغة الجبرية التالية:
MCC = (TP × TN – FP × FN) / √((TP + FP)(TP + FN)(TN + FP)(TN + FN))
عند تحليل هذه المعادلة بنيوياً، نجد أن البسط (TP × TN – FP × FN) يمثل الفرق بين حاصل ضرب القرارات الصحيحة (القطر الرئيسي للمصفوفة) وحاصل ضرب القرارات الخاطئة (القطر المعاكس). إذا كان أداء النموذج متفوقاً، فإن حاصل ضرب القرارات الصحيحة يتجاوز بكثير حاصل ضرب الأخطاء، مما يجعل البسط موجباً وكبيراً. وإذا تساوى حاصل الضربين، يصبح البسط صفراً دلالة على انعدام الارتباط التمييزي، بينما يؤدي طغيان الأخطاء إلى جعل البسط سالباً.
أما المقام √((TP + FP)(TP + FN)(TN + FP)(TN + FN))، فهو يمثل المتوسط الهندسي أو الانحراف المعياري المشترك للأحجام الهامشية (Marginal Totals) لمصفوفة الارتباك الأربعة: إجمالي التنبؤات الإيجابية (TP + FP)، وإجمالي الحالات الإيجابية الفعلية (TP + FN)، وإجمالي التنبؤات السلبية (TN + FN)، وإجمالي الحالات السلبية الفعلية (TN + FP). يعمل هذا المقام كعامل معايرة وتقييس يضمن حصر النتيجة بدقة تامة ضمن المجال المغلق [-1, +1]، بغض النظر عن الحجم المطلق للعينة المدروسة.
تطرأ في بعض الحالات الخاصة إشكالية رياضية تتمثل في القسمة على صفر، وذلك عندما يكون أحد المجاميع الهامشية الأربعة مساوياً للصفر تماماً (على سبيل المثال، عندما يتنبأ النموذج بأن جميع الحالات إيجابية دون إصدار تنبؤ سلبي واحد، فيكون TN + FN = 0). في هذه الحالة، يصبح المقام صفراً، ويتم تعريف قيمة المعامل اصطلاحياً ورياضياً بالقيمة 0، مما يعكس عجز النموذج عن التمييز وانهيار بنيته التصنيفية لغياب التباين في أحد المتغيرات الهامشية.
2.3 العلاقة الهندسية والإحصائية مع معامل فاي وكاي تربيع
يمتلك معامل ماثيوز تماثلاً رياضياً تاماً مع معامل ارتباط فاي (Phi Coefficient) المخصص لجداول الاقتران الرباعية (2×2 Contingency Tables). في نظرية الاحتمالات الرياضية، إذا قمنا بتمثيل التصنيف الفعلي كمتغير عشوائي ثنائي Y والتصنيف التنبؤي كمتغير عشوائي ثنائي Ŷ، فإن معامل ماثيوز يتطابق بنيوياً مع معامل ارتباط بيرسون الخطي بين المتغيرين:
MCC = Cov(Y, Ŷ) / (σY × σŶ) = φ
يرتبط معامل ماثيوز برباط عضوي وثيق مع إحصاء كاي تربيع (Chi-Square Test – χ²) للاستقلال التوافقي. في جداول الاقتران 2×2، يمكن التعبير عن العلاقة بين المعامل وإحصاء كاي تربيع بالمعادلة الحسابية المباشرة:
|MCC| = √(χ² / N) أو χ² = N × MCC²
حيث تمثل N حجم العينة الإجمالي. تتيح هذه العلاقة للباحثين ليس فقط قياس حجم التأثير وقوة الارتباط التنبؤي من خلال MCC، بل وأيضاً اختبار الدلالة الإحصائية (Statistical Significance) للمعامل بدقة فائقة؛ حيث يمكن تقييم ما إذا كانت قيمة MCC تختلف معنوياً عن الصفر من خلال مقارنة قيمة N × MCC² بتوزيع كاي تربيع بدرجة حرية واحدة (df = 1) عند مستوى دلالة محدد (مثل α = 0.05).
3. أهمية معامل ماثيوز في معالجة إشكالية البيانات غير المتوازنة
3.1 مشكلة عدم توازن الفئات (Imbalanced Datasets)
تُمثل ظاهرة عدم توازن الفئات التوزيع غير المتكافئ للملاحظات بين الطبقات الإحصائية المستهدفة، وهي السمة الغالبة على المشكلات الواقعية المعقدة. ففي مجالات مثل الكشف عن الاختراقات السيبرانية، أو تشخيص الأورام السرطانية المبكرة، أو التنبؤ بحدوث الأعطال الميكانيكية المفاجئة في الأقمار الصناعية، نجد أن الفئة المستهدفة (الإيجابية) لا تشكل في كثير من الأحيان سوى 0.1% إلى 5% من مجموع البيانات الكلي، بينما تستحوذ الفئة الطبيعية (السلبية) على الأغلبية الساحقة.
تؤدي هذه الظاهرة إلى إخفاق المقاييس الوصفية الساذجة؛ حيث تعاني الدقة البسيطة (Accuracy) من خلل جوهري يجعلها تفضل النماذج المنحازة تماماً للفئة الأكثر تكراراً. إن مثل هذا الانحياز يخلق خطراً جسيماً في النظم الإحصائية الطبية والقرارات المصيرية؛ حيث قد يقدم النموذج معدلات دقة إجمالية تفوق 99% في حين أنه يعجز عن إنقاذ مريض واحد، مما يؤدي إلى نتائج كارثية إن تم الاعتماد على مثل هذه المقاييس دون تمحيص رياضي دقيق.
3.2 دراسة حالة نظرية: مقارنة عددية توضيحية
لتوضيح التفوق التحليلي لمعامل ماثيوز، نفترض دراسة حالة سريرية لتقييم أداة فحص مبكر لمرض مناعي نادر، حيث تبلغ نسبة انتشار المرض في المجتمع المدروس 5% ضمن عينة مكونة من 1,000 فرد. تتوزع الحالات الفعلية إلى 50 حالة إيجابية (مصابة) و 950 حالة سلبية (سليمة). لنفترض أن نموذجاً تصنيفياً ساذجاً أو خوارزمية غير فعالة قامت بتوقع أن جميع الأفراد البالغ عددهم 1,000 أصحاء (أي توقعت الفئة السلبية دائماً)، باستثناء حالة واحدة تنبأت بها كإيجابية خاطئة.
تكون عناصر مصفوفة الارتباك الناتجة كالتالي:
- TP = 0 (لم يكتشف أي مصاب)
- FP = 1 (حالة واحدة سليمة تم تصنيفها كإصابة خطأً)
- TN = 949 (تم تصنيف 949 حالة سليمة بشكل صحيح)
- FN = 50 (فشل في اكتشاف كافة المصابين الخمسين)
إذا قمنا بحساب مقياس الدقة الإجمالية التقليدي لهذا النموذج:
Accuracy = (TP + TN) / N = (0 + 949) / 1000 = 0.949 (أي 94.9%)
يُظهر هذا الرقم المرتفع كفاءة وهمية مضللة توحي بأن المصنف ممتاز ويقارب 95% دقة.
في المقابل، عند حساب معامل ارتباط ماثيوز:
MCC = ((0 × 949) – (1 × 50)) / √((0 + 1)(0 + 50)(949 + 1)(949 + 50))
MCC = (0 – 50) / √(1 × 50 × 950 × 999) = -50 / √(47,452,500) = -50 / 6888.58 ≈ -0.0072
تُظهر القيمة الناتجة (-0.0072) بوضوح تام، وقربها المطلق من الصفر، أن النموذج عديم الفائدة تماماً، ولا يمتلك أي قدرة تنبؤية تمييزية. يكشف هذا التباين الشاسع بين الدقة البسيطة ومعامل ماثيوز مدى قوة المعامل في فضح الانهيار الهيكلي للنماذج غير المتوازنة وتجنيب الباحثين الوقوع في فخ التفسيرات الخاطئة.
3.3 الحيادية التناظرية لمعامل ماثيوز
تتمثل إحدى أهم السمات المنهجية لمعامل ماثيوز في خاصية “الحيادية التناظرية” (Symmetric Invariance). تعني هذه الخاصية أن قيمة المقياس تظل ثابتة تماماً وغير متغيرة رياضياً إذا ما قرر الباحث تبديل التسمية الاصطلاحية للفئات؛ أي اعتبار الفئة السلبية إيجابية والفئة الإيجابية سلبية، أو تبديل محاور المصفوفة من خلال عكس المتغير التنبؤي والفعلي.
في العديد من المقاييس الأخرى، مثل مقياس الحساسية (Sensitivity) أو الدقة الإيجابية (Precision) أو مقياس F1-Score، يؤدي تغيير تعريف الفئة المستهدفة من “وجود المرض” إلى “غياب المرض” إلى تغير جذري وشامل في قيمة المؤشر الرقمي، مما يجعله مقياساً ذاتياً يعتمد على وجهة نظر المحلل واختياره للفئة المرجعية. على النقيض من ذلك، يعامل معامل ماثيوز كلاً من الإيجابيات والسلبيات بتكافؤ تام، مما يحفظ للمقياس موضوعيته وثباته التحليلي الشامل بغض النظر عن الاصطلاحات الاسمية المستخدمة في النمذجة.
4. مقارنة تفصيلية بين معامل ماثيوز ومقاييس الأداء الكلاسيكية الأخرى
4.1 مقارنة MCC مع مقياس F1-Score
يُعد مقياس F1-Score من أكثر المقاييس شيوعاً في تقييم نماذج التعلم الآلي عند التعامل مع البيانات غير المتوازنة، حيث يُعرّف بأنه المتوسط التوافقي (Harmonic Mean) بين الدقة الإيجابية (Precision) ومعدل الاسترجاع أو الحساسية (Recall):
F1 = 2 × (Precision × Recall) / (Precision + Recall) = 2TP / (2TP + FP + FN)
على الرغم من انتشار F1-Score الواسع، إلا أنه يعاني من عيب هيكلي يتمثل في تجاهله التام والمطلق لعنصر السلبيات الحقيقية (TN). لا يدخل هذا العنصر في حساب الدقة التوافقية لـ F1 بأي شكل من الأشكال، مما يجعله أعمى عن قدرة النموذج على تصنيف الفئات السلبية بدقة. بالتالي، إذا قام نموذج بتصنيف ملايين الحالات السلبية بطريقة عشوائية مليئة بالأخطاء ولكن نجح في التقاط الإيجابيات بنسبة جيدة مع ضبط نسبي للـ FP، فقد يحصل على درجة F1 مقبولة ومضللة.
في المقابل، يشترط معامل ماثيوز أن يحقق النموذج أداءً متميزاً في كلا القطبين (TP و TN معاً). وقد أثبتت الدراسات المقارنة المحكمة، مثل دراسة Chicco & Jurman (2020)، أن MCC يتفوق بشكل قاطع على F1-Score في موثوقية التقييم الحيوي والطبي، ويُعد أكثر صدقاً في كشف نقاط الضعف الخفية للنماذج الرياضية.
4.2 مقارنة MCC مع المساحة تحت منحنى ROC (AUC-ROC)
يمثل مقياس المساحة تحت منحنى خصائص التشغيل للمستقبل (AUC-ROC) معياراً تقييمياً شائعاً يقيس قدرة النموذج على التمييز عبر كافة عتبات التصنيف المحتملة (Threshold-Independent Metric). يتم ذلك من خلال رسم العلاقة البيانية بين المعدل الإيجابي الحقيقي (الحساسية) والمعدل الإيجابي الخاطئ (1 – النوعية) عند تغير عتبات الاحتمال من 0 إلى 1.
ومع ذلك، يميل مقياس AUC-ROC إلى التفاؤل المفرط وغير الواقعي عند التعامل مع البيانات التي تعاني من اختلال هائل في التوازن؛ نظراً لأن المقام في حساب المعدل الإيجابي الخاطئ (FP / (FP + TN)) يحتوي على عدد هائل من السلبيات الحقيقية (TN)، مما يجعل هذا المعدل صغيراً جداً حتى مع وجود عدد كبير من الإيجابيات الخاطئة، مما يدفع المنحنى للأعلى ويعطي قيمة AUC مرتفعة قد تتجاوز 0.90 لنموذج ذي أداء عملي متواضع.
على النقيض من ذلك، يقيس معامل ماثيوز جودة النموذج عند عتبة قرار محددة بدقة (Threshold-Dependent)، ويُعاقب بشدة على وجود أي إيجابيات خاطئة دون أن يسمح لكثرة السلبيات الحقيقية بطمس ذلك الخلل. لذا، فإن الجمع بين دراسة منحنى ROC وتحديد النقطة المثلى بالاعتماد على تعظيم قيمة MCC يمثل المنهجية الفضلى لتقييم المصنفات الإحصائية تقييماً شاملاً وعادلاً.
4.3 مقارنة MCC مع معامل كوهين كابا (Cohen’s Kappa)
صُمم معامل كوهين كابا (Cohen’s Kappa – κ) أساساً في مجال القياس النفسي لتقييم مدى الاتفاق بين ملاحظين أو مقيمين اثنين (Inter-rater Agreement)، مع تصحيح نسبة الاتفاق الملاحظ استناداً إلى الاتفاق المتوقع بالصدفة البحتة. انتقل هذا المقياس لاحقاً إلى تقييم التعلم الآلي باعتبار النموذج التنبؤي بمثابة مقيم ثانٍ يُقارن بالواقع الفعلي كـ مقيم أول.
بالرغم من الفوائد التحليلية لمعامل كابا، إلا أنه يعاني مما يُعرف في الأدبيات الإحصائية باسم مفارقة كابا (Kappa Paradox). تحدث هذه المفارقة عندما يكون التوزيع الهامشي للبيانات غير متساوٍ بشدة، حيث ينتج عن ذلك قيم منخفضة للغاية وغير مبررة لمعامل كابا على الرغم من وجود مستويات اتفاق ومطابقة تصنيفية عالية جداً بين التنبؤ والواقع، مما يصعّب عملية تفسيرها أو مقارنتها عبر مجموعات بيانات مختلفة.
يتفوق معامل ماثيوز رياضياً على معامل كابا في سياقات النمذجة التنبؤية؛ حيث يستند MCC إلى إطار الارتباط الإحصائي المتماسك والمشتق مباشرة من جداول التوافق، متجنباً التقديرات المعيبة لاحتمالات الصدفة التي يفرضها كابا، مما يجعله أكثر استقراراً وقوة من الناحية الاستدلالية في البيئات التجريبية والرقابية الصارمة.
5. إعداد بيئة العمل البرمجية في لغة R وحزم التحليل الإحصائي ذات الصلة
5.1 تجهيز بيئة RStudio وإدارة الحزم الإحصائية
تُعد لغة R البيئة البرمجية القياسية الأكثر موثوقية لإجراء التحليلات الإحصائية المتقدمة والنمذجة الحيوية، بفضل بنيتها الرياضية الموجهة للمتجهات ودعمها الواسع للاستدلال الإحصائي. قبل البدء في حساب معامل ماثيوز وبناء النماذج، يجب التأكد من تحديث بيئة العمل عبر تثبيت أحدث إصدار من مترجم R وبيئة التطوير التفاعلية RStudio لضمان توافق الحزم وتفادي التعارضات البرمجية.
لتثبيت الحزم الأساسية المتخصصة في حساب المقاييس وإدارة النمذجة، نستخدم أمر التثبيت القياسي داخل سطر الأوامر في R كما يلي:
install.packages(c("mltools", "yardstick", "caret", "DescTools", "tibble", "dplyr", "ggplot2", "boot", "microbenchmark"))
لضمان إمكانية إعادة الإنتاجية العلمية (Reproducibility) للنتائج والأرقام والمحاكاة عبر الأجهزة والباحثين المختلفين، يجب دوماً تثبيت البذور العشوائية للمولد الرقمي في بداية الكود البرمجي باستخدام الدالة الأساسية:
set.seed(12345)
5.2 استعراض المكتبات المتخصصة بحساب مقاييس التصنيف في R
توفر منظومة R البيئية عدداً من الحزم القوية التي تقدم دوالاً برمجية متطورة لحساب معامل ارتباط ماثيوز، وتتميز كل حزمة بخصائص فريدة تخدم أغراضاً تحليلية محددة:
- حزمة mltools: تُعد من أبسط وأسرع الحزم المتخصصة في تقييم خوارزميات التعلم الآلي. تحتوي على دالة
mcc()التي تتميز بقدرتها على التعامل مع المتجهات المباشرة، ومصفوفات الارتباك، والحالات متعددة الفئات بكفاءة حسابية فائقة. - حزمة yardstick: تمثل الذراع التقييمية الرسمية لمنظومة tidymodels الحديثة. تقدم الدالة
mcc()المتوافقة مع أطر البيانات المنسقة (Tibbles) والأنابيب البرمجية (Pipes%>%أو|>)، مما يجعلها الخيار الأنسب لبيئات العمل الحديثة وتحليل البيانات المنظم. - حزمة caret: الحزمة الكلاسيكية الأوسع انتشاراً لإدارة تدريب وتقييم النماذج في R. توفر دالة
confusionMatrix()الشاملة التي تستخرج مصفوفة الارتباك المفصلة وكافة المؤشرات الإحصائية المرتبطة بها. - حزمة DescTools: مكتبة إحصائية غنية بالتحليلات الوصفية المتقدمة ومقاييس الارتباط اللامعلمية. تحتوي على دالة
MatthewsCor()التي تتيح حساب المعامل وتقدير فترات الثقة المقترنة به بدقة رياضية عالية.
5.3 هيكلة البيانات وتحويلها إلى أشكال برمجية متوافقة
تتطلب خوارزميات ودوال التقييم في R ضبطاً دقيقاً لنوعية وهيكلة البيانات المدخلة؛ إذ تُعد الأخطاء الناتجة عن عدم تطابق أنواع البيانات من أكثر المشكلات شيوعاً بين الباحثين. يجب التأكد دائماً من تحويل المتغيرات المستهدفة (القيم الفعلية والتنبؤية) إلى عوامل تصنيفية (Factors) ذات مستويات محددة بوضوح.
يتم ضبط العوامل وتحديد المستوى المرجعي (Reference Level) الذي يمثل الفئة الإيجابية في التحليل باستخدام الأوامر التالية:
actual <- factor(c(1, 1, 0, 1, 0, 0, 1, 0), levels = c(1, 0))
predicted <- factor(c(1, 0, 0, 1, 0, 1, 1, 0), levels = c(1, 0))
من الضروري فحص وجود أي قيم مفقودة (Missing Values – NA) ومعالجتها قبل تمرير المتجهات لدوال التقييم؛ حيث تؤدي القيم المفقودة إما إلى إرجاع نتيجة غير معرفة أو التسبب في توقف تنفيذ الكود. كما يجب التحقق التام من تطابق أطوال متجهات التنبؤ مع متجهات القيم الفعلية لضمان صحة المقارنة المتقاطعة.
6. الحساب اليدوي والبرمجي لمعامل ماثيوز من الصفر باستخدام Base R
6.1 استخراج عناصر مصفوفة الارتباك عبر دوال R الأساسية
يُعد بناء مصفوفة الارتباك واستخراج عناصرها الأربعة باستخدام الدوال الأساسية للغة R خطوة تأسيسية تمكن الباحث من فهم الميكانيكية الدقيقة للحسابات وتمنحه تحكماً كاملاً في العمليات الإحصائية دون الاعتماد على مكتبات وسيطة. نستخدم الدالة الأساسية table() لتوليد مصفوفة التوافق التكراري المتقاطعة:
# إنشاء بيانات افتراضية
actual <- factor(c(1, 1, 0, 1, 0, 0, 1, 0, 1, 0), levels = c(1, 0))
predicted <- factor(c(1, 0, 0, 1, 0, 1, 1, 0, 1, 0), levels = c(1, 0))
# إنشاء مصفوفة الارتباك
conf_matrix <- table(Actual = actual, Predicted = predicted)
print(conf_matrix)
لاستخراج القيم الفردية بدقة من المصفوفة عبر الفهرسة الرقمية المباشرة مع مراعاة المستويات (حيث يمثل المستوى 1 الفئة الإيجابية والمستوى 0 الفئة السلبية):
TP <- as.numeric(conf_matrix[1, 1]) # إيجابي حقيقي
FP <- as.numeric(conf_matrix[2, 1]) # إيجابي خاطئ
FN <- as.numeric(conf_matrix[1, 2]) # سلبي خاطئ
TN <- as.numeric(conf_matrix[2, 2]) # سلبي حقيقي
6.2 كتابة دالة مخصصة (Custom Function) لحساب MCC
يمكننا الآن صياغة دالة مخصصة قوية لحساب معامل ارتباط ماثيوز، مع مراعاة كافة الشروط الوقائية وإدارة الحالات الشاذة كاحتمالية القسمة على صفر عند انعدام التباين في التوقعات:
calculate_mcc_custom <- function(actual, predicted) {
# التحقق من تطابق الأطوال
if (length(actual) != length(predicted)) {
stop("خطأ: يجب أن يكون طول متجه القيم الفعلية مساوياً لطول متجه التنبؤات.")
}
# تحويل المدخلات إلى عوامل بنفس المستويات
lvls <- c(1, 0)
actual <- factor(actual, levels = lvls)
predicted <- factor(predicted, levels = lvls)
# استخراج جدول التوافق
cm <- table(actual, predicted)
TP <- as.numeric(cm[1, 1])
FP <- as.numeric(cm[2, 1])
FN <- as.numeric(cm[1, 2])
TN <- as.numeric(cm[2, 2])
# حساب البسط والمقام
numerator <- (TP * TN) - (FP * FN)
denominator <- sqrt((TP + FP) * (TP + FN) * (TN + FP) * (TN + FN))
# معالجة حالة القسمة على صفر
if (denominator == 0) {
return(0)
}
mcc <- numerator / denominator
return(mcc)
}
6.3 تطبيق الدالة على مثال رقمي تدريبي والتحقق من صحة المخرجات
لتطبيق الدالة المخصصة والتحقق من صحة حساباتها الرياضية مقارنة بالحل اليدوي، ننشئ تجربة تقييمية لعينة تحتوي على 100 حالة ذات توزيع غير متوازن:
# توليد بيانات اختبارية
set.seed(42)
test_actual <- sample(c(1, 0), size = 100, replace = TRUE, prob = c(0.2, 0.8))
# توليد تنبؤات ذات علاقة ارتباطية إيجابية مع الحقيقة
test_predicted <- ifelse(runif(100) < 0.75, test_actual, sample(c(1, 0), 100, replace = TRUE))
# حساب المعامل بالدالة المخصصة
custom_result <- calculate_mcc_custom(test_actual, test_predicted)
print(paste("قيمة معامل ماثيوز المحسوبة يدوياً:", round(custom_result, 4)))
لقياس الكفاءة الزمنية والبرمجية للدالة المكتوبة مقارنة بالدوال الجاهزة، يمكن استخدام حزمة microbenchmark لإجراء تقييم زمني دقيق للعمليات الحسابية المتجهة، حيث تثبت دوال Base R دائماً كفاءتها وخفتها البرمجية عند معالجة المصفوفات المتكررة في سياقات المحاكاة الضخمة (Monte Carlo Simulations).
7. استخدام الحزم المتخصصة لحساب معامل ماثيوز في R (mltools و yardstick)
7.1 الحساب باستخدام حزمة mltools
توفر حزمة mltools واحدة من أكثر الدوال البرمجية مباشرة ومرونة لحساب معامل ارتباط ماثيوز. تقبل دالة mcc() في هذه الحزمة متجهات التنبؤ ومتجهات الحقيقة، كما تتيح تمرير مصفوفات الارتباك مباشرة دون الحاجة لبيانات الملاحظات الفردية.
لحساب المعامل باستخدام الحزمة عبر المتجهات أو مصفوفات الارتباك:
library(mltools)
# الحساب عبر متجهات التنبؤ والقيم الفعلية
act_vec <- factor(c(1, 1, 0, 1, 0, 0, 1, 0, 1, 0))
pred_vec <- factor(c(1, 0, 0, 1, 0, 1, 1, 0, 1, 0))
mcc_val <- mltools::mcc(preds = pred_vec, actuals = act_vec)
print(paste("MCC من حزمة mltools:", round(mcc_val, 4)))
# الحساب عبر مصفوفة ارتباك معروفة مسبقاً
mat <- matrix(c(40, 5, 10, 45), nrow = 2, byrow = TRUE)
mcc_mat_val <- mltools::mcc(confusionM = mat)
print(paste("MCC من مصفوفة الارتباك:", round(mcc_mat_val, 4)))
تتميز دالة mcc() في mltools بسرعتها الفائقة عند التعامل مع مجموعات البيانات الضخمة (Big Data)، مما يجعلها خياراً مثالياً داخل حلقات التحسين والتكرار التي تتطلب تقييماً مستمراً لآلاف النماذج التنبؤية.
7.2 الحساب المتناغم مع منظومة Tidymodels عبر حزمة yardstick
في مشاريع علم البيانات الحديثة المعتمدة على بيئة tidymodels، تُمثل حزمة yardstick المعيار القياسي لتقييم النماذج الإحصائية. تمتاز الحزمة بتكاملها السلس مع جداول البيانات المنسقة (Tibbles) وتوافقها التام مع عمليات التجميع البياني (Grouping) وحساب المقاييس المتعددة دفعة واحدة.
يوضح الكود التالي كيفية إنشاء جدول بيانات منسق واستدعاء دالة mcc() لحساب المعامل، بالإضافة إلى حساب مقاييس تقييم متعددة في مصفوفة مجمعة:
library(yardstick)
library(tibble)
library(dplyr)
# تجهيز جدول البيانات المنسق
eval_df <- tibble(
truth = factor(c("Yes", "Yes", "No", "Yes", "No", "No", "Yes", "No"), levels = c("Yes", "No")),
estimate = factor(c("Yes", "No", "No", "Yes", "No", "Yes", "Yes", "No"), levels = c("Yes", "No"))
)
# حساب معامل ماثيوز منفصلاً
mcc_tidy <- eval_df %>% mcc(truth = truth, estimate = estimate)
print(mcc_tidy)
# إنشاء مصفوفة تقييم متعددة المقاييس المجمعة
multi_metrics <- metric_set(mcc, f_meas, accuracy, bal_accuracy)
combined_results <- eval_df %>% multi_metrics(truth = truth, estimate = estimate)
print(combined_results)
تتيح حزمة yardstick أيضاً إجراء الحسابات لمجموعات فرعية متعددة من البيانات باستخدام دالة group_by() من حزمة dplyr، وهو ما يسمح بتقييم استقرار المعامل عبر مختلف الشرائح السكانية أو الديموغرافية داخل مجموعة البيانات بسهولة بالغة.
7.3 الحساب عبر حزم إضافية (caret و DescTools)
توفر حزمة caret الشهيرة تحليلاً تفصيلياً لمصفوفة الارتباك عبر دالة confusionMatrix()، على الرغم من أن المعامل لا يُعرض مباشرة في الإخراج الافتراضي، إلا أنه يمكن استخراجه أو حسابه بسهولة من كائن المصفوفة الناتج. في المقابل، تقدم حزمة DescTools الدالة المتخصصة MatthewsCor() والتي تُعد من أدق الأدوات الإحصائية الوصفية لحساب المعامل وفترات ثقته:
library(caret)
library(DescTools)
# استخدام DescTools لحساب MCC مع فترة ثقة تقريبية
desc_mcc <- DescTools::MatthewsCor(x = eval_df$truth, y = eval_df$estimate, conf.level = 0.95)
print(desc_mcc)
# التحقق من تطابق كافة الحزم برمجياً
# يُظهر التدقيق الحسابي توافقاً رقمياً تاماً بين كافة الحزم، مما يضمن موثوقية النتائج.
8. تطبيق عملي: حساب معامل ماثيوز لنموذج الانحدار اللوجستي في R
8.1 بناء وتدريب نموذج الانحدار اللوجستي الثنائي
لتطبيق المفاهيم السابقة في إطار تنبؤي عملي متكامل، سنقوم ببناء نموذج انحدار لوجستي ثنائي (Binary Logistic Regression) على مجموعة بيانات غير متوازنة تتضمن متغيرات تفسيرية مستمرة وفئوية، ومن ثم تقسيمها إلى عينات تدريب واختبار:
# 1. توليد بيانات محاكاة غير متوازنة
set.seed(999)
n_samples <- 1000
# نسبة الحالات الإيجابية حوالي 10% فقط
x1 <- rnorm(n_samples, mean = 0, sd = 1)
x2 <- rnorm(n_samples, mean = 1, sd = 1.5)
log_odds <- -2.5 + 1.2 * x1 - 0.8 * x2
probs <- 1 / (1 + exp(-log_odds))
y <- ifelse(runif(n_samples) < probs, 1, 0)
dataset <- data.frame(Target = factor(y, levels = c(1, 0)), Feature1 = x1, Feature2 = x2)
# 2. تقسيم البيانات إلى تدريب (70%) واختبار (30%)
train_idx <- sample(1:n_samples, size = 0.7 * n_samples)
train_data <- dataset[train_idx, ]
test_data <- dataset[-train_idx, ]
# 3. تدريب نموذج الانحدار اللوجستي باستخدام دالة glm()
model <- glm(Target ~ Feature1 + Feature2, data = train_data, family = binomial(link = "logit"))
summary(model)
8.2 توليد الاحتمالات وتحويلها إلى فئات تنبؤية
بعد تدريب النموذج، نقوم بتوليد الاحتمالات المتوقعة (Predicted Probabilities) لكل ملاحظة في عينة الاختبار المستقلة، ثم نطبق نقطة القطع الافتراضية (Default Cutoff = 0.5) لتحويل هذه الاحتمالات إلى فئات ثنائية متوقعة:
# استخراج الاحتمالات المتوقعة على بيانات الاختبار
test_probs <- predict(model, newdata = test_data, type = "response")
# تطبيق عتبة التصنيف الافتراضية 0.5
# ملاحظة: تم ضبط المستويات بدقة لمطابقة الفئة الإيجابية والسلبية
test_preds_default <- factor(ifelse(test_probs > 0.5, 1, 0), levels = c(1, 0))
# حساب معامل ماثيوز عند العتبة الافتراضية
mcc_default <- mltools::mcc(preds = test_preds_default, actuals = test_data$Target)
print(paste("معامل ماثيوز عند العتبة الافتراضية (0.5):", round(mcc_default, 4)))
في معظم البيانات غير المتوازنة، تكون العتبة الافتراضية 0.5 غير مثالية وتؤدي إلى قيمة MCC منخفضة؛ نظراً لأن النموذج يتردد في التنبؤ بالفئة الإيجابية النادرة ما لم يتجاوز احتمالها 50%، وهو أمر نادر الحدوث رياضياً عندما تكون نسبة الانتشار الأساسية 10% فقط.
8.3 تحسين عتبة التصنيف (Threshold Tuning) لتعظيم قيمة MCC
للتغلب على قصور العتبة الافتراضية، نقوم بعملية ضبط وتحسين منهجي للعتبة (Threshold Optimization). سنقوم باختبار متسلسلة متدرجة من نقاط القطع تتراوح بين 0.01 و 0.99 بخطوات دقيقة، وحساب قيمة MCC المقابلة لكل نقطة، ثم رسم منحنى الاستجابة لتحديد العتبة المثلى التي تحقق أقصى ارتباط تنبؤي ممكن:
library(ggplot2)
# إنشاء متسلسلة العتبات
thresholds <- seq(0.01, 0.99, by = 0.01)
mcc_values <- numeric(length(thresholds))
# حلقة تكرارية لحساب MCC عند كل عتبة
for (i in seq_along(thresholds)) {
th <- thresholds[i]
pred_th <- factor(ifelse(test_probs > th, 1, 0), levels = c(1, 0))
mcc_values[i] <- calculate_mcc_custom(actual = test_data$Target, predicted = pred_th)
}
# تجميع النتائج في إطار بيانات
tuning_df <- data.frame(Threshold = thresholds, MCC = mcc_values)
# استخراج العتبة المثلى التي تحقق أعلى قيمة MCC
optimal_idx <- which.max(tuning_df$MCC)
optimal_threshold <- tuning_df$Threshold[optimal_idx]
max_mcc <- tuning_df$MCC[optimal_idx]
print(paste("العتبة المثلى للتصنيف:", optimal_threshold))
print(paste("أعلى قيمة لمعامل ماثيوز تم تحقيقها:", round(max_mcc, 4)))
# رسم منحنى تحسين العتبة باستخدام ggplot2
ggplot(tuning_df, aes(x = Threshold, y = MCC)) +
geom_line(color = "#2C3E50", size = 1.2) +
geom_point(aes(x = optimal_threshold, y = max_mcc), color = "#E74C3C", size = 4) +
geom_vline(xintercept = optimal_threshold, linetype = "dashed", color = "#E74C3C") +
labs(title = "تحسين عتبة التصنيف بناءً على معامل ارتباط ماثيوز",
x = "عتبة الاحتمال (Cutoff Threshold)",
y = "معامل ارتباط ماثيوز (MCC)") +
theme_minimal()
توضح هذه العملية المنهجية كيف يمكن للباحث رفع كفاءة النموذج التنبؤي وتحقيق أقصى اتزان ممكن في مصفوفة الارتباك عبر معايرة نقطة اتخاذ القرار وفق معيار MCC الموضوعي.
9. تطبيق متقدم: حساب معامل ماثيوز في مهام التصنيف متعدد الفئات (Multiclass MCC)
9.1 الامتداد الرياضي لمعامل ماثيوز للتصنيف متعدد الفئات
عند الانتقال من النمذجة الثنائية إلى مهام التصنيف التي تتضمن ثلاثة مستويات تصنيفية أو أكثر (Multiclass Classification)، لا يمكن تطبيق المعادلة الكلاسيكية البسيطة ذات العناصر الأربعة. قام العالمان Gorodkin (2004) و Jurman et al. (2012) بصياغة الامتداد الرياضي الدقيق لمعامل ماثيوز للمصفوفات متعددة الأبعاد ذات الحجم K × K، ويُعرف هذا المقياس أيضاً باسم مقياس RK الإحصائي.
تُعرّف المعادلة العامة لمعامل ماثيوز متعدد الفئات لمصفوفة الارتباك C ذات البعد K × K كالتالي:
MCCmulti = ( ∑k ∑l ∑m ( Ckk Clm – Ckl Cmk ) ) / ( √( ∑k ( ( ∑l Ckl ) × ( ∑k’ ≠ k ∑l’ Ck’l’ ) ) ) × √( ∑k ( ( ∑l Clk ) × ( ∑k’ ≠ k ∑l’ Cl’k’ ) ) ) )
حيث تمثل Cij عدد الملاحظات التي تنتمي فعلياً للفئة i وتم التنبؤ بأنها تنتمي للفئة j. يقيس البسط درجة التوافق المشترك عبر كافة الفئات في آن واحد مطروحاً منها التوافقات العشوائية الهامشية، بينما يعمل المقام على المعايرة الهندسية لمجموع التكرارات الفعلية والتنبؤية لكل فئة. يتراوح هذا المعامل أيضاً بين -1 و +1 (مع وجود حدود دنيا تعتمد على قيمة K)، محتفظاً بكافة خواص الحيادية والاتزان الإحصائي.
9.2 التطبيق البرمجي للمتعدد الفئات في لغة R
تتيح حزمتا mltools و yardstick حساب معامل ماثيوز متعدد الفئات بسلاسة فائقة دون الحاجة لكتابة المعادلات المصفوفية المعقدة يدوياً. يوضح المثال التالي كيفية تقييم مصنف ثلاثي الفئات (Classes: A, B, C):
# تجهيز بيانات تصنيف ثلاثية الفئات
set.seed(777)
actual_multi <- factor(sample(c("Class_A", "Class_B", "Class_C"), size = 300, replace = TRUE, prob = c(0.6, 0.3, 0.1)))
# توليد تنبؤات تحاكي دقة متفاوتة عبر الفئات الثلاث
pred_multi <- factor(sapply(as.character(actual_multi), function(x) {
if (runif(1) < 0.7) x else sample(c("Class_A", "Class_B", "Class_C"), 1)
}), levels = c("Class_A", "Class_B", "Class_C"))
# 1. الحساب باستخدام حزمة mltools
library(mltools)
multi_mcc_mltools <- mltools::mcc(preds = pred_multi, actuals = actual_multi)
print(paste("Multiclass MCC عبر mltools:", round(multi_mcc_mltools, 4)))
# 2. الحساب المتناغم مع yardstick
library(yardstick)
library(tibble)
df_multi <- tibble(truth = actual_multi, estimate = pred_multi)
multi_mcc_yardstick <- df_multi %>% mcc(truth = truth, estimate = estimate)
print(multi_mcc_yardstick)
يقوم هذا الحساب بتقييم الكفاءة الكلية (Global Evaluation) للنموذج عبر جميع الفئات مجتمعة في رقم قياسي واحد، وهو ما يختلف عن أساليب التقييم الفردي المقسم مثل استراتيجية فئة مقابل البقية (One-vs-Rest MCC) التي تقوم بحساب معامل ثنائي مستقل لكل فئة على حدة.
9.3 تحديات وحالات خاصة في التصنيف المتعدد
تظهر عند حساب MCC متعدد الفئات بعض التحديات المنهجية التي يجب على الباحث إدراكها. من أبرز هذه التحديات وجود فئات نادرة جداً ضمن مصفوفة الأبعاد المتعددة؛ فإذا فشل النموذج في التنبؤ بأي حالة تنتمي لتلك الفئة النادرة، فإن العمود المقابل لتلك الفئة في مصفوفة الارتباك سيكون صفرياً بالكامل.
في مثل هذه الحالات، يجب التأكد من استخدام دوال برمجية تدير المصفوفات ذات المجاميع الهامشية الصفرية بحكمة وتمنع انهيار العمليات الجبرية. كما يجب مراقبة الحدود التفسيرية للقيم الناتجة؛ حيث إن القيمة الدنيا النظرية لـ MCC في الحالات متعددة الفئات قد لا تصل بدقة إلى -1.0 في بعض التكوينات الهندسية، ولكنها تظل دوماً صفراً عند التنبؤ العشوائي التام، وموجبة وقريبة من +1.0 عند الأداء المتقن.
10. تفسير القيم الإحصائية لمعامل ماثيوز وربطها بالسياق التطبيقي والبحثي
10.1 المعايير الإرشادية للحكم على حجم التأثير وقوة المعامل
نظراً لتطابق معامل ماثيوز مع معامل ارتباط بيرسون وفاي، يمكن الاسترشاد بالأطر الإحصائية الكلاسيكية لتقييم قوة الارتباط وحجم التأثير (Effect Size) عند تفسير مخرجات النماذج، مع مراعاة الطبيعة الخاصة بالمجال التطبيقي:
- من +0.70 إلى +1.00 (ارتباط قوي جداً إلى مثالي): يعكس قدرة تمييزية فائقة وجودة تنبؤية استثنائية. يُعد هذا النطاق هو المعيار المستهدف في التطبيقات السريرية والتشخيص الطبي الحرج حيث تكون كلفة الأخطاء باهظة للغاية.
- من +0.40 إلى +0.69 (ارتباط متوسط إلى جيد): يشير إلى أداء تصنيفي مقبول ومفيد عملياً. يُعتبر هذا النطاق شائعاً ومرضياً جداً في العلوم الاجتماعية، والقياس النفسي، وتطبيقات التسويق الرقمي والتنبؤ بسلوك المستهلك المعقد.
- من +0.01 إلى +0.39 (ارتباط ضعيف إلى ضعيف جداً): يعبر عن أداء تمييزي متواضع يقترب من التخمين. بالرغم من أن النموذج قد يحقق دقة إجمالية تفوق 90% على البيانات غير المتوازنة، إلا أن هذه القيمة المنخفضة لـ MCC تؤكد عدم جاهزيته للاستخدام التطبيقي المستقل.
- القيمة 0.00 (انعدام القدرة التمييزية): أداء يطابق التوزيع العشوائي الصرف؛ النموذج غير قادر على استخلاص أي نمط بنيوي من البيانات.
- القيم السالبة (من -1.00 إلى -0.01): تشير إلى وجود علاقة تناقضية؛ أي أن النموذج يصنف الحالات بشكل معاكس لواقعها. يجب في هذه الحالة فحص إعدادات النمذجة والتأكد من عدم وجود خطأ في تعريف وترميز الفئات (Encoding Inversion).
10.2 حساب فترات الثقة (Confidence Intervals) لمعامل MCC باستخدام R
في الأبحاث الأكاديمية المحكمة، لا يكفي تقديم التقدير النقطي (Point Estimate) لمعامل ماثيوز بمفرده، بل يجب إرفاقه بفترة ثقة إحصائية (Confidence Interval – CI) تعكس مدى عدم اليقين والخطأ المعياري المحيط بالقيمة، لا سيما في العينات الصغيرة ومتوسطة الحجم.
يُعد أسلوب إعادة التعيين اللامعلمي (Non-Parametric Bootstrapping) المنهجية الإحصائية الأفضل لتقدير فترات الثقة لـ MCC نظراً لعدم اشتراطه لأي توزيع اعتدالي مسبق. يمكن تطبيق ذلك في R عبر حزمة boot القياسية:
library(boot)
# تعريف دالة الحساب المتوافقة مع حزمة boot
boot_mcc_func <- function(data, indices) {
d <- data[indices, ]
return(calculate_mcc_custom(d$Target, d$Predicted))
}
# تجهيز بيانات للتحليل البوتسترابي
df_for_boot <- data.frame(Target = test_data$Target, Predicted = test_preds_default)
# إجراء 1000 تكرار بوتسترابي
set.seed(456)
boot_results <- boot(data = df_for_boot, statistic = boot_mcc_func, R = 1000)
# حساب فترة الثقة 95% بطريقة BCa أو النسبة المئوية (Percentile)
boot_ci <- boot.ci(boot_results, type = c("perc", "bca"))
print(boot_ci)
يقدم تقرير فترة الثقة الناتج (مثل: MCC = 0.65, 95% CI [0.58, 0.72]) سنداً إحصائياً متيناً يتيح للقارئ والمحكم الأكاديمي الاطمئنان إلى استقرار النموذج وتعميم نتائجه خارج حدود العينة الاستكشافية.
10.3 سياقات التطبيق في القياس النفسي والإحصاء الحيوي
يمثل معامل ماثيوز أداة جوهرية في تقييم أدوات الفحص النفسي والتشخيص العصبي السلوكي؛ فعند تصميم استبيانات للكشف عن الاضطرابات السلوكية النادرة (مثل طيف التوحد أو اضطرابات الشخصية ذات معدلات الانتشار المنخفضة)، يساعد MCC الباحثين في ضبط حساسية ونوعية الأدوات وتجنب التشخيصات الإيجابية الكاذبة التي تترك أثراً سلبياً عميقاً على المفحوصين.
في الإحصاء الحيوي والوبائيات، يُستخدم المعامل لتقييم مؤشرات الواسمات الحيوية الجزيئية (Biomarkers) في التنبؤ بحدوث الطفرات الجينية أو الاستجابة لعلاجات الأورام الموجهة. يوفر المعامل في هذه الميادين جسراً يربط بين الأهمية النظرية للمتغيرات البيولوجية والقيمة السريرية التطبيقية، مما يضمن اتخاذ قرارات علاجية مبنية على براهين إحصائية محايدة وصارمة.
11. الأخطاء الشائعة واستكشاف المشكلات وإصلاحها عند حساب MCC في R
11.1 معالجة أخطاء القسمة على صفر والقيم غير المعرفة (NaN / Inf)
تُعد مشكلة ظهور القيم غير المعرفة (NaN) أو اللانهائية (Inf) من أكثر المشكلات إحباطاً للمحللين عند حساب معامل ماثيوز في R. تنشأ هذه الإشكالية برمجياً عندما يتنبأ النموذج بفئة واحدة فقط لجميع الملاحظات الخاضعة للتقييم، مما يجعل أحد المجاميع الهامشية في المقام مساوياً للصفر، وبالتالي انهيار عملية القسمة الحسابية.
لمعالجة هذه المشكلة في بيئات الإنتاج والتحليل الآلي، يجب تبني أسلوب البرمجة الدفاعية (Defensive Programming) كما تم توضيحه في الدالة المخصصة في القسم 6.2، حيث يتم تضمين شرط للتحقق من قيمة المقام؛ فإذا كان مساوياً للصفر أو قريباً منه بمعيار دقيق (مثل denominator < 1e-10)، تُرجع الدالة تلقائياً القيمة 0.0 بدلاً من ترك الكود ينهار أو يُرجع NaN.
11.2 أخطاء ضبط المستويات المرجعية والتسمية في العوامل (Factor Levels)
تعتمد لغة R افتراضياً على الترتيب الأبجدي لتحديد المستويات المرجعية للعوامل (Factors). فعلى سبيل المثال، إذا كانت الفئات مسمّاة "Control" و "Disease"، فإن R ستعتبر "Control" هي الفئة الأولى تلقائياً، وهو ما قد يتعارض مع رغبة الباحث في جعل "Disease" هي الفئة الإيجابية الأساسية.
يؤدي عدم الانتباه لترتيب المستويات إلى تشويش في مواقع مصفوفة الارتباك وتبديل خلايا TP و TN، مما قد لا يغير القيمة المطلقة لـ MCC (بسبب خاصية التناظر) ولكنه يؤدي إلى أخطاء فادحة عند حساب ومقارنة المقاييس الأخرى المقترنة كالحساسية والدقة. لتفادي ذلك، يُنصح دائماً باستخدام دوال التحكم بالمستويات مثل relevel() من Base R أو دالة fct_relevel() من حزمة forcats:
# ضبط الفئة المرجعية بدقة متناهية
actual_fact <- forcats::fct_relevel(actual_fact, "Disease", "Control")
pred_fact <- forcats::fct_relevel(pred_fact, "Disease", "Control")
11.3 مشكلات الأداء الحاسوبي مع البيانات فائقة الضخامة
عند التعامل مع بيانات ضخمة تحتوي على عشرات الملايين من السجلات التنبؤية، تصبح عملية إنشاء مصفوفات الارتباك الكثيفة عبر دوال كلاسيكية مثل table() مكلفة جداً من حيث استهلاك الذاكرة المؤقتة (RAM) والوقت المعالجي لوحدة المعالجة المركزية (CPU).
لتحقيق أقصى سرعة ممكنة وتوفير الذاكرة، يُفضل تجنب بناء جداول الاقتران والاعتماد على العمليات المنطقية المتجهة المباشرة (Direct Vectorized Sums) لحساب المكونات الأربعة:
# حساب سريع جداً للمكونات باستخدام العمليات المنطقية المباشرة
# بافتراض أن 1 يمثل الإيجابي و 0 يمثل السلبي في متجهات عددية أو منطقية
TP_fast <- sum(actual_vec == 1 & pred_vec == 1)
TN_fast <- sum(actual_vec == 0 & pred_vec == 0)
FP_fast <- sum(actual_vec == 0 & pred_vec == 1)
FN_fast <- sum(actual_vec == 1 & pred_vec == 0)
تتفوق هذه الطريقة بنسبة تصل إلى عشرة أضعاف في السرعة الحسابية مقارنة بالدوال التقليدية، مما يتيح معالجة مجموعات البيانات الهائلة في ثوانٍ معدودة وبأقل استهلاك للموارد الحسابية.
12. أفضل الممارسات المنهجية لتوثيق وعرض نتائج MCC في الأوراق العلمية والتقارير
12.1 التمثيل البصري لمخرجات ومقارنات معامل ماثيوز
يُعزز التمثيل البياني الدقيق من مصداقية الأوراق العلمية ويسهل استيعاب نتائج النمذجة المعقدة. يُنصح بالجمع بين خريطة مصفوفة الارتباك الحرارية (Confusion Matrix Heatmap) وعرض قيمة معامل ماثيوز وفترات ثقته في رسم واحد متناسق:
library(ggplot2)
# إنشاء إطار بيانات لمصفوفة الارتباك لغرض الرسم
cm_plot_df <- as.data.frame(conf_matrix)
colnames(cm_plot_df) <- c("Actual", "Predicted", "Count")
ggplot(cm_plot_df, aes(x = Predicted, y = Actual, fill = Count)) +
geom_tile(color = "white", size = 1) +
geom_text(aes(label = Count), color = "white", size = 6, fontface = "bold") +
scale_fill_gradient(low = "#3498DB", high = "#2C3E50") +
labs(title = "مصفوفة الارتباك لنموذج التصنيف النهائي",
subtitle = paste("Matthews Correlation Coefficient (MCC) =", round(max_mcc, 3)),
x = "التصنيف التنبؤي (Predicted Class)",
y = "التصنيف الفعلي (Ground Truth)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
plot.subtitle = element_text(hjust = 0.5, color = "#7F8C8D"))
كما يُنصح باستخدام المخططات الصندوقية (Boxplots) لعرض توزيع قيم MCC الناتجة عن أسلوب التقييم المتقاطع المكرر (K-Fold Cross-Validation) لمقارنة الخوارزميات المختلفة موضوعياً وتوضيح الفروق الإحصائية بين أدائها التمييزي.
12.2 معايير التوثيق الأكاديمي الشفاف لقيم MCC
لضمان الشفافية العلمية الكاملة وقابلية التدقيق المستقل في الأبحاث المنشورة، يجب الالتزام بالمعايير التالية عند إعداد التقارير الإحصائية:
- عرض المصفوفة الكاملة: لا تكتفِ بذكر قيمة MCC فقط؛ بل يجب تضمين أرقام مصفوفة الارتباك الخام (TP, TN, FP, FN) في الجداول التكميلية للسماح للباحثين الآخرين بإعادة حساب أي مقاييس بديلة قد يرغبون في دراستها.
- توثيق إصدارات الحزم والبرمجيات: يجب الإشارة صراحة في قسم المنهجية إلى إصدار لغة R المستخدم وأرقام إصدارات الحزم ذات الصلة (مثل: mltools v0.3.5, yardstick v1.2.0) لضمان تتبع أي تحديثات برمجية خوارزمية.
- إرفاق فترات الثقة ومستويات المعنوية: يُفضل دائماً تقديم المعامل بصيغة: التقدير النقطي ± الخطأ المعياري أو إدراج فترات الثقة 95% المحسوبة بأسلوب البوتستراب.
12.3 قالب تقرير منهجي متكامل لإدراج نتائج R في البحوث
لتسهيل صياغة النتائج في الأوراق العلمية وفق أسلوب الجمعية الأمريكية لعلم النفس (APA Style) أو المجلات الطبية المحكمة، يمكن الاستعانة بالقالب القياسي التالي:
“تم تقييم الأداء التنبؤي لنموذج الانحدار اللوجستي المحسن باستخدام معامل ارتباط ماثيوز (Matthews Correlation Coefficient – MCC) نظراً لعدم توازن الفئات في عينة الدراسة (10% حالات إيجابية). حقق النموذج ارتباطاً تصنيفياً قوياً بلغ (MCC = 0.68, 95% CI [0.61, 0.74])، متفوقاً بشكل دال إحصائياً على النموذج المرجعي الأساسي (MCC = 0.32). أظهرت مصفوفة الارتباك عند عتبة التصنيف المثلى (Cutoff = 0.28) قدرة تمييزية عالية تمثلت في 68 حالة إيجابية حقيقية (TP)، و 840 حالة سلبية حقيقية (TN)، مقابل 60 إيجابية خاطئة (FP) و 32 سلبية خاطئة (FN)، مما يؤكد اتزان ومتانة النموذج التنبؤي عبر كلا الفئتين.”
الخاتمة والتوصيات العامة
يمثل معامل ارتباط ماثيوز (MCC) المقياس الإحصائي الأكثر تكاملاً وعدالة في تقييم نماذج التصنيف الثنائي والمتعدد، متجاوزاً كافة أوجه القصور الهيكلية والمفارقات الرياضية التي تعاني منها المقاييس الشائعة كالدقة الإجمالية ومقياس F1-Score ومساحة AUC-ROC في مواجهة مشكلات البيانات غير المتوازنة. إن اعتماده المتوازن على كافة أركان مصفوفة الارتباك، واتساقه التام مع معامل ارتباط فاي واختبار كاي تربيع، يجعله الخيار المنهجي الأول للباحثين والمحللين الساعين وراء النزاهة الإحصائية والدقة العلمية.
من خلال لغة R ومنظومتها البرمجية الواسعة—بدءاً من الدوال المخصصة البسيطة ووصولاً إلى الحزم المتقدمة مثل mltools وyardstick—يمتلك الباحثون ترسانة كاملة تتيح لهم ليس فقط حساب المعامل بكفاءة، بل وأيضاً معايرة عتبات النماذج التنبؤية، وحساب فترات الثقة البوتسترابية بدقة، وتمثيل النتائج بيانيا بصورة أكاديمية احترافية. نوصي كافة المشتغلين بعلوم البيانات، والإحصاء الحيوي، والقياس النفسي، والتعلم الآلي بتبني معامل ماثيوز كمعيار تقييمي قياسي إلزامي في مشاريعهم البحثية ومسابقاتهم التنبؤية لضمان بناء نماذج إحصائية متينة تعكس الواقع الموضوعي بدقة وموثوقية.
References
- Chicco, D., & Jurman, G. (2020). The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation. BMC Genomics, 21(1), 6. https://doi.org/10.1186/s12864-019-6413-7
- Gorodkin, J. (2004). Comparing two K-category assignments by a K-category correlation coefficient. Computational Biology and Chemistry, 28(5-6), 367–374. https://doi.org/10.1016/j.compbiolchem.2004.09.006
- Jurman, G., Riccadonna, S., & Furlanello, C. (2012). A comparison of MCC and CEN error measures in multi-class prediction. PLOS ONE, 7(8), e41882. https://doi.org/10.1371/journal.pone.0041882
- Kuhn, M. (2008). Building predictive models in R using the caret package. Journal of Statistical Software, 28(5), 1–26. https://doi.org/10.18637/jss.v028.i05
- Matthews, B. W. (1975). Comparison of the predicted and observed secondary structure of T4 phage lysozyme. Biochimica et Biophysica Acta (BBA) – Protein Structure, 405(2), 442–451. https://doi.org/10.1016/0005-2795(75)90109-9
- Powers, D. M. W. (2011). Evaluation: from precision, recall and F-measure to ROC, informedness, markedness and correlation. Journal of Machine Learning Technologies, 2(1), 37–63. https://hdl.handle.net/2328/27165
- R Core Team. (2023). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/
- Signorell, A. et al. (2023). DescTools: Tools for Descriptive Statistics (R package version 0.99.50). https://cran.r-project.org/package=DescTools
- Vaughan, D., & Kuhn, M. (2023). yardstick: Tidy Spectral and Classification Metrics (R package version 1.2.0). https://cran.r-project.org/package=yardstick