Regresja logistyczna i krzywa ROC

Nadzorowane uczenie maszynowe z scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Regresja logistyczna w klasyfikacji binarnej

  • Regresja logistyczna służy do problemów klasyfikacji

  • Regresja logistyczna zwraca prawdopodobieństwa

  • Jeśli prawdopodobieństwo $ \ p>0.5$:

    • Dane są etykietowane 1
  • Jeśli prawdopodobieństwo $ \ p<0.5$:

    • Dane są etykietowane 0
Nadzorowane uczenie maszynowe z scikit-learn

Liniowa granica decyzyjna

wykres rozrzutu cechy1 vs cechy2 z prostoliniową granicą decyzyjną do przewidywania rezygnacji, przebiegającą od lewej do prawej

Nadzorowane uczenie maszynowe z scikit-learn

Regresja logistyczna w 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)
Nadzorowane uczenie maszynowe z scikit-learn

Prognozowanie prawdopodobieństw

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

print(y_pred_probs[0])
[0.08961376]
Nadzorowane uczenie maszynowe z scikit-learn

Progi prawdopodobieństwa

  • Domyślny próg regresji logistycznej = 0,5

  • Nie dotyczy wyłącznie regresji logistycznej

    • Klasyfikatory KNN również mają progi
  • Co się stanie, gdy zmienimy próg?

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

wskaźnik prawdziwie pozytywnych vs wskaźnik fałszywie pozytywnych z przerywaną linią od lewego dolnego do prawego górnego rogu

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

próg zerowy zaznaczony w prawym górnym rogu

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

próg 1 zaznaczony również w lewym dolnym rogu

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

oba progi zaznaczone

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

Punkty układające się w łuk w górę i w prawo powyżej przerywanej linii, reprezentujące różne progi

Nadzorowane uczenie maszynowe z scikit-learn

Krzywa ROC

linia układająca się w łuk w górę i w prawo powyżej przerywanej linii, reprezentująca różne progi

Nadzorowane uczenie maszynowe z scikit-learn

Wykres krzywej 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()
Nadzorowane uczenie maszynowe z scikit-learn

Wykres krzywej ROC

wykres krzywej ROC dla zbioru danych o rezygnacji, z linią przesuwającą się w górę i w prawo od lewego dolnego rogu

Nadzorowane uczenie maszynowe z scikit-learn

ROC AUC

wykres krzywej ROC dla zbioru danych o rezygnacji, z linią przesuwającą się w górę i w prawo od lewego dolnego rogu, z adnotacją p=0,67

Nadzorowane uczenie maszynowe z scikit-learn

ROC AUC w scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Nadzorowane uczenie maszynowe z scikit-learn

Czas na ćwiczenia!

Nadzorowane uczenie maszynowe z scikit-learn

Preparing Video For Download...