рдЬрдм рд╣рдо binary classification рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ spam/not-spam, disease/healthy), рддреЛ рд╣рдореЗрдВ рд╕рд┐рд░реНрдл accuracy рд╕реЗ model рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдирд╣реАрдВ рдкрддрд╛ рдЪрд▓рддреАред рдРрд╕реЗ рдореЗрдВ ROC-AUC Curve model рдХреЗ prediction scores рдХреЛ analyze рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
ЁЯФ╢ ROC рдХрд╛ рдЕрд░реНрде:
ROC = Receiver Operating Characteristic
рдпрд╣ рдПрдХ graphical plot рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ model рдХреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди thresholds рдкрд░ perform рдХрд░рддрд╛ рд╣реИред
ЁЯУИ ROC Curve Plot:
- X-axis тЖТ False Positive Rate (FPR)
- Y-axis тЖТ True Positive Rate (TPR)
Threshold рдХреЛ 0 рд╕реЗ 1 рддрдХ vary рдХрд░рддреЗ рд╣реБрдП рд╣рдо рд╡рд┐рднрд┐рдиреНрди FPR рдФрд░ TPR рдХреЛ plot рдХрд░рддреЗ рд╣реИрдВ тАФ рдФрд░ рд╡реЛ рдмрдирд╛рддрд╛ рд╣реИ ROC curve.
ЁЯУР Formulae:
тЬЕ True Positive Rate (TPR) aka Recall:

тЬЕ False Positive Rate (FPR):

тАЛ
ЁЯФ╖ AUC рдХрд╛ рдЕрд░реНрде:
AUC = Area Under the Curve
рдпрд╣ ROC curve рдХреЗ рдиреАрдЪреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдорд╛рди рд╣реИред
AUC рдХрд╛ рдорд╛рди 0 рдФрд░ 1 рдХреЗ рдмреАрдЪ рд╣реЛрддрд╛ рд╣реИ:
AUC Score | Meaning |
---|---|
1.0 | Perfect model |
0.9 тАУ 1.0 | Excellent |
0.8 тАУ 0.9 | Good |
0.7 тАУ 0.8 | Fair |
0.5 | Random guess (no skill) |
< 0.5 | Worse than random (bad model) |
тЬЕ Python Code (Scikit-learn + Visualization):
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# Sample data
X, y = make_classification(n_samples=1000, n_classes=2, n_informative=3)
# Train model
model = LogisticRegression()
model.fit(X, y)
# Get predicted probabilities
y_scores = model.predict_proba(X)[:, 1]
# Compute FPR, TPR
fpr, tpr, thresholds = roc_curve(y, y_scores)
# Compute AUC
roc_auc = auc(fpr, tpr)
# Plot
plt.figure(figsize=(8,6))
plt.plot(fpr, tpr, label=f'ROC Curve (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], 'k--', label='Random Guess')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC-AUC Curve')
plt.legend()
plt.grid(True)
plt.show()
ЁЯУК ROC vs Precision-Recall Curve:
Title Page Separator Site title
Feature | ROC Curve | Precision-Recall Curve |
---|---|---|
Focuses on | All classes (balanced data) | Positive class (imbalanced data) |
X-axis | False Positive Rate | Recall |
Y-axis | True Positive Rate (Recall) | Precision |
тЬЕ Imbalanced datasets рдкрд░ Precision-Recall Curve рдЬрд╝реНрдпрд╛рджрд╛ informative рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
ЁЯУД Summary Table:
Concept | Description |
---|---|
ROC Curve | TPR vs FPR plot for various thresholds |
AUC | ROC Curve рдХреЗ рдиреАрдЪреЗ рдХрд╛ рдХреНрд╖реЗрддреНрд░ |
Best Case | AUC = 1.0 (Perfect classifier) |
Worst Case | AUC = 0.5 (Random guessing) |
Use Cases | Binary classification performance check |
ЁЯУЭ Practice Questions:
- ROC Curve рдореЗрдВ X рдФрд░ Y axes рдХреНрдпрд╛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ?
- AUC рдХрд╛ score рдХрд┐рд╕ range рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
- ROC рдФрд░ Precision-Recall Curve рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
- ROC curve рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ?
- рдХреНрдпрд╛ AUC metric imbalanced datasets рдХреЗ рд▓рд┐рдП reliable рд╣реИ?