Evaluarea performanței modelului

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

David Cecchini

Data Scientist

Acuratețea nu este suficient de informativă

Sarcină cu 20 de clase și 80% acuratețe. Modelul este bun?

  • Poate clasifica corect toate clasele?
  • Este acuratețea aceeași pentru fiecare clasă?
  • Modelul supraînvață pe clasa majoritară?

Nu știu!

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Matricea de confuzie

Verificarea valorilor reale și prezise pentru fiecare clasă

Prezintă matricea de confuzie, ilustrând diferențele dintre etichetele reale și cele prezise

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Precizie

Precizie

$$\text{Precision}_{\text{class}} = \frac{\text{Correct}_{\text{class}}}{\text{Predicted}_{\text{class}}}$$

În exemplu:

$$ \text{Precision}_{\text{sci.space}} = \frac{76}{76+7+9} = 0.83 $$ $$ \text{Precision}_{\text{alt.atheism}} = \frac{1}{2+1+0} = 0.33 $$ $$ \text{Precision}_{\text{soc.religion.christian}} = \frac{3}{0+2+3} = 0.60 $$

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Recall

Recall

$$\text{Recall}_{\text{class}} = \frac{\text{Correct}_{class}}{N_\text{class}}$$

În exemplu:

$$ \text{Recall}_{\text{sci.space}} = \frac{76}{76+2+0} = 0.97 $$ $$ \text{Recall}_{\text{alt.atheism}} = \frac{1}{7+1+2} = 0.10 $$ $$ \text{Recall}_{\text{soc.religion.christian}} = \frac{3}{9+0+3} = 0.25 $$

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

F1-Score

F1-Score

$$\text{F1 score} = 2 * \frac{\text{precision}_{\text{class}} * \text{recall}_{\text{class}}}{\text{precision}_{\text{class}} + \text{recall}_{\text{class}}}$$

În exemplu:

$$ f1score_{sci.space} = 2 \frac{0.83 * 0.97}{0.83 + 0.97} = 0.89 $$ $$ f1score_{alt.atheism} = 2 \frac{033 * 0.10}{033 + 0.10} = 0.15 $$ $$ f1score_{soc.religion.christian} = 2 \frac{060 * 0.25}{060 + 0.25} = 0.35 $$

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Matricea de confuzie Sklearn

from sklearn.metrics import confusion_matrix

# Build the confusion matrix confusion_matrix(y_true, y_pred)

Output:

array([[76,  2,  0],
       [ 7,  1,  2],
       [ 9,  0,  3]], dtype=int64)
Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Metrici de performanță

Metrici din sklearn

# Functions of sklearn
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Metrici de performanță

# Accuracy
print(accuracy_score(y_true, y_pred))
$ 0.80

Adăugați average=None la funcțiile de precizie, recall și f1 score

print(precision_score(y_true, y_pred, average=None))
print(recall_score(y_true, y_pred, average=None))
print(f1_score(y_true, y_pred, average=None))
$ array([0.83, 0.33, 0.60])
$ array([0.97, 0.10, 0.25])
$ array([0.89, 0.15, 0.35])
Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Raport de clasificare

O singură funcție măsoară totul:

lab_names = ['sci.space', 'alt.atheism', 'soc.religion.christian']
print(classification_report(y_true, y_pred, target_names=lab_names))
                        precision    recall  f1-score   support

             sci.space       0.83      0.97      0.89        78
           alt.atheism       0.33      0.10      0.15        10
soc.religion.christian       0.60      0.25      0.35        12

             micro avg       0.80      0.80      0.80       100
             macro avg       0.59      0.44      0.47       100
          weighted avg       0.75      0.80      0.76       100
Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Să exersăm!

Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras

Preparing Video For Download...