Логістична регресія та крива ROC

Кероване навчання зі scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Логістична регресія для бінарної класифікації

  • Логістична регресія використовується для задач класифікації

  • Вона повертає ймовірності

  • Якщо ймовірність $ \ p>0.5$:

    • Дані позначаються як 1
  • Якщо ймовірність $ \ p<0.5$:

    • Дані позначаються як 0
Кероване навчання зі scikit-learn

Лінійна межа рішення

точкова діаграма feature1 vs feature2 зі прямолінійною межею рішення для передбачення відтоку зліва направо

Кероване навчання зі scikit-learn

Логістична регресія в 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)
Кероване навчання зі scikit-learn

Прогнозування ймовірностей

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

print(y_pred_probs[0])
[0.08961376]
Кероване навчання зі scikit-learn

Пороги ймовірності

  • Типовий поріг для логістичної регресії = 0.5

  • Це не унікально для логістичної регресії

    • Класифікатори KNN теж мають пороги
  • Що буде, якщо змінювати поріг?

Кероване навчання зі scikit-learn

Крива ROC

частка істинно-позитивних проти частки хибно-позитивних із пунктирною лінією віднизу зліва догори вправо

Кероване навчання зі scikit-learn

Крива ROC

нульовий поріг виділено у верхньому правому куті

Кероване навчання зі scikit-learn

Крива ROC

поріг 1 також виділено внизу ліворуч

Кероване навчання зі scikit-learn

Крива ROC

обидва пороги виділено

Кероване навчання зі scikit-learn

Крива ROC

Точки вигинаються вгору і вправо над пунктирною лінією, що відповідає різним порогам

Кероване навчання зі scikit-learn

Крива ROC

Лінія вигинається вгору і вправо над пунктирною лінією, що відповідає різним порогам

Кероване навчання зі scikit-learn

Побудова кривої 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()
Кероване навчання зі scikit-learn

Побудова кривої ROC

графік кривої ROC для набору відтоку: лінія йде вгору і вправо знизу зліва

Кероване навчання зі scikit-learn

ROC AUC

графік кривої ROC для набору відтоку: лінія йде вгору і вправо знизу зліва, позначено p=0.67

Кероване навчання зі scikit-learn

ROC AUC у scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Кероване навчання зі scikit-learn

Давайте потренуємось!

Кероване навчання зі scikit-learn

Preparing Video For Download...