Насколько хороша ваша модель?

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

George Boorman

Core Curriculum Manager, DataCamp

Метрики классификации

  • Оценка качества модели с помощью accuracy:

    • Доля правильно классифицированных образцов

    • Не всегда полезная метрика

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

Дисбаланс классов

  • Классификация мошеннических банковских транзакций

    • 99% транзакций — легитимные, 1% — мошеннические
  • Можно построить классификатор, который не предсказывает ни одной мошеннической транзакции

    • Точность — 99%!

    • Но он совершенно не справляется с задачей

    • Исходная цель не достигнута

  • Дисбаланс классов: неравномерное распределение классов

  • Нужен другой способ оценки качества

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

Матрица ошибок для оценки классификации

  • Матрица ошибок

confusion_matrix.png

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

Оценка качества классификации

 

predicted_labels.png

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

Оценка качества классификации

 

actual_labels.png

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

Оценка качества классификации

 

confusion_matrix.png

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

Оценка качества классификации

 

true_positive.png

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

Оценка качества классификации

 

true_negative.png

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

Оценка качества классификации

 

false_negative.png

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

Оценка качества классификации

 

false_positive.png

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

Оценка качества классификации

confusion_matrix.png

  • Accuracy:

ch3_1_v3.030.png

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

Точность (precision)

precision.png

  • Точность (precision)

precision_formula.png

  • Высокая точность = меньше ложноположительных срабатываний
  • Высокая точность: легитимные транзакции редко ошибочно помечаются как мошеннические
Обучение с учителем с помощью scikit-learn

Полнота (recall)

recall.png

  • Полнота (recall)

recall_formula.png

  • Высокая полнота = меньше ложноотрицательных срабатываний
  • Высокая полнота: большинство мошеннических транзакций определено верно
Обучение с учителем с помощью scikit-learn

F1-мера

  • F1-мера: $2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
Обучение с учителем с помощью scikit-learn

Матрица ошибок в scikit-learn

from sklearn.metrics import classification_report, confusion_matrix

knn = KNeighborsClassifier(n_neighbors=7)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
Обучение с учителем с помощью scikit-learn

Матрица ошибок в scikit-learn

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
Обучение с учителем с помощью scikit-learn

Отчёт о классификации в scikit-learn

print(classification_report(y_test, y_pred))
              precision    recall  f1-score   support

           0       0.86      0.99      0.92      1117
           1       0.76      0.16      0.26       217

    accuracy                           0.85      1334
   macro avg       0.81      0.57      0.59      1334
weighted avg       0.84      0.85      0.81      1334
Обучение с учителем с помощью scikit-learn

Давайте потренируемся!

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

Preparing Video For Download...