Trang chủ Blog Phát triển offshore

Các phương pháp đánh giá mô hì...

Các phương pháp đánh giá mô hình học máy, học sâu (Machine learning & Deep learning)

Rabiloo

03-12-2021

Trong blog này, chúng ta sẽ thảo luận về các cách khác nhau để đánh giá mô hình học máy (machine learning) hoặc học sâu (deep learning) và lý do tại sao nên sử dụng mô hình này thay vì các mô hình khác. 

Những khái niệm chính sẽ được đề cập trong bài blog:

  • Confusion matrix

  • Accuracy

  • Precision

  • Recall

  • Specificity

  • F-score

  • ROC

  • AUC

  • Explained Variance

  • Mean Square Error

1. Lý do cần đánh giá mô hình 

Khi bạn đã xây dựng một mô hình machine learning và huấn luyện nó trên một tập dữ liệu, điều tiếp theo bạn nên làm là đánh giá hiệu năng của mô hình trên tập dữ liệu mới. 

Việc đánh giá mô hình giúp chúng ta giải quyết những vấn đề sau:

  • Mô hình đã được huấn luyện thành công hay chưa?

  • Mức độ thành công của mô hình tốt đến đâu?

  • Khi nào nên dừng quá trình huấn luyện?

  • Khi nào nên cập nhật mô hình?

Trả lời được 4 câu hỏi trên, chúng ta có thể quyết định mô hình này có thực sự phù hợp cho bài toán hay không.

Đánh giá một mô hình có tốt hay không thường được thực hiện trên dữ liệu mà mô hình chưa được huấn luyện. Tỷ lệ thường thấy của một tập dữ liệu huấn luyện so với tập dữ liệu thử nghiệm là 70% và 30%. 

Chúng ta sử dụng dữ liệu mới khi đánh giá mô hình nhằm giảm thiểu khả năng quá khớp (overfitting) đối với tập huấn luyện. Đôi khi sẽ hữu ích khi đánh giá mô hình và cùng lúc huấn luyện nó để tìm ra các chỉ số tốt nhất của một mô hình. Tuy nhiên, chúng ta không thể sử dụng bộ thử nghiệm để thực hiện đánh giá này. Hoặc chúng ta sẽ phải chọn các thông số hoạt động tốt nhất trên dữ liệu thử nghiệm, nhưng có thể không phải là các tham số bao quát nhất.

2. Chia tập dữ liệu để phù hợp cho việc đánh giá mô hình

Để có thể đánh giá mô hình trong khi xây dựng và chuẩn hóa nó, chúng ta có thể tạo ra một tập dữ liệu con - được biết đến là tập dữ liệu đánh giá. Một tập dữ liệu điển hình sẽ có tỷ lệ 60% cho tập huấn luyện, 20% cho tập đánh giá và 20% cho tập thử nghiệm.

Một điều rất quan trọng là độ hỗn loạn của tập dữ liệu có thể được tăng lên đáng kể khi bạn xáo trộn dữ liệu trước khi chia tập dữ liệu ra thành nhiều phần nhỏ. Điều này giúp cho mỗi tập dữ liệu con có thể thể hiện rõ ràng hơn tính chất của tập dữ liệu lớn. 

Ngoài ra, các bạn có thể đọc thêm về các phương pháp chia dataset khác như Hold-out/Repeated Hold-out (thường được sử dụng khi dataset lớn), Stratified sampling (dùng cho imbalanced dataset), Cross-Validation, Bootstrap Sampling,…

Chia tập dữ liệu để phù hợp cho việc đánh giá mô hình

Chia tập dữ liệu để phù hợp cho việc đánh giá mô hình

3. Các khái niệm, độ đo khi đánh giá mô hình

Độ đo bài toán phân loại 

Khi thực hiện bài toán phân loại, có 4 trường hợp của dự đoán có thể xảy ra:

  • True Positive (TP): đối tượng ở lớp Positive, mô hình phân đối tượng vào lớp Positive (dự đoán đúng)

  • True Negative (TN): đối tượng ở lớp Negative, mô hình phân đối tượng vào lớp Negative (dự đoán đúng)

  • False Positive (FP): đối tượng ở lớp Negative, mô hình phân đối tượng vào lớp Positive (dự đoán sai) – Type I Error

  • False Negative (FN): đối tượng ở lớp Positive, mô hình phân đối tượng vào lớp Negative (dự đoán sai) – Type II Error

Bốn trường hợp trên thường được biểu diễn dưới dạng ma trận hỗn loạn (confusion matrix). Chúng ta có thể tạo ra ma trận này sau khi dự đoán xong trên tập dữ liệu thử nghiệm và rồi phân loại các dự đoán vào một trong bốn trường hợp.

Confusion matrix - ma trận hỗn loạn

Confusion matrix - ma trận hỗn loạn

Trong thực tế có ba độ đo chủ yếu để đánh giá một mô hình phân loại là Accuracy, Precision and Recall.

  • Accuracy được định nghĩa là tỷ lệ phần trăm dự đoán đúng cho dữ liệu thử nghiệm. Nó có thể được tính toán dễ dàng bằng cách chia số lần dự đoán đúng cho tổng số lần dự đoán.

  • Precision được định nghĩa là phần nhỏ của các ví dụ có liên quan (tích cực thực sự) trong số tất cả các ví dụ được dự đoán là thuộc một lớp nhất định.

  • Recall được định nghĩa là phần nhỏ của các ví dụ được dự đoán thuộc về một lớp so với tất cả các ví dụ thực sự thuộc về lớp đó.

Nguồn: https://en.wikipedia.org/wiki/Precision_and_recall

Precision và Recall rất hữu ích trong trường hợp các lớp không được phân bổ đồng đều. Ví dụ như phát triển một thuật toán phân loại dự đoán xem ai đó có mắc bệnh hay không. Giả sử, tỷ lệ dân số mắc bệnh là 1%, công cụ dự đoán đưa ra kết quả là tất cả mọi người đều không mắc bệnh. Vậy công cụ vẫn đạt tỷ lệ chính xác là 99%. Tuy nhiên, chúng ta sẽ không tìm được ai là người mắc bệnh. Vậy độ hữu ích của công cụ là 0%. 

Vì vậy, điều quan trọng là phải đánh giá cả Precision và Recall của một mô hình để xác định ra được người bị bệnh hay không mà không có nhầm lẫn.

Để có thể kết hợp giữa Precision và Recall, chúng ta có thể tính điểm F-score.

Tham số β cho phép chúng ta kiểm soát sự cân bằng giữa Precision và Recall. 

  • β < 1 tập trung nhiều hơn vào Precision.

  • β > 1 tập trung nhiều hơn vào Recall.

  • β = 1 tập trung vào cả Precision và Recall.

Khi β = 1, ta sử dụng F1-score, là kỳ vọng harmonic (harmonic mean) của Precision và Recall. F1-score lớn khi cả 2 giá trị Precision và Recall đều lớn. Ngược lại, chỉ cần 1 giá trị nhỏ sẽ làm cho F1-Score nhỏ.

Trong các bài toán phân lớp, các thuật toán phân lớp thường dự đoán điểm số hay xác suất thuộc về một lớp của dữ liệu đầu vào. Điều này giúp ta biết được mức độ chắc chắn của mô hình khi phân lớp. Sau khi dự đoán xác suất hay điểm số, cần phải chuyển các giá trị đó về các nhãn của các lớp. Việc chuyển từ xác suất, điểm số sang các nhãn được quyết định bởi một “ngưỡng” (threshold). ROC curve là một công cụ để chọn ra ngưỡng phù hợp cho mô hình.

How to Use ROC Curves and Precision-Recall Curves for Classification in  Python

Nguồn: https://machinelearningmastery.com/roc-curves-and-precision-recall-curves-for-classification-in-python/ 

Với mỗi giá trị threshold, ta thu được các giá trị trên ROC curve:

  • True Positive Rate (hay Sensitivity – Recall): là độ nhạy của mô hình, cho biết mức độ dự đoán chính xác trong lớp positive. TPR là thương của số điểm dữ liệu được dự đoán đúng thuộc lớp positive với số điểm dữ liệu thuộc lớp positive. 

  • False Positive Rate: là xác suất mắc Type II Error.

  • Trong đó, Specificity cho biết mức độ dự đoán chính xác trong lớp negative.

Các điểm màu cam đại diện cho mỗi threshold, ứng với trục tung là giá trị TPR và trục hoành là giá trị FPR. Tùy thuộc vào bài toán để lựa chọn một điểm – ứng với một threshold phù hợp.

Area Under the ROC curve (AUC): là phần diện tích bên dưới ROC curve, dùng để đánh giá hiệu năng phân loại của các mô hình với nhau. Mô hình có AUC càng lớn (ROC curve càng gần góc cao bên trái) thì cho kết quả càng chính xác. Ngược lại, mô hình có ROC curve càng tiến tới đường chéo 45 độ (đường gạch đứt màu xanh ở hình trên), tức AUC càng thấp thì kết quả càng tệ. AUC càng cao thì mô hình càng dễ phân loại đúng cho cả lớp positive và negative.

Calculating AUC: the area under a ROC Curve (Revolutions)

Nguồn: https://blog.revolutionanalytics.com/2016/11/calculating-auc.html

Độ đo bài toán hồi quy

Các độ đo cho mô hình hồi quy khá khác so với các độ đo của mô hình phân loại vì bây giờ chúng ta phải dự đoán trong một khoảng liên tục thay vì một số các lớp rời rạc. Ví dụ như chúng ta xây dựng một mô hình dự đoán giá của một ngôi nhà là 2 tỷ đồng nhưng nó bán được 2,1 tỷ đồng thì đó được coi là mô hình tốt, trong khi bài toán phân loại chỉ quan tâm xem ngôi nhà đấy có được bán với giá 2 tỷ hay không. Vì sự khác nhau như vậy, chúng ta cần có những độ đo khác cho mô hình hồi quy.

Explained variance so sánh phương sai đó với phương sai trong sai số của mô hình, chỉ số này về cơ bản đại diện cho số lượng biến thể trong tập dữ liệu ban đầu mà mô hình có thể giải thích được.

Mean squared error được định nghĩa đơn giản là giá trị trung bình của sự khác biệt bình phương giữa đầu ra dự đoán và đầu ra lượng thực tế. Mean squared error thường được sử dụng vì nó không thể xác định được liệu dự đoán quá cao hay quá thấp, nó chỉ báo cáo rằng dự đoán không chính xác.

Hệ số R2 (R2 coefficient) thể hiện tỷ lệ phương sai trong kết quả mà mô hình của chúng tôi có thể dự đoán dựa trên các đặc điểm của nó.

Kết luận

Như vậy, bài viết này đã giới thiệu về lý do tại sao phải đánh giá mô hình, chia tập dữ liệu và khái niệm của các độ đo đánh giá mô hình cơ bản. Tuy nhiên, việc lựa chọn một cách đánh giá, hay độ đo nào còn phụ thuộc rất nhiều vào công việc mà bạn cần giải quyết. Vì vậy, qua bài viết này, mình hi vọng các bạn sẽ có cái nhìn rõ nét hơn về một bước rất quan trọng trong quy trình xây dựng một mô hình Machine Learning

Nếu bạn đang cần tìm một đối tác công nghệ để hợp tác phát triển những dự án công nghệ cao, trí tuệ nhân tạo, hãy cân nhắc tới dịch vụ của Rabiloo. 

 

ĐẶT LỊCH HẸN TƯ VẤN MIỄN PHÍ