متریکها ارزیابی در مسائل کلاس بندی
متریکها ارزیابی در مسائل کلاس بندی
متریکها ارزیابی در مسائل کلاس بندی
در پروژههای یادگیری ماشین، ساختن یک مدل طبقهبندی تنها نیمی از کار است؛ نیمهی مهمتر این است که بدانیم مدل چقدر خوب عمل میکند. بسیاری از افراد فقط به Accuracy نگاه میکنند، اما در عمل این معیار بهتنهایی کافی نیست، مخصوصاً وقتی دادهها نامتوازن باشند یا هزینهی خطاها با هم فرق داشته باشد.
برای درک درست متریکهای طبقهبندی، باید از ماتریس کانفیژن (Confusion Matrix) شروع کنیم؛ چون تقریباً همهی معیارهای ارزیابی از روی همین ماتریس محاسبه میشوند.
ماتریس کانفیژن ۲×۲ چیست؟
در مسائل طبقهبندی دودویی، خروجی مدل را میتوان در یک جدول ۲×۲ خلاصه کرد که به آن Confusion Matrix یا ماتریس درهمریختگی میگویند. این ماتریس نشان میدهد مدل چند نمونه را درست یا غلط پیشبینی کرده است.

اجزای ماتریس:
- TP (True Positive)
نمونه واقعاً مثبت بوده و مدل هم آن را مثبت پیشبینی کرده است.
مثال: بیمار واقعاً بیماری دارد و مدل هم وجود بیماری را تشخیص داده است. - TN (True Negative)
نمونه واقعاً منفی بوده و مدل هم آن را منفی پیشبینی کرده است.
مثال: بیمار سالم است و مدل هم او را سالم تشخیص داده است. - FP (False Positive)
نمونه در واقع منفی بوده اما مدل آن را مثبت پیشبینی کرده است.
مثال: بیمار سالم است اما مدل اشتباهاً اعلام میکند بیمار است.
به این حالت هشدار کاذب هم میگویند. - FN (False Negative)
نمونه در واقع مثبت بوده اما مدل آن را منفی پیشبینی کرده است.
مثال: بیمار واقعاً بیماری دارد اما مدل او را سالم تشخیص میدهد.
این نوع خطا معمولاً خطرناکتر است.
چرا ماتریس کانفیژن اینقدر مهم است؟
چون تمام متریکهای اصلی مثل Accuracy، Precision، Recall، Specificity و F1-score از همین چهار مقدار به دست میآیند. اگر این چهار مفهوم را خوب درک کنید، بقیهی معیارها هم کاملاً روشن میشوند.
متریکهای اصلی در طبقهبندی
1) Accuracy
Accuracy یا همان دقت نشان میدهد چه درصدی از کل پیشبینیهای مدل درست بودهاند.اگر Accuracy برابر 0.90 باشد، یعنی مدل 90 درصد از کل نمونهها را درست پیشبینی کرده است.
$$
Accuracy = \frac{TP + TN}{TP + TN + FP + FN}
$$
فرض کنید از 100 نمونه که در آن مدل به نتایج 40=TP و 50=TN و 5= FP و5= FN رسیده است، آنگاه:
$$
Accuracy = \frac{40 + 50}{100} = 0.90
$$
یعنی دقت کلی مدل 90 درصد است.
Accuracy در دادههای نامتوازن میتواند گمراهکننده باشد. مثلاً اگر 95 درصد دادهها منفی باشند، مدلی که همهچیز را منفی پیشبینی کند، Accuracy بالایی خواهد داشت، اما عملاً مدل خوبی برای پیش بینی داده های مثبت نیست.
2) Error Rate
نرخ خطا مکمل Accuracy است و نشان میدهد چه درصدی از پیشبینیها اشتباه بودهاند. مثلا اگر Accuracy برابر 0.90 باشد، نرخ خطا برابر 0.10 است.
$$
Error\ Rate = \frac{FP + FN}{TP + TN + FP + FN}
$$
$$
Error\ Rate = 1 – Accuracy
$$
3) Precision
Precision نشان میدهد از بین تمام نمونههایی که مدل مثبت پیشبینی کرده، چند درصد واقعاً مثبت بودهاند.این معیار به این سؤال پاسخ میدهد:وقتی مدل میگوید «این نمونه مثبت است»، چقدر میتوان به آن اعتماد کرد؟
$$
Precision = \frac{TP}{TP + FP}
$$
فرض کنید مدل 50 نمونه را مثبت پیشبینی کرده است، که 40 تای آنها واقعاً مثبت بودهاند ( TP = 40) اما 10 تای آنها اشتباه بودهاند ( FP = 10). پس:
$$
Precision = \frac{40}{40+10} = 0.80
$$
یعنی وقتی مدل یک مورد را مثبت اعلام میکند، در 80 درصد مواقع درست میگوید.
وقتی False Positive پرهزینه باشد، Precision مهمتر است. مثلاً تشخیص اشتباه اسپم بودن ایمیل مهم کاری، تشخیص اشتباه کلاهبرداری در تراکنش بانکی یا مثبت اعلام کردن اشتباه یک فرد در تست اولیه بیماری
4) Recall یا Sensitivity
Recall نشان میدهد از بین همهی نمونههای واقعاً مثبت، چند درصد را مدل درست پیدا کرده است. این معیار به این سؤال جواب میدهد: از تمام موارد مثبتی که واقعاً وجود داشتهاند، مدل چند مورد را شکار کرده است؟
$$
Recall = \frac{TP}{TP + FN}
$$
به عنوان مثال، فرض کنید 50 بیمار واقعاً بیمار وجود داشته باشند که در این جا مدل 40 نفر را درست تشخیص داده ( TP = 40) و 10 نفر را از دست داده ( FN = 10) در این حالت:
$$
Recall = \frac{40}{40+10} = 0.80
$$
یعنی مدل 80 درصد بیماران واقعی را شناسایی کرده است.Recall زمانی مهمترین متریک است که False Negative خطرناک باشد. به عنوان مثال در تشخیص سرطان، شناسایی تقلب، کشف نفوذ امنیتی یا تشخیص خرابی در تجهیزات حساس . در این کاربردها از دست دادن یک مورد مثبت واقعی میتواند هزینهی بسیار بالایی داشته باشد.
5) Specificity
Specificity نشان میدهد از بین همهی نمونههای واقعاً منفی، چند درصد را مدل درست منفی تشخیص داده است.این متریک در واقع توانایی مدل در رد کردن درست موارد منفی را نشان میدهد.
$$
Specificity = \frac{TN}{TN + FP}
$$
اگر 50 نفر واقعاً سالم باشند و مدل 45 نفر درست سالم تشخیص داده شوند ( TN = 45) و 5 نفر اشتباه بیمار تشخیص داده شوند (FP = 5) آنگاه:
$$
Specificity = \frac{45}{45+5} = 0.90
$$
یعنی مدل 90 درصد افراد سالم را درست تشخیص داده است.این معیار در حوزههایی که اعلام اشتباه مثبت مشکلساز است اهمیت زیادی دارد.
6) F1-score
F1-score تعادلی بین Precision و Recall برقرار میکند و زمانی مفید است که بخواهیم هر دو را همزمان در نظر بگیریم.
$$
F1 = \frac{2 \times Precision \times Recall}{Precision + Recall}
$$
فرم دیگر:
$$
F1 = \frac{2TP}{2TP + FP + FN}
$$
دلیل اهمیت این متریک در این است که اگر یکی از Precision یا Recall خیلی پایین باشد، F1 هم به شدت افت میکند. این باعث میشود مدل نتواند با بالا بودن فقط یکی از این دو معیار، خوب به نظر برسد.
$$
F1 = \frac{2 \times 0.8 \times 0.5}{0.8 + 0.5}
\approx 0.615
$$
در مثال بالا زمانی که Precision = 0.80 وRecall = 0.50، با اینکه Precision بد نیست، Recall پایین باعث شده F1 افت کند. این متریک در زمانی که داده ها نامتوازن است و بخواهیم بین Precision و Recall توازن برقرار کنیم.می تواند دید منصفانه ای از عملکرد مدل بدهد.
7) F-beta Score
F-beta نسخهی تعمیمیافتهی F1 است که به شما اجازه میدهد اهمیت Recall و Precision را کنترل کنید.
$$
F_\beta = (1+\beta^2)\frac{Precision \times Recall}{\beta^2 \times Precision + Recall}
$$
در این حالت
- اگر (beta = 1)، همان F1 میشود.
- اگر (beta > 1)، Recall مهمتر میشود.
- اگر (beta < 1)، Precision مهمتر میشود.
در تشخیص بیماری معمولاً Recall مهمتر است؛ بنابراین استفاده از F2-score میتواند منطقیتر از F1 باشد.
متریکهای مکمل و بسیار مهم
8) NPV (Negative Predictive Value)
از بین تمام نمونههایی که مدل منفی پیشبینی کرده، چند درصد واقعاً منفی بودهاند.این معیار شبیه Precision است، اما برای کلاس منفی.
$$
NPV = \frac{TN}{TN + FN}
$$
9) FPR (False Positive Rate)
نشان میدهد چه نسبتی از نمونههای واقعاً منفی، اشتباه مثبت پیشبینی شدهاند.اگر 100 مورد واقعاً منفی وجود داشته باشد و 8 مورد اشتباه مثبت شوند، آنگاه FPR برابر 0.08 خواهد بود.
$$
FPR = \frac{FP}{FP + TN}
$$
$$
FPR = 1 – Specificity
$$
10) FNR (False Negative Rate)
نشان میدهد چه نسبتی از نمونههای واقعاً مثبت توسط مدل از دست رفتهاند.این متریک در کاربردهای پزشکی و امنیتی بسیار مهم است.
$$
FNR = \frac{FN}{FN + TP}
$$
$$
FNR = 1 – Recall
$$
11) FDR (False Discovery Rate)
از بین تمام پیشبینیهای مثبت، چند درصد اشتباه بودهاند.
$$
FDR = \frac{FP}{TP + FP}
$$
$$
FDR = 1 – Precision
$$
12) FOR (False Omission Rate)
از بین تمام پیشبینیهای منفی، چند درصد اشتباه بودهاند.
$$
FOR = \frac{FN}{TN + FN}
$$
$$
FOR = 1 – NPV
$$
13) Balanced Accuracy
Balanced Accuracy میانگین Recall و Specificity است و برای دادههای نامتوازن بسیار مفید است. اهمیت این Accuracy در این است که ، اجازه نمیدهد عملکرد خوب روی کلاس غالب، ضعف مدل روی کلاس اقلیت را پنهان کند.
$$
Balanced\ Accuracy = \frac{Recall + Specificity}{2}
$$
به عنوان مثال، اگر Recall = 0.70 ، Specificity = 0.90 آنگاه:
$$
Balanced\ Accuracy = \frac{0.70 + 0.90}{2} = 0.80
$$
14) MCC (Matthews Correlation Coefficient)
MCC یکی از قویترین متریکها برای ارزیابی مدلهای طبقهبندی، بهخصوص روی دادههای نامتوازن است. به علت اینکه MCC به هر چهار جزء ماتریس کانفیژن توجه میکند و نسبت به نامتوازن بودن دادهها مقاومتر از Accuracy است.
$$
MCC =
\frac{TP \times TN – FP \times FN}
{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}
$$
بازهی مقدار
- 1 → پیشبینی کاملاً درست
- 0 → عملکردی در حد تصادف
- -1 → پیشبینی کاملاً معکوس
15) Cohen’s Kappa
این متریک میزان توافق بین پیشبینی مدل و برچسب واقعی را اندازهگیری میکند، با در نظر گرفتن توافقی که ممکن است صرفاً بهصورت تصادفی رخ داده باشد. اگر توزیع کلاسها خیلی نامتوازن باشد، Kappa میتواند تصویری واقعیتر از Accuracy بدهد.
متریکهای مبتنی بر آستانه و منحنی
در بسیاری از مدلها خروجی نهایی فقط یک برچسب نیست؛ بلکه یک احتمال است. مثلاً مدل میگوید احتمال مثبت بودن یک نمونه 0.82 است. برای تبدیل این احتمال به برچسب، معمولاً از یک آستانه مثل 0.5 استفاده میکنیم. اما اگر آستانه را تغییر دهیم، Precision و Recall هم تغییر میکنند. اینجا متریکهای منحنیمحور وارد میشوند.
16) ROC Curve
منحنی ROC رابطهی بین:
- TPR = Recall
- FPR
را در آستانههای مختلف نشان میدهد. برای بررسی اینکه مدل در تفکیک کلاس مثبت و منفی چقدر خوب عمل میکند.
17) AUC-ROC
AUC-ROC مساحت زیر منحنی ROC است.

- 1.0 → عالی
- 0.9 → بسیار خوب
- 0.8 → خوب
- 0.5 → تصادفی
در دادههای بسیار نامتوازن، ROC-AUC گاهی بیش از حد خوشبینانه به نظر میرسد.
18) Precision-Recall Curve
این منحنی تغییرات Precision و Recall را در آستانههای مختلف نشان میدهد. در دادههای نامتوازن، این منحنی معمولاً از ROC اطلاعات کاربردیتری میدهد؛ چون مستقیماً روی عملکرد مدل برای کلاس مثبت تمرکز میکند.
19) AUC-PR

مساحت زیر منحنی Precision-Recall را حساب می کند. اگر هدف اصلی شما پیدا کردن کلاس مثبت در دادههای نادر باشد، AUC-PR معمولاً متریک مناسبتری از ROC-AUC است.
متریکهای آماری تکمیلی
20) Prevalence
نسبت نمونههای مثبت واقعی در کل داده را نشان میدهد و برای درک میزان نامتوازن بودن مسئله مفید است.
$$
Prevalence = \frac{TP + FN}{TP + TN + FP + FN}
$$
21) Informedness
$$
Informedness = Recall + Specificity – 1
$$
نشان میدهد مدل تا چه حد بهتر از حد تصادفی تصمیم میگیرد.
22) Markedness
$$
Markedness = Precision + NPV – 1
$$
نشان میدهد برچسبهای پیشبینیشدهی مدل تا چه حد قابل اتکا هستند.
متریکها در مسائل چندکلاسه و چندبرچسبی
در مسائل چندکلاسه (Multi-class) یا چندبرچسبی (Multi-label)، متریکها معمولاً برای هر کلاس جداگانه محاسبه میشوند و سپس به یکی از روشهای زیر تجمیع میشوند:
Macro Average
متریک را برای هر کلاس جداگانه حساب میکنیم و سپس میانگین ساده میگیریم.به همهی کلاسها وزن یکسان میدهد، حتی اگر بعضی کلاسها تعداد نمونهی خیلی کمی داشته باشند.وقتی عملکرد روی کلاسهای اقلیت مهم است.
Micro Average
ابتدا مجموع TP، FP و FN را در تمام کلاسها محاسبه میکنیم، بعد متریک نهایی را روی مجموع آنها به دست میآوریم. به کلاسهای پرتعداد وزن بیشتری میدهد. وقتی میخواهیم عملکرد کلی سیستم را بسنجیم.
Weighted Average
میانگین متریکها را با وزن تعداد نمونههای هر کلاس محاسبه میکند. بین Macro و Micro نوعی تعادل ایجاد میکند.
کدام متریک را کِی استفاده کنیم؟
انتخاب متریک مناسب کاملاً به نوع مسئله بستگی دارد:
| سناریو / هدف ارزیابی | معیار(های) پیشنهادی |
|---|---|
| دادهها متوازن باشند | Accuracy ، Precision ، Recall ، F1-score |
| دادهها نامتوازن باشند | F1-score (بهویژه Macro/Weighted) ، Balanced Accuracy ، MCC ، PR-AUC ، Recall / Precision |
| False Positive مهم باشد (هشدار اشتباه هزینهزاست) | Precision ، Specificity (TNR) ، FPR |
| False Negative مهم باشد (از دستدادن بیمار/کلاس خطرناک است) | Recall (Sensitivity/TPR) ، FNR ، F2-score |
| ارزیابی کلی مدل در آستانههای مختلف مهم باشد (بدون وابستگی به یک Threshold ثابت) | ROC-AUC ، PR-AUC (مخصوصاً برای داده نامتوازن) |
یک مثال جمعبندیشده
فرض کنید برای تشخیص بیماری، ماتریس کانفیژن زیر را داریم:
- TP = 70
- TN = 50
- FP = 10
- FN = 20
محاسبه متریکها
$$
Accuracy = \frac{70+50}{70+50+10+20} = \frac{120}{150} = 0.80
$$
$$
Precision = \frac{70}{70+10} = 0.875
$$
$$
Recall = \frac{70}{70+20} \approx 0.778
$$
$$
Specificity = \frac{50}{50+10} \approx 0.833
$$
$$
F1 = \frac{2 \times 0.875 \times 0.778}{0.875 + 0.778} \approx 0.824
$$
تفسیر
- مدل در کل خوب عمل کرده است.
- Precision بالا است، یعنی وقتی میگوید فرد بیمار است، معمولاً درست میگوید.
- Recall کمی پایینتر است، یعنی هنوز برخی بیماران واقعی را از دست میدهد.
- اگر از دست دادن بیمار خطرناک باشد، باید Recall را افزایش دهیم.
جمعبندی نهایی
در مسائل طبقهبندی، هیچ متریکی بهتنهایی برای ارزیابی کامل مدل کافی نیست. همهچیز از ماتریس کانفیژن شروع میشود و تقریباً تمام معیارهای مهم از روی چهار مقدار TP، TN، FP و FN به دست میآیند.
- Accuracy برای دید کلی مفید است، اما همیشه قابل اعتماد نیست.
- Precision نشان میدهد پیشبینیهای مثبت چقدر قابل اعتماد هستند.
- Recall مشخص میکند چند درصد از مثبتهای واقعی پیدا شدهاند.
- Specificity توانایی مدل در تشخیص درست منفیها را میسنجد.
- F1-score تعادل خوبی بین Precision و Recall ایجاد میکند.
- Balanced Accuracy و MCC برای دادههای نامتوازن بسیار ارزشمندند.
- ROC-AUC و PR-AUC نیز برای تحلیل مدل در آستانههای مختلف ضروری هستند.

دیدگاه (2)
افسانه فرپور
عالی توضیح دادید خانم دکتر
مینا ناصری نسب
لطف دارید
خوشحالم که مورد توجهتون بوده