في مجال التعلم الآلي ، يعد تقييم أداء النموذج أمرًا بالغ الأهمية. المنطقة الواقعة تحت منحنى خصائص تشغيل جهاز الاستقبال Area Under the Receiver Operating Characteristic Curve (AUC-ROC) هي مقياس يستخدم على نطاق واسع لتقييم أداء نماذج التصنيف. في هذا المقال ، سنشرح ماهية هذا التقييم AUC-ROC وأهميته. هذا بالاضافة إلى كيفية حسابه على بايثون باستخدام مثال عملي.
ما هو منحنى AUC-ROC؟
منحنى ROC هو تمثيل رسومي لأداء نموذج مصنف ثنائي. يتم إنشاؤه عن طريق رسم معدل القيم الإيجابية الحقيقية (TPR) مقابل معدل القيم الإيجابية الخاطئة (FPR) عند عتبات تصنيف مختلفة. TPR هي نسبة الحالات الإيجابية التي تم تصنيفها بشكل صحيح ، بينما FPR هي نسبة الحالات السلبية التي تم تصنيفها بشكل غير صحيح على أنها إيجابية مثل ما تم شرحه في مقال مصفوفة الإرباك. المنطقة الواقعة تحت منحنى ROC (AUC-ROC) هي مقياس لقدرة المصنف على التمييز بين الفئات الإيجابية والسلبية.
لماذا يعتبر منحنى AUC-ROC مهم؟
يعد هذا المنحنى مهم لأنه يوفر رقمًا واحدًا يلخص أداء المصنف عبر جميع العتبات الممكنة. كما أنه غير حساس للتوزيع غير المتوازن للفئة ، مما يجعله مقياسًا شائعًا لتقييم المصنفات على مجموعات البيانات غير المتوازنة.
مثال عملي على بايثون
دعنا نفكر في مثال عملي لشرح كيفية حساب منحنى AUC-ROC باستخدام بايثون. سنستخدم مجموعة بيانات سرطان الثدي من مكتبة scikit-Learn ، و هي مشكلة تصنيف ثنائية.
أولاً ، سنقوم بتحميل مجموعة البيانات وتقسيمها إلى مجموعات تدريب واختبار باستخدام دالة train_test_split (). سنقوم بعد ذلك بتدريب نموذج الانحدار اللوجستي والتنبؤ باحتمالات الفئة على مجموعة الاختبار.
# Import necessary libraries from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_auc_score from sklearn.metrics import roc_curve import matplotlib.pyplot as plt # Load the dataset data = load_breast_cancer() # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42) # Train a logistic regression model clf = LogisticRegression(random_state=42).fit(X_train, y_train) # Predict class probabilities on the test set y_pred_proba = clf.predict_proba(X_test)[:,1]
بعد ذلك ، سنحسب قيمة منحنى AUC-ROC باستخدام دالة ()roc_auc_score ونرسم منحنى ROC باستخدام دالة ()roc_curve.
# Calculate the AUC-ROC score auc_roc = roc_auc_score(y_test, y_pred_proba) print('AUC-ROC Score:', auc_roc) # Plot the ROC curve fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba) plt.plot(fpr, tpr) plt.title('ROC Curve') plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.show() AUC-ROC Score: 0.9970605526161082
سيكون ناتج الكود هو درجة و الرسم البياني لمنحنى ROC. درجة AUC-ROC لنموذج الانحدار اللوجستي في هذا المثال بنا هي 0.997 ، مما يشير إلى الأداء الممتاز.
الخلاصة
في الختام ، يعد هذا المنحنى مقياسًا مفيدًا لتقييم أداء نماذج التصنيف الثنائية. من خلال حساب المنطقة الواقعة أسفل منحنى ROC ، يمكننا الحصول على رقم واحد يلخص قدرة المصنف على التمييز بين الفئات الإيجابية والسلبية. توفر لغة البرمجة بايثون العديد من المكتبات لحساب ورسم منحنى ROC و درجة AUC-ROC ، مما يجعل من السهل تقييم أداء نماذج التصنيف.
*يمكن تحميل الكود من على حسابنا على Github أو تشغيله على Colab.