Jak dobrý je váš model?

Supervised Learning with scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Klasifikační metriky

  • Měření výkonu modelu pomocí přesnosti:

    • Podíl správně klasifikovaných vzorků

    • Ne vždy užitečná metrika

Supervised Learning with scikit-learn

Nevyvážené třídy

  • Klasifikace pro detekci podvodných bankovních transakcí

    • 99 % transakcí je legitimních, 1 % je podvodných
  • Lze sestavit klasifikátor, který nepředpoví žádnou transakci jako podvodnou

    • 99% přesnost!

    • Ale zcela selhává při předpovídání podvodných transakcí

    • Nesplňuje svůj původní účel

  • Nevyvážené třídy: Nerovnoměrné zastoupení tříd

  • Je nutný jiný způsob hodnocení výkonu

Supervised Learning with scikit-learn

Matice záměn pro hodnocení výkonu klasifikace

  • Matice záměn

confusion_matrix.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

predicted_labels.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

actual_labels.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

confusion_matrix.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

true_positive.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

true_negative.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

false_negative.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

 

false_positive.png

Supervised Learning with scikit-learn

Hodnocení výkonu klasifikace

confusion_matrix.png

  • Přesnost (accuracy):

ch3_1_v3.030.png

Supervised Learning with scikit-learn

Preciznost

precision.png

  • Preciznost

precision_formula.png

  • Vysoká preciznost = nižší míra falešných pozitiv
  • Vysoká preciznost: Málo legitimních transakcí je označeno jako podvodné
Supervised Learning with scikit-learn

Úplnost

recall.png

  • Úplnost

recall_formula.png

  • Vysoká úplnost = nižší míra falešných negativů
  • Vysoká úplnost: Většina podvodných transakcí je správně předpovězena
Supervised Learning with scikit-learn

Skóre F1

  • Skóre F1: $2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
Supervised Learning with scikit-learn

Matice záměn v 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)
Supervised Learning with scikit-learn

Matice záměn v scikit-learn

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
Supervised Learning with scikit-learn

Klasifikační zpráva v 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
Supervised Learning with scikit-learn

Pojďme si procvičit!

Supervised Learning with scikit-learn

Preparing Video For Download...