Hodnocení výkonu modelu

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

David Cecchini

Data Scientist

Přesnost není příliš vypovídající

Úloha s 20 třídami a přesností 80 %. Je model dobrý?

  • Dokáže správně klasifikovat všechny třídy?
  • Je přesnost stejná pro každou třídu?
  • Přeučuje se model na majoritní třídě?

Nevím!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Matice záměn

Porovnání skutečných a předpovězených hodnot pro každou třídu

Znázorňuje matici záměn s rozdíly mezi skutečnými a předpovídanými štítky

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Přesnost (Precision)

Přesnost (Precision)

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

Příklad:

$$ \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 $$

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Úplnost (Recall)

Úplnost (Recall)

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

Příklad:

$$ \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 $$

Rekurentní neuronové sítě (RNN) pro jazykové modelování s 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}}}$$

Příklad:

$$ 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 $$

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Matice záměn v 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)
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Výkonnostní metriky

Metriky ze 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
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Výkonnostní metriky

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

Přidejte average=None do funkcí precision, recall a 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])
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Klasifikační zpráva

Jedna funkce pro vše:

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
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Lass uns üben!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Preparing Video For Download...