ارزیابی عملکرد مدلهای طبقهبندی با scikit-learn: رویکردی جامع
در حوزه یادگیری ماشین، ارزیابی عملکرد مدل نقشی اساسی در سنجش کارایی و اتکاپذیری آن ایفا میکند. انتخاب معیارهای مناسب برای ارزیابی، به درک عمیق از نقاط قوت و ضعف مدل و تصمیمگیری آگاهانه در خصوص کاربرد آن منجر خواهد شد. کتابخانه scikit-learn به عنوان ابزاری قدرتمند، مجموعهای از ابزارها را برای ارزیابی جامع مدلهای طبقهبندی ارائه میدهد که در این نوشتار به تشریح آنها میپردازیم.
معیارهای بنیادی ارزیابی:
-
دقت (Accuracy): این معیار، نسبت تعداد نمونههای به درستی طبقهبندی شده به کل نمونهها را نشان میدهد و دیدگاهی کلی از عملکرد کلی مدل ارائه میدهد.
-
دقت (Precision): نسبت تعداد نمونههای مثبت واقعی که به درستی به عنوان مثبت پیشبینی شدهاند به کل نمونههایی که به عنوان مثبت پیشبینی شدهاند را نشان میدهد. این معیار به ویژه در مواردی که هزینه منفی پیشبینیهای غلط بالا باشد، از اهمیت بالایی برخوردار است.
-
بازخوانی (Recall): نسبت تعداد نمونههای مثبت واقعی که به درستی به عنوان مثبت پیشبینی شدهاند به کل نمونههای مثبت واقعی را نشان میدهد. این معیار در وظایفی که شناسایی تمام نمونههای مثبت (مانند تشخیص بیماری) حائز اهمیت است، کاربرد فراوانی دارد.
-
F1-Score: میانگین هارمونیک دقت و بازخوانی است که به عنوان یک معیار متعادل برای ارزیابی عملکرد مدل در نظر گرفته میشود. این معیار، تعادلی بین دقت و بازخوانی ایجاد میکند و دیدگاهی جامع از عملکرد مدل ارائه میدهد.
-
منحنی ROC (Receiver Operating Characteristic Curve): این منحنی، نسبت نرخ واقعی مثبت (TPR) را در برابر نرخ مثبت کاذب (FPR) برای سطوح مختلف آستانه نشان میدهد. منحنی ROC، عملکرد مدل را در طیف وسیعی از آستانهها به تصویر میکشد و به انتخاب آستانه مناسب برای کاربرد خاص کمک میکند.
-
مساحت زیر منحنی ROC (AUC): این معیار، احتمال کلی مدل در تمایز بین نمونههای مثبت و منفی را نشان میدهد. AUC، به عنوان یک معیار واحد برای مقایسه عملکرد مدلها در شرایط مختلف، بسیار کارآمد است.
ابزارهای کاربردی scikit-learn:
-
classification_report: این تابع، گزارشی از معیارهای مختلف ارزیابی مانند دقت، دقت، بازخوانی و F1-Score را برای هر کلاس ارائه میدهد و جزئیات عملکرد مدل در هر کلاس را به تفکیک نمایش میدهد.
-
roc_curve: این تابع، منحنی ROC را برای یک مدل طبقهبندی رسم میکند و به تجسم بصری عملکرد مدل در سطوح مختلف آستانه کمک میکند.
-
auc: این تابع، مساحت زیر منحنی ROC را برای یک مدل طبقهبندی محاسبه میکند و به طور خلاصه، قدرت تمایز مدل بین نمونههای مثبت و منفی را نشان میدهد.
نحوه استفاده از ابزارها:
from sklearn.metrics import classification_report, roc_curve, auc
# پیشبینی کلاسها برای نمونههای تست
y_pred = model.predict(X_test)
# محاسبه معیارهای ارزیابی
print(classification_report(y_test, y_pred))
# رسم منحنی ROC
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
plt.plot(fpr, tpr)
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Curve")
plt.show()
# محاسبه AUC
roc_auc = auc(fpr, tpr)
print("AUC:", roc_auc)
نکات کلیدی:
-
انتخاب معیار مناسب برای ارزیابی مدل، به نوع وظیفه، توزیع دادهها و هزینههای مرتبط با خطاهای مختلف بستگی دارد.
-
در مواردی که کلاسها نامتعادل هستند (تعداد نمونهها در هر کلاس یکسان نیست)، استفاده از معیارهایی مانند F1-Score یا AUC که به عدم تعادل کلاسها حساس هستند، میتواند مناسبتر باشد.
-
کتابخانه scikit-learn ابزارهای دیگری مانند
confusion_matrix
وprecision_recall_curve
را برای ارزیابی مدلهای طبقهبندی