Queen Mobile Blog

“Đánh giá hiệu quả mô hình ML/AI của bạn: Bí quyết từ Sara A. Metwalli”

Sara A. Metwalli

#TicketLearning #SaraAMetwalli #HọcMáy #TríTuệNhânTạo #ĐánhGiáHiệuSuất #SVC #MaTrậnNhầmLẫn #ĐộChínhXác #ThuHồi #Điểmf1

Học mọi thứ bằng cách vừa học vừa làm, bao gồm cả học máy và trí tuệ nhân tạo. Xây dựng mô hình cho các ứng dụng khác nhau là cách tốt nhất để làm cho kiến thức của bạn trở nên cụ thể hơn về học máy. Bài viết của Sara A. Metwalli cho chúng ta biết cách đánh giá hiệu suất của các mô hình học máy/trí tuệ nhân tạo, và đó là cách duy nhất để cải thiện hiệu suất.

Bất kể loại mô hình, bạn có thể thực hiện các bước để đánh giá mô hình của mình và cải thiện hiệu suất của mô hình. Sử dụng bộ dữ liệu Wine từ sklearn, áp dụng trình phân loại vectơ hỗ trợ (SVC) và các metrix đánh giá như ma trận nhầm lẫn, độ chính xác, thu hồi và điểm f1 giúp bạn đánh giá mô hình của mình.

Quan trọng nhất là hiểu rõ ý nghĩa của các chỉ số đánh giá, bao gồm độ chính xác, thu hồi, và điểm f1. Đường link tới video của CodeBasics sẽ giúp bạn hiểu rõ hơn về mối quan hệ giữa các chỉ số đó.

Nguồn: https://techtoday.co/how-to-evaluate-the-performance-of-your-ml-ai-models-by-sara-a-metwalli-may-2023/

Đánh giá chính xác là cách duy nhất để cải thiện hiệu suất

Ảnh của Scott Graham trên Bapt

Vừa học vừa làm là một trong những cách tiếp cận tốt nhất để học mọi thứ, từ công nghệ đến một ngôn ngữ mới hoặc nấu một món ăn mới. Sau khi bạn đã học những kiến ​​thức cơ bản về một lĩnh vực hoặc một ứng dụng, bạn có thể xây dựng dựa trên kiến ​​thức đó bằng cách hành động. Xây dựng mô hình cho các ứng dụng khác nhau là cách tốt nhất để làm cho kiến ​​thức của bạn trở nên cụ thể về học máy và trí tuệ nhân tạo.

Mặc dù cả hai trường (hoặc thực sự là các trường phụ, vì chúng chồng chéo lên nhau) đều có các ứng dụng trong nhiều ngữ cảnh khác nhau, nhưng các bước để tìm hiểu cách xây dựng một mô hình ít nhiều giống nhau bất kể trường ứng dụng mục tiêu là gì.

Các mô hình ngôn ngữ AI như ChatGPT và Bard đang trở nên phổ biến và được cả những người mới làm quen với công nghệ cũng như khán giả nói chung quan tâm vì chúng có thể rất hữu ích trong cuộc sống hàng ngày của chúng ta.

Giờ đây, khi có nhiều mẫu được phát hành và giới thiệu, người ta có thể hỏi, điều gì tạo nên “Tốt” Mô hình AI/ML và làm thế nào chúng ta có thể đánh giá hiệu suất của một mô hình?

Đây là những gì chúng ta sẽ đề cập trong bài viết này. Nhưng một lần nữa, chúng tôi cho rằng bạn đã xây dựng mô hình AI hoặc ML. Bây giờ, bạn muốn đánh giá và cải thiện hiệu suất của nó (nếu cần). Tuy nhiên, một lần nữa, bất kể loại mô hình bạn có và ứng dụng cuối cùng của bạn là gì, bạn có thể thực hiện các bước để đánh giá mô hình của mình và cải thiện hiệu suất của mô hình.

Để giúp chúng tôi làm theo các khái niệm, hãy sử dụng bộ dữ liệu Wine từ sklearn (1), áp dụng trình phân loại vectơ hỗ trợ (SVC), sau đó kiểm tra các số liệu của nó.

Vì vậy, hãy nhảy ngay vào…

Trước tiên, hãy nhập các thư viện mà chúng ta sẽ sử dụng (đừng lo lắng về những gì mỗi thư viện làm bây giờ, chúng ta sẽ làm điều đó!).

import pandas as pd
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score
import matplotlib.pyplot as plt

Bây giờ, chúng tôi đọc tập dữ liệu của mình, áp dụng trình phân loại và đánh giá nó.

wine_data = datasets.load_wine()
X = wine_data.data
y = wine_data.target

Tùy thuộc vào giai đoạn của bạn trong quá trình học tập, bạn có thể cần truy cập vào một lượng lớn dữ liệu mà bạn có thể sử dụng để đào tạo, kiểm tra và đánh giá. Ngoài ra, bạn có thể sử dụng các dữ liệu khác nhau để đào tạo và kiểm tra mô hình của mình vì điều đó sẽ ngăn bạn đánh giá thực sự hiệu suất của mô hình.

Để vượt qua thách thức đó, hãy chia dữ liệu của bạn thành ba tập hợp ngẫu nhiên nhỏ hơn và sử dụng chúng để đào tạo, thử nghiệm và xác thực.

Một nguyên tắc nhỏ để thực hiện việc phân chia đó là cách tiếp cận 60,20,20. Bạn sẽ sử dụng 60% dữ liệu để đào tạo, 20% để xác thực và 20% để thử nghiệm. Bạn cần xáo trộn dữ liệu của mình trước khi thực hiện phân tách để đảm bảo thể hiện dữ liệu đó tốt hơn.

Tôi biết điều đó nghe có vẻ phức tạp, nhưng may mắn thay, ticket-learning đã giải cứu bằng cách cung cấp một chức năng để thực hiện việc phân chia đó cho bạn, train_test_split().

Vì vậy, chúng tôi có thể lấy tập dữ liệu của mình và chia nó như sau:

X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.20, train_size=0.60, random_state=1, stratify=y)

Sau đó, sử dụng phần đào tạo của nó làm đầu vào cho bộ phân loại.

#Scale data
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
#Apply SVC model
svc = SVC(kernel="linear", C=10.0, random_state=1)
svc.fit(X_train, Y_train)
#Obtain predictions
Y_pred = svc.predict(X_test)

Tại thời điểm này, chúng tôi có một số kết quả để “đánh giá”.

Trước khi bắt đầu quá trình đánh giá, chúng ta phải tự hỏi mình một câu hỏi thiết yếu về mô hình chúng ta sử dụng: Điều gì sẽ làm cho mô hình này tốt?

Câu trả lời cho câu hỏi này phụ thuộc vào kiểu máy và cách bạn định sử dụng nó. Nói như vậy, có các số liệu đánh giá tiêu chuẩn mà các nhà khoa học dữ liệu sử dụng khi họ muốn kiểm tra hiệu suất của mô hình AI/ML, bao gồm:

  1. Sự chính xác là tỷ lệ dự đoán chính xác của mô hình trong tổng số dự đoán. Điều đó có nghĩa là, khi tôi chạy mô hình, có bao nhiêu dự đoán đúng trong số tất cả các dự đoán? Bài viết này đi sâu vào kiểm tra độ chính xác của một mô hình.
  2. Độ chính xác là tỷ lệ phần trăm dự đoán tích cực thực sự của mô hình trong số tất cả các dự đoán tích cực. Thật không may, độ chính xác và độ chính xác thường bị nhầm lẫn; một cách để làm rõ sự khác biệt giữa chúng là coi độ chính xác là mức độ gần của các dự đoán với các giá trị thực tế, trong khi độ chính xác là mức độ gần của các dự đoán đúng với nhau. Vì vậy, độ chính xác là thước đo tuyệt đối, nhưng cả hai đều quan trọng để đánh giá hiệu suất của mô hình.
  3. Nhớ lại là tỷ lệ dự đoán tích cực thực sự từ tất cả các trường hợp tích cực thực tế trong tập dữ liệu. Thu hồi nhằm mục đích tìm các dự đoán có liên quan trong một tập dữ liệu. Về mặt toán học, nếu chúng ta tăng khả năng thu hồi, chúng ta sẽ giảm độ chính xác của mô hình.
  4. Điểm F1 là tanh ấy là sự kết hợp trung bình của độ chính xác và độ thu hồi, cung cấp thước đo cân bằng về hiệu suất của mô hình bằng cách sử dụng cả độ chính xác và độ thu hồi. Video này của CodeBasics thảo luận về mối quan hệ giữa độ chính xác, khả năng thu hồi và điểm F1 cũng như cách tìm sự cân bằng tối ưu của các chỉ số đánh giá đó.
Video theo CodeBasics

Bây giờ, hãy tính toán các số liệu khác nhau cho dữ liệu dự đoán. Cách chúng tôi sẽ làm điều đó là hiển thị ma trận nhầm lẫn đầu tiên. Ma trận nhầm lẫn chỉ đơn giản là kết quả thực tế của dữ liệu so với kết quả dự đoán.

conf_matrix = confusion_matrix(y_true=y_test, y_pred=y_pred)
#Plot the confusion matrix
fig, ax = plt.subplots(figsize=(5, 5))
ax.matshow(conf_matrix, cmap=plt.cm.Oranges, alpha=0.3)
for i in range(conf_matrix.shape(0)):
for j in range(conf_matrix.shape(1)):
ax.text(x=j, y=i,s=conf_matrix(i, j), va="center", ha="center", size="xx-large")
plt.xlabel('Predicted Values', fontsize=18)
plt.ylabel('Actual Values', fontsize=18)
plt.show()

Ma trận nhầm lẫn cho tập dữ liệu của chúng tôi sẽ trông giống như,

Nếu nhìn vào ma trận nhầm lẫn này, chúng ta có thể thấy rằng giá trị thực tế là “1” trong một số trường hợp trong khi giá trị dự đoán là “0”. Điều đó có nghĩa là trình phân loại không chính xác %100.

Chúng tôi có thể tính toán độ chính xác, độ chính xác, thu hồi và điểm f1 của bộ phân loại này bằng cách sử dụng mã này.

print('Precision: %.3f' % precision_score(Y_test, Y_pred, average="micro"))
print('Recall: %.3f' % recall_score(Y_test, Y_pred, average="micro"))
print('Accuracy: %.3f' % accuracy_score(Y_test, Y_pred))
print('F1 Score: %.3f' % f1_score(Y_test, Y_pred, average="micro"))

Đối với ví dụ cụ thể này, kết quả cho những điều đó là:

  1. Độ chính xác = 0,889
  2. Nhớ lại = 0,889
  3. Độ chính xác = 0,889
  4. Điểm F1 = 0,889

Mặc dù bạn thực sự có thể sử dụng các phương pháp khác nhau để đánh giá mô hình của mình, nhưng một số phương pháp đánh giá sẽ ước tính hiệu suất của mô hình tốt hơn dựa trên loại mô hình. Ví dụ: ngoài các phương pháp trên, nếu mô hình bạn đang đánh giá là mô hình hồi quy (hoặc mô hình bao gồm hồi quy), bạn cũng có thể sử dụng:

– Lỗi bình phương trung bình (MSE) về mặt toán học là trung bình của sự khác biệt bình phương giữa các giá trị dự đoán và thực tế.

– Lỗi tuyệt đối trung bình (MAE) là mức trung bình của sự khác biệt tuyệt đối giữa giá trị dự đoán và thực tế.

Hai số liệu này có liên quan chặt chẽ với nhau, nhưng về mặt triển khai, MAE đơn giản hơn (ít nhất là về mặt toán học) so với MSE. Tuy nhiên, MAE không hoạt động tốt với các lỗi nghiêm trọng, không giống như MSE, vốn nhấn mạnh các lỗi (vì nó bình phương chúng).

Trước khi thảo luận về siêu tham số, trước tiên hãy phân biệt giữa siêu tham số và tham số. Tham số là cách một mô hình được xác định để giải quyết vấn đề. Ngược lại, siêu tham số được sử dụng để kiểm tra, xác thực và tối ưu hóa hiệu suất của mô hình. Các siêu tham số thường được các nhà khoa học dữ liệu (hoặc khách hàng, trong một số trường hợp) chọn để kiểm soát và xác thực quá trình học của mô hình và do đó, hiệu suất của mô hình.

Có nhiều loại siêu đường kính khác nhau mà bạn có thể sử dụng để xác thực mô hình của mình; một số là chung và có thể được sử dụng trên bất kỳ mô hình nào, chẳng hạn như:

Ngoài các siêu tham số ở trên, còn có các siêu tham số dành riêng cho mô hình như cường độ chính quy hóa hoặc số lớp ẩn trong việc triển khai mạng thần kinh. Video 15 phút này của APMonitor khám phá các siêu đường kính khác nhau và sự khác biệt của chúng.

Video của APMonitor

Xác thực một mô hình AI/ML không phải là một quá trình tuyến tính mà là một quá trình lặp đi lặp lại nhiều hơn. Bạn trải qua quá trình phân tách dữ liệu, điều chỉnh siêu tham số, phân tích và xác thực kết quả thường xuyên hơn một lần. Số lần bạn lặp lại quá trình đó phụ thuộc vào việc phân tích kết quả. Đối với một số kiểu máy, bạn có thể chỉ cần thực hiện việc này một lần; đối với những người khác, bạn có thể cần phải làm điều đó một vài lần.

Nếu cần lặp lại quy trình, bạn sẽ sử dụng thông tin chi tiết từ lần đánh giá trước để cải thiện kiến ​​trúc, quy trình đào tạo hoặc cài đặt siêu tham số của mô hình cho đến khi bạn hài lòng với hiệu suất của mô hình.

Khi bạn bắt đầu xây dựng các mô hình ML và AI của riêng mình, bạn sẽ nhanh chóng nhận ra rằng việc chọn và triển khai mô hình là một phần dễ dàng của quy trình làm việc. Tuy nhiên, thử nghiệm và đánh giá là phần sẽ chiếm phần lớn quá trình phát triển. Đánh giá mô hình AI/ML là một quy trình lặp đi lặp lại và thường tốn thời gian, đồng thời yêu cầu phân tích, thử nghiệm và tinh chỉnh cẩn thận để đạt được hiệu suất mong muốn.

May mắn thay, bạn càng có nhiều kinh nghiệm xây dựng nhiều mô hình thì quá trình đánh giá hiệu suất mô hình của bạn sẽ càng có hệ thống hơn. Và đó là một kỹ năng đáng giá khi xem xét tầm quan trọng của việc đánh giá mô hình của bạn, chẳng hạn như:

  1. Việc đánh giá các mô hình của chúng tôi cho phép chúng tôi đo lường một cách khách quan các chỉ số của mô hình, giúp hiểu được điểm mạnh và điểm yếu của mô hình, đồng thời cung cấp thông tin chuyên sâu về khả năng dự đoán hoặc ra quyết định của mô hình.
  2. Nếu tồn tại các mô hình khác nhau có thể giải quyết cùng một vấn đề, thì việc đánh giá chúng cho phép chúng tôi so sánh hiệu suất của chúng và chọn mô hình phù hợp nhất với ứng dụng của mình.
  3. Đánh giá cung cấp thông tin chi tiết về các điểm yếu của mô hình, cho phép cải thiện thông qua phân tích các lỗi và các khu vực mà mô hình hoạt động kém.

Vì vậy, hãy kiên nhẫn và tiếp tục xây dựng các mô hình; nó trở nên tốt hơn và hiệu quả hơn với nhiều mô hình bạn xây dựng hơn. Đừng để các chi tiết quá trình làm bạn nản lòng. Nó có thể trông giống như một quá trình phức tạp, nhưng một khi bạn hiểu các bước, nó sẽ trở thành bản chất thứ hai đối với bạn.

(1) Lichman, M. (2013). Kho lưu trữ máy học UCI. Irvine, CA: Đại học California,
Trường Thông tin và Khoa học Máy tính. (CC BY 4.0)


Exit mobile version