Tập dữ liệu: Chia tập dữ liệu ban đầu

Tất cả các dự án kỹ thuật phần mềm tốt đều dành nhiều năng lượng cho việc kiểm thử ứng dụng. Tương tự, bạn nên kiểm thử mô hình học máy để xác định độ chính xác của kết quả dự đoán.

Tập huấn, xác thực và kiểm thử

Bạn nên kiểm thử mô hình dựa trên một tập hợp ví dụ khác với những ví dụ dùng để huấn luyện mô hình. Như bạn sẽ tìm hiểu sau một chút, việc kiểm thử trên nhiều ví dụ là bằng chứng mạnh mẽ hơn về khả năng phù hợp của mô hình so với việc kiểm thử trên cùng một tập hợp ví dụ. Bạn lấy những ví dụ đó ở đâu? Theo truyền thống trong học máy, bạn sẽ nhận được các ví dụ khác nhau đó bằng cách tách tập dữ liệu ban đầu. Do đó, bạn có thể giả định rằng bạn nên chia tập dữ liệu ban đầu thành hai tập con:

Hình 8. Một thanh ngang được chia thành hai phần: ~80% là tập huấn luyện và ~20% là tập kiểm thử.
Hình 8. Không phải là cách phân chia tối ưu.

 

Bài tập: Kiểm tra trực giác của bạn

Giả sử bạn huấn luyện trên tập huấn luyện và đánh giá trên tập kiểm thử trong nhiều vòng. Trong mỗi vòng, bạn sử dụng kết quả tập kiểm thử để hướng dẫn cách cập nhật các tham số siêu dữ liệu và tập tính năng. Bạn có thấy phương pháp này có gì sai không? Chỉ chọn một câu trả lời.
Việc thực hiện nhiều vòng của quy trình này có thể khiến mô hình phù hợp ngầm với các đặc điểm của tập kiểm thử.
Có! Bạn càng sử dụng cùng một tập dữ liệu kiểm thử thường xuyên, thì mô hình càng có nhiều khả năng phù hợp với tập dữ liệu kiểm thử đó. Giống như một giáo viên "dạy theo bài kiểm tra", mô hình vô tình phù hợp với tập dữ liệu kiểm thử, điều này có thể khiến mô hình khó phù hợp với dữ liệu thực tế hơn.
Bạn có thể sử dụng phương pháp này. Xét cho cùng, bạn đang huấn luyện trên tập huấn luyện và đánh giá trên một tập kiểm thử riêng biệt.
Thực ra, có một vấn đề nhỏ ở đây. Hãy nghĩ về những điều có thể dần dần diễn ra không đúng cách.
Phương pháp này không hiệu quả về mặt tính toán. Không thay đổi siêu tham số hoặc bộ tính năng sau mỗi vòng kiểm thử.
Việc kiểm thử thường xuyên tốn kém nhưng rất quan trọng. Tuy nhiên, việc kiểm thử thường xuyên sẽ tốn ít chi phí hơn nhiều so với việc đào tạo thêm. Việc tối ưu hoá các tham số siêu dữ liệu và tập hợp tính năng có thể cải thiện đáng kể chất lượng mô hình, vì vậy, hãy luôn dành thời gian và tài nguyên tính toán để xử lý các tham số này.

Việc chia tập dữ liệu thành hai tập là một ý tưởng hay, nhưng tốt hơn là bạn nên chia tập dữ liệu thành ba tập con. Ngoài tập huấn luyện và tập kiểm thử, tập con thứ ba là:

Hình 9. Một thanh ngang được chia thành ba phần: 70% là tập huấn luyện, 15% là tập xác thực và 15% là tập kiểm thử
Hình 9. Phân tách tốt hơn nhiều.

Sử dụng nhóm dữ liệu xác thực để đánh giá kết quả từ nhóm dữ liệu huấn luyện. Sau khi sử dụng nhiều lần tập hợp dữ liệu xác thực cho thấy mô hình của bạn đang đưa ra dự đoán chính xác, hãy sử dụng tập hợp dữ liệu kiểm thử để kiểm tra lại mô hình của bạn.

Hình sau đây đề xuất quy trình công việc này. Trong hình, "Tweak model" (Chỉnh sửa mô hình) có nghĩa là điều chỉnh mọi thứ về mô hình — từ thay đổi tốc độ học, thêm hoặc xoá các tính năng, cho đến thiết kế một mô hình hoàn toàn mới từ đầu. Ở cuối quy trình công việc này, bạn sẽ chọn mô hình hoạt động hiệu quả nhất trên tập dữ liệu kiểm thử.

Hình 10. Sơ đồ quy trình công việc bao gồm các giai đoạn sau:
            1. Huấn luyện mô hình trên tập huấn luyện.
            2. Đánh giá mô hình trên tập dữ liệu xác thực.
            3. Điều chỉnh mô hình theo kết quả trên tập hợp dữ liệu xác thực.
            4. Lặp lại các bước 1, 2 và 3, cuối cùng chọn mô hình hoạt động tốt nhất trên tập hợp dữ liệu xác thực.
            5. Xác nhận kết quả trên tập dữ liệu kiểm thử.
Hình 10. Quy trình làm việc hiệu quả để phát triển và kiểm thử.

Quy trình làm việc trong Hình 10 là tối ưu, nhưng ngay cả với quy trình làm việc đó, các tập hợp kiểm thử và tập hợp xác thực vẫn "mệt mỏi" khi sử dụng nhiều lần. Tức là, bạn càng sử dụng cùng một dữ liệu để đưa ra quyết định về các chế độ cài đặt tham số siêu dữ liệu hoặc các điểm cải tiến khác của mô hình, thì bạn càng ít tin tưởng rằng mô hình sẽ đưa ra dự đoán chính xác về dữ liệu mới. Vì lý do này, bạn nên thu thập thêm dữ liệu để "làm mới" tập dữ liệu kiểm thử và tập dữ liệu xác thực. Việc bắt đầu lại là một cách đặt lại tuyệt vời.

Bài tập: Kiểm tra trực giác của bạn

Bạn đã xáo trộn tất cả các ví dụ trong tập dữ liệu và chia các ví dụ đã xáo trộn thành các tập huấn luyện, xác thực và kiểm thử. Tuy nhiên, giá trị tổn thất trên tập dữ liệu kiểm thử của bạn thấp đến mức đáng kinh ngạc nên bạn nghi ngờ có lỗi. Có thể đã xảy ra lỗi gì?
Nhiều ví dụ trong tập kiểm thử là bản sao của các ví dụ trong tập huấn luyện.
Có. Đây có thể là vấn đề trong một tập dữ liệu có nhiều ví dụ thừa. Bạn nên xoá các ví dụ trùng lặp khỏi bộ kiểm thử trước khi kiểm thử.
Quá trình huấn luyện và kiểm thử là không xác định. Đôi khi, do tình cờ, tổn thất thử nghiệm của bạn rất thấp. Chạy lại kiểm thử để xác nhận kết quả.
Mặc dù tổn thất có thay đổi một chút trong mỗi lần chạy, nhưng không được thay đổi quá nhiều đến mức bạn nghĩ rằng mình đã thắng xổ số học máy.
Tình cờ, tập dữ liệu kiểm thử lại chứa các ví dụ mà mô hình hoạt động hiệu quả.
Các ví dụ đã được xáo trộn kỹ, nên điều này rất khó xảy ra.

Các vấn đề khác về bộ kiểm thử

Như câu hỏi trước đã minh hoạ, các ví dụ trùng lặp có thể ảnh hưởng đến việc đánh giá mô hình. Sau khi chia một tập dữ liệu thành tập huấn luyện, tập xác thực và tập kiểm thử, hãy xoá mọi ví dụ trong tập xác thực hoặc tập kiểm thử trùng lặp với ví dụ trong tập huấn luyện. Cách kiểm thử công bằng duy nhất của một mô hình là so sánh với các ví dụ mới, chứ không phải các ví dụ trùng lặp.

Ví dụ: hãy xem xét một mô hình dự đoán xem một email có phải là email vi phạm hay không, bằng cách sử dụng tiêu đề, nội dung email và địa chỉ email của người gửi làm các đặc điểm. Giả sử bạn chia dữ liệu thành tập huấn luyện và tập kiểm thử, với tỷ lệ phân chia là 80-20. Sau khi huấn luyện, mô hình đạt được độ chính xác 99% trên cả tập huấn luyện và tập kiểm thử. Bạn có thể dự kiến độ chính xác thấp hơn trên tập kiểm thử, vì vậy, bạn hãy xem lại dữ liệu và phát hiện ra rằng nhiều ví dụ trong tập kiểm thử là bản sao của các ví dụ trong tập huấn luyện. Vấn đề là bạn quên xoá các mục nhập trùng lặp cho cùng một email rác khỏi cơ sở dữ liệu đầu vào trước khi tách dữ liệu. Bạn đã vô tình huấn luyện trên một số dữ liệu kiểm thử.

Tóm lại, một tập hợp kiểm thử hoặc tập hợp xác thực tốt đáp ứng tất cả các tiêu chí sau:

  • Đủ lớn để mang lại kết quả thử nghiệm có ý nghĩa thống kê.
  • Đại diện cho toàn bộ tập dữ liệu. Nói cách khác, đừng chọn một tập kiểm thử có đặc điểm khác với tập huấn luyện.
  • Đại diện cho dữ liệu thực tế mà mô hình sẽ gặp phải trong mục đích kinh doanh của mô hình.
  • Không có ví dụ nào bị trùng lặp trong tập huấn luyện.

Bài tập: Kiểm tra mức độ hiểu biết

Với một tập dữ liệu có số lượng ví dụ cố định, câu nào sau đây là đúng?
Mỗi ví dụ dùng để kiểm thử mô hình sẽ là một ví dụ ít hơn dùng để huấn luyện mô hình.
Việc chia các ví dụ thành tập huấn luyện/kiểm thử/xác thực là một trò chơi có tổng bằng 0. Đây là điểm đánh đổi chính.
Số lượng ví dụ trong tập kiểm thử phải lớn hơn số lượng ví dụ trong tập xác thực.
Về lý thuyết, tập hợp xác thực và tập hợp kiểm thử phải chứa cùng một số lượng ví dụ hoặc gần như vậy.
Số lượng ví dụ trong tập kiểm thử phải lớn hơn số lượng ví dụ trong tập xác thực hoặc tập huấn luyện.
Số lượng ví dụ trong tập huấn luyện thường lớn hơn số lượng ví dụ trong tập xác thực hoặc tập kiểm thử; tuy nhiên, không có yêu cầu về tỷ lệ phần trăm cho các tập khác nhau.
Giả sử tập dữ liệu kiểm thử của bạn chứa đủ ví dụ để thực hiện một kiểm thử có ý nghĩa thống kê. Hơn nữa, việc kiểm thử dựa trên tập kiểm thử sẽ mang lại tổn thất thấp. Tuy nhiên, mô hình này hoạt động kém trong thế giới thực. Bạn nên làm gì?
Xác định sự khác biệt giữa tập dữ liệu gốc và dữ liệu thực tế.
Có. Ngay cả những tập dữ liệu tốt nhất cũng chỉ là một bản tổng quan nhanh về dữ liệu thực tế; sự thật cơ bản cơ bản có xu hướng thay đổi theo thời gian. Mặc dù tập dữ liệu kiểm thử của bạn khớp với tập dữ liệu huấn luyện đủ tốt để cho thấy chất lượng mô hình tốt, nhưng tập dữ liệu của bạn có thể không khớp đủ với dữ liệu thực tế. Bạn có thể phải huấn luyện lại và kiểm thử lại dựa trên một tập dữ liệu mới.
Kiểm thử lại trên cùng một bộ kiểm thử. Kết quả kiểm thử có thể là một ngoại lệ.
Mặc dù việc kiểm thử lại có thể mang lại kết quả hơi khác, nhưng chiến thuật này có thể không hữu ích lắm.
Bộ kiểm thử phải chứa bao nhiêu ví dụ?
Có đủ ví dụ để tạo ra một kiểm thử có ý nghĩa thống kê.
Có. Có bao nhiêu ví dụ như vậy? Bạn sẽ cần thử nghiệm.
Ít nhất 15% tập dữ liệu gốc.
15% có thể là đủ hoặc không đủ ví dụ.