ROC و AUC
آموزش منحنی ROC و شاخص AUC: مقایسه مدلها، انتخاب آستانه و تفسیر احتمال
منحنی ROC چیست؟
ROC (Receiver Operating Characteristic) عملکرد مدل را در همه آستانههای ممکن نشان میدهد:
- محور افقی: نرخ مثبت کاذب (FPR = FP / (FP + TN))
- محور عمودی: نرخ مثبت واقعی (TPR = Recall = TP / (TP + FN))
خواندن منحنی
- مدل کامل: منحنی به گوشه بالا-چپ چسبیده
- مدل تصادفی: خط قطر ۴۵ درجه (AUC = ۰.۵)
- مدل بدتر از شانس: زیر قطر (چیزی جدی اشتباه است!)
AUC چیست؟
مساحت زیر منحنی ROC — یک عدد خلاصهکننده:
| AUC | تفسیر |
|---|---|
| ۱.۰ | مدل کامل (مشکوک! احتمالاً نشت داده) |
| ۰.۹+ | عالی |
| ۰.۷ تا ۰.۹ | خوب |
| ۰.۵ | مثل پرتاب سکه — بیارزش |
تفسیر احتمالی AUC
AUC = احتمال اینکه مدل به یک نمونه مثبت، امتیاز بالاتر از یک نمونه منفی بدهد. AUC=۰.۹ یعنی در ۹۰٪ مقایسههای جفتی، ترتیب درست است.
پیادهسازی
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt
# احتمال کلاس مثبت (نه خود کلاس!)
probs = model.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, probs)
auc = roc_auc_score(y_test, probs)
plt.plot(fpr, tpr, label=f"AUC={auc:.2f}")
plt.plot([0, 1], [0, 1], "--", color="gray")
plt.legend()
مزیت بزرگ AUC
به آستانه حساس نیست و در داده نامتوازن هم معنادار است؛ برای مقایسه مدلها عالی.
ROC-AUC برای خروجی احتمالی محاسبه میشود؛
predict_proba بدهید نه predict!جمعبندی
- ROC عملکرد در همه آستانهها را نشان میدهد
- AUC خلاصه عددی: ۰.۵ = شانس، ۱ = کامل
- ابزار استاندارد مقایسه مدلهای دستهبندی
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.