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

Обучение с учителем с помощью scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

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

  • Логистическая регрессия используется для задач классификации

  • Логистическая регрессия возвращает вероятности

  • Если вероятность $ \ p>0.5$:

    • Данные получают метку 1
  • Если вероятность $ \ p<0.5$:

    • Данные получают метку 0
Обучение с учителем с помощью scikit-learn

Линейная граница решения

точечный график признака 1 и признака 2 с прямой границей решения для предсказания оттока, проходящей слева направо

Обучение с учителем с помощью 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...