Regresi logistik dan kurva ROC

Supervised Learning dengan scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Regresi logistik untuk klasifikasi biner

  • Regresi logistik digunakan untuk klasifikasi

  • Regresi logistik menghasilkan probabilitas

  • Jika probabilitas, $ \ p>0.5$:

    • Data diberi label 1
  • Jika probabilitas, $ \ p<0.5$:

    • Data diberi label 0
Supervised Learning dengan scikit-learn

Batas keputusan linear

plot sebar fitur1 vs fitur2, dengan batas keputusan garis lurus untuk memprediksi churn dari kiri ke kanan

Supervised Learning dengan scikit-learn

Regresi logistik di 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 dengan scikit-learn

Memprediksi probabilitas

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

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

Ambang probabilitas

  • Default, ambang regresi logistik = 0.5

  • Tidak khusus untuk regresi logistik

    • Klasifier KNN juga punya ambang
  • Apa yang terjadi jika kita ubah ambang?

Supervised Learning dengan scikit-learn

Kurva ROC

tingkat positif palsu vs tingkat positif benar dengan garis putus-putus dari kiri bawah ke kanan atas

Supervised Learning dengan scikit-learn

Kurva ROC

ambang 0 disorot di kanan atas

Supervised Learning dengan scikit-learn

Kurva ROC

ambang 1 juga disorot di kiri bawah

Supervised Learning dengan scikit-learn

Kurva ROC

kedua ambang disorot

Supervised Learning dengan scikit-learn

Kurva ROC

Titik melengkung ke atas-kanan di atas garis putus-putus, mewakili ambang berbeda

Supervised Learning dengan scikit-learn

Kurva ROC

garis melengkung ke atas-kanan di atas garis putus-putus, mewakili ambang berbeda

Supervised Learning dengan scikit-learn

Memplot kurva 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()
Supervised Learning dengan scikit-learn

Memplot kurva ROC

plot kurva ROC untuk data churn, dengan garis naik ke kanan dari kiri bawah

Supervised Learning dengan scikit-learn

ROC AUC

plot kurva ROC untuk data churn, garis naik ke kanan dari kiri bawah, dengan p=0.67 diberi anotasi

Supervised Learning dengan scikit-learn

ROC AUC di scikit-learn

from sklearn.metrics import roc_auc_score

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

Ayo berlatih!

Supervised Learning dengan scikit-learn

Preparing Video For Download...