في مجال التعلم الآلي ، يعد تقييم أداء النموذج أمرًا بالغ الأهمية. المنطقة الواقعة تحت منحنى خصائص تشغيل جهاز الاستقبال 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

لماذا يعتبر منحنى 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.

Share on facebook
فيسبوك
Share on twitter
تويتر
Share on linkedin
لينكدإن
Share on whatsapp
واتساب

اترك تعليقاً

المشاركات الاخيرة

أحدث التعليقات

أفحص بحثك بالمجان

رفع الملف