تعرف على كيفية موازنة F1-Score بين الدقة والاسترجاع لتقييم نماذج التعلم الآلي. اكتشف كيفية تحسين أداء Ultralytics للحصول على دقة أفضل.
يعد F1-Score مقياس أداء مهمًا في التعلم الآلي يجمع بين الدقة والاسترجاع في متوسط توافقي واحد . وهو مفيد بشكل خاص لتقييم نماذج التصنيف حيث تكون مجموعة البيانات غير متوازنة أو حيث تترتب تكاليف مختلفة على الإيجابيات الكاذبة والسلبيات الكاذبة. على عكس الدقة المباشرة، التي يمكن أن تكون مضللة إذا سيطرت فئة واحدة على مجموعة البيانات، يوفر F1-Score رؤية أكثر توازناً لقدرة النموذج على تحديد الحالات ذات الصلة بشكل صحيح مع تقليل الأخطاء إلى الحد الأدنى. من خلال معاقبة القيم المتطرفة، يضمن الحصول على درجة عالية فقط عندما يكون كل من الدقة والاسترجاع مرتفعين بشكل معقول، مما يجعله مقياساً أساسياً في مجالات تتراوح من التشخيص الطبي إلى استرجاع المعلومات.
في العديد من السيناريوهات الواقعية، لا يكفي مجرد معرفة النسبة المئوية للتنبؤات الصحيحة (الدقة). على سبيل المثال، في اكتشاف الحالات الشاذة، تفوق الحالات العادية الحالات الشاذة عددًا. قد يحقق النموذج الذي يتنبأ بـ "طبيعي" لكل مدخلات دقة بنسبة 99٪، ولكنه سيكون عديم الفائدة في اكتشاف المشكلات الفعلية. يعالج F1-Score هذه المشكلة من خلال موازنة مقياسين متنافسين:
نظرًا لوجود مقايضة في كثير من الأحيان — حيث يؤدي تحسين الدقة إلى انخفاض الاسترجاع والعكس صحيح — يعمل F1-Score كمقياس موحد للعثور على نقطة التوازن المثلى. وهذا أمر بالغ الأهمية عند ضبط النماذج باستخدام تحسين المعلمات الفائقة لضمان أداء قوي في مختلف الظروف.
تتعدى فائدة F1-Score مختلف الصناعات التي تكون فيها تكلفة الخطأ كبيرة.
تعمل أطر الرؤية الحاسوبية الحديثة على تبسيط حساب هذه المقاييس. عند تدريب نماذج الكشف عن الكائنات، يتم حساب F1-Score تلقائيًا خلال مرحلة التحقق. تعرض Ultralytics هذه المقاييس في مخططات بيانية في الوقت الفعلي، مما يتيح للمستخدمين رؤية منحنى F1-Score مقابل عتبات ثقة مختلفة.
فيما يلي كيفية الوصول إلى مقاييس التحقق من الصحة، بما في ذلك مكونات F1-Score، باستخدام Python :
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Validate the model on a dataset (metrics are computed automatically)
# This returns a validator object containing precision, recall, and mAP
metrics = model.val(data="coco8.yaml")
# Print the Mean Average Precision (mAP50-95), which correlates with F1 performance
print(f"mAP50-95: {metrics.box.map}")
# Access precision and recall arrays to manually inspect the balance
print(f"Precision: {metrics.box.p}")
print(f"Recall: {metrics.box.r}")
فهم كيفية اختلاف F1-Score عن معايير التقييم الأخرى أمر ضروري لاختيار الأداة المناسبة لمشروعك. .
إذا كان نموذجك يعاني من انخفاض في درجة F1، فهناك عدة استراتيجيات يمكن أن تساعدك. يمكن أن يؤدي زيادة البيانات إلى زيادة تنوع الأمثلة الإيجابية، مما يساعد النموذج على التعميم بشكل أفضل. يتيح استخدام التعلم النقلي من نماذج الأساس القوية للشبكة الاستفادة من الميزات المكتسبة مسبقًا. بالإضافة إلى ذلك، يمكن أن يؤدي تعديل عتبة الثقة أثناء الاستدلال إلى تغيير التوازن بين الدقة والاسترجاع يدويًا لتعظيم درجة F1 لحالة الاستخدام المحددة الخاصة بك.