Logistische regressie en de ROC-curve

Supervised Learning met scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Logistische regressie voor binaire classificatie

  • Logistische regressie wordt gebruikt voor classificatie

  • Logistische regressie geeft probabiliteiten als output

  • Als de kans, $ \ p>0.5$:

    • Label 1
  • Als de kans, $ \ p<0.5$:

    • Label 0
Supervised Learning met scikit-learn

Lineaire beslissingsgrens

spreidingsdiagram van feature1 vs feature2, met een rechte beslissingsgrens voor churn van links naar rechts

Supervised Learning met scikit-learn

Logistische regressie in 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)
Supervised Learning met scikit-learn

Kansen voorspellen

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

print(y_pred_probs[0])
[0.08961376]
Supervised Learning met scikit-learn

Kansdrempels

  • Standaard drempel bij logistische regressie = 0,5

  • Niet uniek voor logistische regressie

    • KNN-classifiers hebben ook drempels
  • Wat gebeurt er als we de drempel variëren?

Supervised Learning met scikit-learn

De ROC-curve

truepositieve t.o.v. vals-positieve ratio met een gestippelde lijn van linksonder naar rechtsboven

Supervised Learning met scikit-learn

De ROC-curve

drempel 0 gemarkeerd rechtsboven

Supervised Learning met scikit-learn

De ROC-curve

ook drempel 1 gemarkeerd linksonder

Supervised Learning met scikit-learn

De ROC-curve

beide drempels gemarkeerd

Supervised Learning met scikit-learn

De ROC-curve

Punten buigen omhoog naar rechts boven de stippellijn, voor verschillende drempels

Supervised Learning met scikit-learn

De ROC-curve

Lijn buigt omhoog naar rechts boven de stippellijn, voor verschillende drempels

Supervised Learning met scikit-learn

De ROC-curve plotten

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()
Supervised Learning met scikit-learn

De ROC-curve plotten

roc-curveplot voor churn-dataset, met een lijn van linksonder naar rechtsboven

Supervised Learning met scikit-learn

ROC AUC

roc-curveplot voor churn-dataset, met een lijn van linksonder naar rechtsboven, met p=0.67 aangegeven

Supervised Learning met scikit-learn

ROC AUC in scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Supervised Learning met scikit-learn

Laten we oefenen!

Supervised Learning met scikit-learn

Preparing Video For Download...