MyMisPal
→ دروس الذكاء الاصطناعي العملي
الدرس 6 من 11

هل النموذج زين؟ مصفوفة الالتباس

في التصنيف ما يكفي نقول «النموذج يصيب 95%». لازم نعرف وين يغلط. نخلة عندها نموذج يعطي كل عملية دفع «درجة اشتباه» من 0 إلى 100، وإذا تعدت الحد تتحوّل للمراجعة. النتائج تتلخص في مصفوفة الالتباس (Confusion Matrix):

TPإيجابي صحيح: احتيال، والنموذج كشفه. ✓
FPإيجابي كاذب: عملية سليمة، والنموذج اشتبه فيها (إنذار كاذب يضيّع وقت المراجع).
FNسلبي كاذب: احتيال، والنموذج فوّته. (الأخطر غالباً)
TNسلبي صحيح: عملية سليمة ومرّت. ✓
Accuracy = (TP + TN) ÷ all Precision = TP ÷ (TP + FP) Recall = TP ÷ (TP + FN)

الضبط (Precision): من اللي اشتبهنا فيهم، كم فعلاً احتيال؟ الاستدعاء (Recall): من كل الاحتيال الموجود، كم كشفنا؟ حرّك حد القرار وشف كيف يتبادلون:

احتيال فعلاًسليمة فعلاً
02040608010060
احتيال فعلاًسليمة فعلاً
النموذج: مشبوهة3TP2FP
النموذج: سليمة2FN13TN
الدقة80%
الضبط60%
الاستدعاء60%

توازن بين الاثنين. القرار الصح يعتمد على تكلفة كل نوع خطأ.

انتبهفخ البيانات غير المتوازنة: لو 1% فقط من العمليات احتيال، نموذج «غبي» يقول دايماً «سليمة» دقته 99%! لكنه ما كشف ولا عملية احتيال (Recall = 0). عشان كذا في الاحتيال والأمراض والأعطال نشوف الضبط والاستدعاء، مو الدقة لحالها.
PYTHON
tp, fp, fn, tn = 8, 2, 4, 86

accuracy = (tp + tn) / (tp + fp + fn + tn)
precision = tp / (tp + fp)
recall = tp / (tp + fn)
print("Accuracy: ", round(accuracy * 100, 1), "%")
print("Precision:", round(precision * 100, 1), "%")
print("Recall:   ", round(recall * 100, 1), "%")

تمارين

تمرين 1 · حساب

النموذج اشتبه في 10 عمليات: 8 منها احتيال فعلاً و2 سليمة. كم الضبط (Precision) بالنسبة المئوية؟

%
تمرين 2 · حساب

كان فيه 16 عملية احتيال، والنموذج كشف 8 منها. كم الاستدعاء (Recall) بالنسبة المئوية؟

%
تمرين 3 · اختيار

تفويت عملية احتيال يكلّف نخلة 50,000 ريال، ومراجعة إنذار كاذب تكلّف 20 ريال. وش تعطي الأولوية؟

تمرين 4 · Python · يتصحح بالتشغيل

عندك نتائج نموذج: tp = 30، fp = 10، fn = 20. احسب الضبط والاستدعاء واطبع كل واحد في سطر كنسبة مئوية مقرّبة لرقم صحيح بـ round(... * 100).

لقيت خطأ في هذي الصفحة، أو عندك فكرة تحسّن الموقع؟