Régression logistique et courbe ROC

Apprentissage supervisé avec scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Régression logistique pour la classification binaire

  • La régression logistique est utilisée pour les problèmes de classification

  • La régression logistique produit des probabilités

  • Si la probabilité, $ \ p>0.5$ :

    • Les données sont étiquetées avec 1
  • Si la probabilité, $ \ p<0.5$ :

    • Les données sont étiquetées avec 0
Apprentissage supervisé avec scikit-learn

Frontière de décision linéaire

diagramme en nuages de points de la caractéristique 1 par rapport à la caractéristique 2, avec une frontière de décision en ligne droite pour prédire le désabonnement, de gauche à droite

Apprentissage supervisé avec scikit-learn

Régression logistique dans scikit-learn

from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
Apprentissage supervisé avec scikit-learn

Prédiction des probabilités

y_pred_probs = logreg.predict_proba(X_test)[:, 1]

print(y_pred_probs[0])
[0.08961376]
Apprentissage supervisé avec scikit-learn

Seuils de probabilité

  • Par défaut, le seuil de régression logistique = 0,5

  • N’est pas spécifique à la régression logistique

    • Les classificateurs KNN ont également des seuils
  • Que se passe-t-il si l’on fait varier le seuil ?

Apprentissage supervisé avec scikit-learn

La courbe ROC

taux de vrais positifs par rapport au taux de faux positifs avec une ligne pointillée allant du bas à gauche au haut à droite

Apprentissage supervisé avec scikit-learn

La courbe ROC

seuil zéro mis en évidence en haut à droite

Apprentissage supervisé avec scikit-learn

La courbe ROC

seuil de 1 également mis en évidence en bas à gauche

Apprentissage supervisé avec scikit-learn

La courbe ROC

les deux seuils mis en évidence

Apprentissage supervisé avec scikit-learn

La courbe ROC

Points incurvés vers le haut et vers la droite au-dessus de la ligne pointillée, représentant différents seuils

Apprentissage supervisé avec scikit-learn

La courbe ROC

ligne incurvée vers le haut et vers la droite au-dessus de la ligne pointillée, représentant différents seuils

Apprentissage supervisé avec scikit-learn

Tracé de la courbe ROC

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Logistic Regression ROC Curve') plt.show()
Apprentissage supervisé avec scikit-learn

Tracé de la courbe ROC

tracé de la courbe ROC pour l’ensemble des données sur le désabonnement, avec une ligne du bas à gauche au haut à droite

Apprentissage supervisé avec scikit-learn

Aire sous la courbe ROC

tracé de la courbe ROC pour l’ensemble des données sur le désabonnement, avec une ligne du bas à gauche au haut à droite, avec une annotation p=0.67

Apprentissage supervisé avec scikit-learn

Aire sous la courbe ROC dans scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Apprentissage supervisé avec scikit-learn

Passons à la pratique !

Apprentissage supervisé avec scikit-learn

Preparing Video For Download...