Đánh giá hiệu suất mô hình

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

David Cecchini

Data Scientist

Accuracy chưa đủ thông tin

Bài toán 20 lớp với accuracy 80%. Mô hình có tốt không?

  • Có phân loại đúng mọi lớp không?
  • Accuracy có giống nhau cho từng lớp không?
  • Mô hình có overfit vào lớp chiếm đa số không?

Tôi không chắc!

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Ma trận nhầm lẫn

Kiểm tra nhãn thật và dự đoán theo từng lớp

Hiển thị ma trận nhầm lẫn, so sánh nhãn thật và dự đoán

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Precision

Precision

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

Ví dụ:

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

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Recall

Recall

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

Ví dụ:

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

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với 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}}}$$

Ví dụ:

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

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Ma trận nhầm lẫn của Sklearn

from sklearn.metrics import confusion_matrix

# Xây dựng ma trận nhầm lẫn confusion_matrix(y_true, y_pred)

Kết quả:

array([[76,  2,  0],
       [ 7,  1,  2],
       [ 9,  0,  3]], dtype=int64)
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Chỉ số hiệu suất

Chỉ số từ sklearn

# Hàm trong 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
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Chỉ số hiệu suất

# Độ chính xác (accuracy)
print(accuracy_score(y_true, y_pred))
$ 0.80

Thêm average=None cho các hàm precision, recall và f1

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])
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Báo cáo phân loại

Một hàm tính tất cả:

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
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Ayo berlatih!

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Preparing Video For Download...