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 sert aux problèmes de classification

  • Elle produit des probabilités

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

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

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

Frontière de décision linéaire

nuage de points de feature1 vs feature2, avec une frontière de décision linéaire pour prédire le désabonnement de gauche à droite

Apprentissage supervisé avec scikit-learn

Régression logistique avec 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édire 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é

  • Seuil par défaut en régression logistique = 0,5

  • Pas propre à la régression logistique

    • Les classifieurs KNN ont aussi des seuils
  • Que se passe-t-il si on fait varier le seuil ?

Apprentissage supervisé avec scikit-learn

La courbe ROC

taux de vrais positifs vs taux de faux positifs avec une ligne pointillée du bas gauche vers le haut droit

Apprentissage supervisé avec scikit-learn

La courbe ROC

seuil zéro en surbrillance en haut à droite

Apprentissage supervisé avec scikit-learn

La courbe ROC

seuil de 1 aussi en surbrillance en bas à gauche

Apprentissage supervisé avec scikit-learn

La courbe ROC

deux seuils en surbrillance

Apprentissage supervisé avec scikit-learn

La courbe ROC

Points formant une courbe vers le haut et la droite au-dessus de la ligne pointillée, selon divers seuils

Apprentissage supervisé avec scikit-learn

La courbe ROC

Ligne courbée vers le haut et la droite au-dessus de la ligne pointillée, selon divers seuils

Apprentissage supervisé avec scikit-learn

Tracer 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

Tracer la courbe ROC

tracé de courbe ROC pour l'ensemble sur le désabonnement, ligne montant vers la droite depuis le bas gauche

Apprentissage supervisé avec scikit-learn

Aire sous la courbe ROC (AUC)

tracé de courbe ROC pour l'ensemble sur le désabonnement, ligne montant vers la droite depuis le bas gauche, avec p=0.67 annoté

Apprentissage supervisé avec scikit-learn

AUC ROC avec 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...