Học máy - Chỉ số hiệu suất

Có nhiều số liệu khác nhau mà chúng ta có thể sử dụng để đánh giá hiệu suất của các thuật toán ML, phân loại cũng như các thuật toán hồi quy. Chúng tôi phải cẩn thận lựa chọn các chỉ số để đánh giá hiệu suất ML bởi vì -

  • Hiệu suất của các thuật toán ML được đo lường và so sánh như thế nào sẽ hoàn toàn phụ thuộc vào số liệu bạn chọn.

  • Cách bạn xác định tầm quan trọng của các đặc điểm khác nhau trong kết quả sẽ bị ảnh hưởng hoàn toàn bởi số liệu bạn chọn.

Chỉ số hiệu suất cho các vấn đề phân loại

Chúng ta đã thảo luận về phân loại và các thuật toán của nó trong các chương trước. Ở đây, chúng ta sẽ thảo luận về các số liệu hiệu suất khác nhau có thể được sử dụng để đánh giá các dự đoán cho các vấn đề phân loại.

Ma trận hỗn loạn

Đây là cách dễ nhất để đo hiệu suất của một bài toán phân loại trong đó kết quả đầu ra có thể là hai hoặc nhiều loại lớp. Ma trận nhầm lẫn không là gì ngoài một bảng có hai chiều viz. “Thực tế” và “Dự đoán” và hơn nữa, cả hai thứ nguyên đều có “Khẳng định thật (TP)”, “Phủ định thật (TN)”, “Khẳng định sai (FP)”, “Phủ định giả (FN)” như được hiển thị bên dưới -

Giải thích các thuật ngữ liên quan đến ma trận nhầm lẫn như sau:

  • True Positives (TP) - Đây là trường hợp khi cả lớp thực tế và lớp dự đoán của điểm dữ liệu là 1.

  • True Negatives (TN) - Đó là trường hợp khi cả lớp thực tế và lớp dự đoán của điểm dữ liệu bằng 0.

  • False Positives (FP) - Trường hợp lớp điểm dữ liệu thực tế là 0 và lớp điểm dữ liệu dự đoán là 1.

  • False Negatives (FN) - Trường hợp lớp điểm dữ liệu thực tế là 1 và lớp điểm dữ liệu dự đoán là 0.

Chúng ta có thể sử dụng hàm repeat_matrix của sklearn.metrics để tính toán Ma trận nhầm lẫn của mô hình phân loại của chúng ta.

Độ chính xác của phân loại

Đây là thước đo hiệu suất phổ biến nhất cho các thuật toán phân loại. Nó có thể được định nghĩa là số dự đoán đúng được thực hiện dưới dạng tỷ lệ của tất cả các dự đoán được thực hiện. Chúng ta có thể dễ dàng tính toán nó bằng ma trận nhầm lẫn với sự trợ giúp của công thức sau:

$$ Accuracy = \ frac {TP + TN} {+++} $$

Chúng tôi có thể sử dụng hàm precision_score của sklearn.metrics để tính độ chính xác của mô hình phân loại của chúng tôi.

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

Báo cáo này bao gồm điểm số của Precision, Recall, F1 và Support. Chúng được giải thích như sau:

Độ chính xác

Độ chính xác, được sử dụng trong truy xuất tài liệu, có thể được định nghĩa là số lượng tài liệu chính xác được trả về bởi mô hình ML của chúng tôi. Chúng ta có thể dễ dàng tính toán nó bằng ma trận nhầm lẫn với sự trợ giúp của công thức sau:

$$ Precision = \ frac {TP} {TP + FP} $$

Nhớ lại hoặc độ nhạy

Thu hồi có thể được định nghĩa là số lượng dương tính được trả về bởi mô hình ML của chúng tôi. Chúng ta có thể dễ dàng tính toán nó bằng ma trận nhầm lẫn với sự trợ giúp của công thức sau:

$$ Nhớ lại = \ frac {TP} {TP + FN} $$

Tính đặc hiệu

Tính cụ thể, trái ngược với sự thu hồi, có thể được định nghĩa là số lượng các phủ định được trả về bởi mô hình ML của chúng tôi. Chúng ta có thể dễ dàng tính toán nó bằng ma trận nhầm lẫn với sự trợ giúp của công thức sau:

$$ Đặc hiệu = \ frac {TN} {TN + FP} $$

Ủng hộ

Hỗ trợ có thể được định nghĩa là số lượng mẫu của phản hồi thực sự nằm trong mỗi loại giá trị mục tiêu.

Điểm F1

Điểm số này sẽ cung cấp cho chúng tôi giá trị trung bình hài hòa của độ chính xác và thu hồi. Về mặt toán học, điểm F1 là trung bình có trọng số của độ chính xác và thu hồi. Giá trị tốt nhất của F1 sẽ là 1 và xấu nhất sẽ là 0. Chúng ta có thể tính điểm F1 với sự trợ giúp của công thức sau:

= ∗ (∗) / (+)

Điểm F1 có đóng góp tương đối ngang nhau về độ chính xác và thu hồi.

Chúng tôi có thể sử dụng chức năng phân loại_report của sklearn.metrics để nhận báo cáo phân loại của mô hình phân loại của chúng tôi.

AUC (Diện tích dưới đường cong ROC)

AUC (Khu vực dưới đường cong) -ROC (Đặc tính hoạt động của máy thu) là một số liệu hiệu suất, dựa trên các giá trị ngưỡng khác nhau, cho các vấn đề phân loại. Như tên cho thấy, ROC là một đường cong xác suất và AUC đo lường khả năng phân tách. Nói một cách dễ hiểu, số liệu AUC-ROC sẽ cho chúng ta biết về khả năng của mô hình trong việc phân biệt các lớp. AUC cao hơn, mô hình tốt hơn.

Về mặt toán học, nó có thể được tạo ra bằng cách vẽ biểu đồ TPR (Tỷ lệ dương tính thực) tức là Độ nhạy hoặc thu hồi so với FPR (Tỷ lệ dương tính giả) tức là Độ đặc hiệu 1, ở các giá trị ngưỡng khác nhau. Sau đây là biểu đồ cho thấy ROC, AUC có TPR tại trục y và FPR tại trục x -

Chúng ta có thể sử dụng hàm roc_auc_score của sklearn.metrics để tính AUC-ROC.

LOGLOSS (Mất Logarit)

Nó còn được gọi là mất mát hồi quy Logistic hoặc mất mát entropy chéo. Về cơ bản, nó được định nghĩa dựa trên các ước tính xác suất và đo lường hiệu suất của một mô hình phân loại trong đó đầu vào là giá trị xác suất từ ​​0 đến 1. Có thể hiểu rõ ràng hơn bằng cách phân biệt nó với độ chính xác. Như chúng ta biết rằng độ chính xác là số lượng các dự đoán (giá trị dự đoán = giá trị thực tế) trong mô hình của chúng tôi trong khi Log Loss là mức độ không chắc chắn của dự đoán của chúng tôi dựa trên mức độ thay đổi của nó so với nhãn thực tế. Với sự trợ giúp của giá trị Log Loss, chúng tôi có thể có cái nhìn chính xác hơn về hiệu suất của mô hình của chúng tôi. Chúng ta có thể sử dụng hàm log_loss của sklearn.metrics để tính toán Log Loss.

Thí dụ

Sau đây là một công thức đơn giản bằng Python sẽ cung cấp cho chúng ta cái nhìn sâu sắc về cách chúng ta có thể sử dụng các số liệu hiệu suất được giải thích ở trên trên mô hình phân loại nhị phân -

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

Đầu ra

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334

Chỉ số hiệu suất cho các vấn đề hồi quy

Chúng ta đã thảo luận về hồi quy và các thuật toán của nó trong các chương trước. Ở đây, chúng ta sẽ thảo luận về các số liệu hiệu suất khác nhau có thể được sử dụng để đánh giá các dự đoán cho các vấn đề hồi quy.

Lỗi tuyệt đối trung bình (MAE)

Đây là số liệu lỗi đơn giản nhất được sử dụng trong các bài toán hồi quy. Về cơ bản, nó là tổng giá trị trung bình của sự khác biệt tuyệt đối giữa giá trị dự đoán và giá trị thực tế. Nói một cách dễ hiểu, với MAE, chúng ta có thể biết được mức độ sai của các dự đoán. MAE không chỉ ra hướng của mô hình tức là không có dấu hiệu nào về hoạt động kém hiệu quả hoặc hoạt động quá mức của mô hình. Sau đây là công thức tính MAE:

$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$

Đây, = Giá trị đầu ra thực tế

Và $ \ hat {Y} $ = Giá trị đầu ra dự đoán.

Chúng ta có thể sử dụng hàm mean_absolute_error của sklearn.metrics để tính MAE.

Lỗi hình vuông trung bình (MSE)

MSE giống như MAE, nhưng sự khác biệt duy nhất là nó bình phương sự khác biệt của các giá trị đầu ra thực tế và dự đoán trước khi tổng hợp tất cả chúng thay vì sử dụng giá trị tuyệt đối. Có thể nhận thấy sự khác biệt trong phương trình sau:

$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$

Đây, = Giá trị đầu ra thực tế

Và $ \ hat {Y} $ = Giá trị đầu ra dự đoán.

Chúng ta có thể sử dụng hàm mean_squared_error của sklearn.metrics để tính MSE.

R Bình phương (R 2 )

R Chỉ số bình phương thường được sử dụng cho mục đích giải thích và cung cấp chỉ báo về mức độ tốt hoặc phù hợp của một tập hợp các giá trị đầu ra được dự đoán với giá trị đầu ra thực tế. Công thức sau sẽ giúp chúng ta hiểu nó:

$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$

Trong phương trình trên, tử số là MSE và mẫu số là phương sai của các giá trị.

Chúng ta có thể sử dụng hàm r2_score của sklearn.metrics để tính giá trị bình phương R.

Thí dụ

Sau đây là một công thức đơn giản bằng Python sẽ cho chúng ta cái nhìn sâu sắc về cách chúng ta có thể sử dụng các số liệu hiệu suất được giải thích ở trên trên mô hình hồi quy -

from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))

Đầu ra

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999