Наскільки добра ваша модель?

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

George Boorman

Core Curriculum Manager, DataCamp

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

  • Оцінювання моделі за точністю:

    • Частка правильно класифікованих зразків

    • Не завжди корисна метрика

Кероване навчання зі 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

  • Точність:

ch3_1_v3.030.png

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

Precision

precision.png

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

precision_formula.png

  • Висока precision = менше хибних спрацьовувань
  • Висока precision: небагато легітимних транзакцій помилково визнано шахрайськими
Кероване навчання зі scikit-learn

Recall

recall.png

  • Повнота (recall)

recall_formula.png

  • Високий recall = менше хибних пропусків
  • Високий recall: більшість шахрайських транзакцій виявлено правильно
Кероване навчання зі 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...