معیارهای ارزیابی دستهبندی
آموزش Accuracy، Precision، Recall و F1: فرمولها، تفاوتها و انتخاب معیار درست
فراتر از Accuracy
Accuracy ساده است: «چند درصد درست گفتم؟» ولی در داده نامتوازن فریبدهنده است!
مثال: اگر ۹۹٪ تراکنشها عادی باشند، مدل احمقانه «همه عادی» ۹۹٪ دقت دارد ولی هیچ تقلبی را نمیگیرد!
۱. Precision (دقت مثبت)
از مواردی که «مثبت» گفتیم، چند درصد درست بود؟
Precision = TP / (TP + FP)
مهم وقتی: هزینه FP بالاست — فیلتر اسپم (ایمیل مهم نباید حذف شود)
۲. Recall (حساسیت)
از موارد مثبت واقعی، چند درصد را پیدا کردیم؟
Recall = TP / (TP + FN)
مهم وقتی: هزینه FN بالاست — تشخیص بیماری (هیچ بیماری نباید از دست برود)
۳. F1 Score
میانگین هارمونیک Precision و Recall — وقتی هر دو مهماند:
F1 = 2 × (Precision × Recall) / (Precision + Recall)
میانگین هارمونیک یعنی اگر یکی ضعیف باشد، F1 هم پایین میآید.
جدول انتخاب معیار
| مسئله | معیار اصلی | دلیل |
|---|---|---|
| تشخیص بیماری | Recall | بیمار جا نماند |
| فیلتر اسپم | Precision | ایمیل مهم حذف نشود |
| دستهبندی متوازن | Accuracy | کلاسها برابرند |
| داده نامتوازن عمومی | F1 | تعادل هر دو |
پیادهسازی
from sklearn.metrics import (
accuracy_score, precision_score, recall_score, f1_score
)
print(accuracy_score(y_test, y_pred))
print(precision_score(y_test, y_pred))
print(recall_score(y_test, y_pred))
print(f1_score(y_test, y_pred))
Precision و Recall کشش معکوس دارند: آستانه را سختگیرانه کنید Precision بالا و Recall پایین میرود. نقطه تعادل به هزینه خطاهایتان بستگی دارد.
جمعبندی
- Accuracy در داده نامتوازن گمراهکننده است
- Precision ضد FP، Recall ضد FN
- F1 تعادل هر دو — پیشفرض خوب برای داده نامتوازن
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.