Logistická regrese a ROC křivka

Supervised Learning with scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Logistická regrese pro binární klasifikaci

  • Logistická regrese se používá pro klasifikační úlohy

  • Logistická regrese vrací pravděpodobnosti

  • Pokud pravděpodobnost $ \ p>0.5$:

    • Data jsou označena 1
  • Pokud pravděpodobnost $ \ p<0.5$:

    • Data jsou označena 0
Supervised Learning with scikit-learn

Lineární rozhodovací hranice

bodový graf feature1 vs feature2 s přímou rozhodovací hranicí pro predikci odchodu zákazníků vedoucí zleva doprava

Supervised Learning with scikit-learn

Logistická regrese v 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 with scikit-learn

Predikce pravděpodobností

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

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

Prahy pravděpodobnosti

  • Výchozí práh logistické regrese = 0.5

  • Není specifické pro logistickou regresi

    • Klasifikátory KNN také mají prahy
  • Co se stane, pokud práh změníme?

Supervised Learning with scikit-learn

ROC křivka

míra skutečně pozitivních vs míra falešně pozitivních s tečkovanou čarou od levého dolního k pravému hornímu rohu

Supervised Learning with scikit-learn

ROC křivka

nulový práh zvýrazněn v pravém horním rohu

Supervised Learning with scikit-learn

ROC křivka

práh 1 zvýrazněn také v levém dolním rohu

Supervised Learning with scikit-learn

ROC křivka

oba prahy zvýrazněny

Supervised Learning with scikit-learn

ROC křivka

Body zakřivené nahoru a doprava nad tečkovanou čarou, představující různé prahy

Supervised Learning with scikit-learn

ROC křivka

křivka zakřivená nahoru a doprava nad tečkovanou čarou, představující různé prahy

Supervised Learning with scikit-learn

Vykreslení ROC křivky

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 with scikit-learn

Vykreslení ROC křivky

graf ROC křivky pro dataset odchodu zákazníků s čarou stoupající doprava od levého dolního rohu

Supervised Learning with scikit-learn

ROC AUC

graf ROC křivky pro dataset odchodu zákazníků s čarou stoupající doprava od levého dolního rohu, s anotací p=0.67

Supervised Learning with scikit-learn

ROC AUC v scikit-learn

from sklearn.metrics import roc_auc_score

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

Pojďme si procvičit!

Supervised Learning with scikit-learn

Preparing Video For Download...