Cross validation là một phương pháp thống kê được sử dụng để ước lượng hiệu quả của các mô hình học máy. Nó thường được sử dụng để so sánh và chọn ra mô hình tốt nhất cho một bài toán. Kỹ thuật này dễ hiểu, dễ thực hiện và cho ra các ước lượng tin cậy hơn so với các phương pháp khác. Trong bài viết này hãy cùng trituenhantao.io tìm hiểu về kỹ thuật cross validation với k-fold.
k-Fold Cross-Validation là gì?
Cross validation là một kỹ thuật lấy mẫu để đánh giá mô hình học máy trong trường hợp dữ liệu không được dồi dào cho lắm.
Tham số quan trọng trong kỹ thuật này là k
, đại diện cho số nhóm mà dữ liệu sẽ được chia ra. Vì lý do đó, nó được mang tên k-fold cross-validation. Khi giá trị của k
được lựa chọn, người ta sử dụng trực tiếp giá trị đó trong tên của phương pháp đánh giá. Ví dụ với k=10
, phương pháp sẽ mang tên 10-fold cross-validation.
Kỹ thuật này thường bao gồm các bước như sau:
- Xáo trộn dataset một cách ngẫu nhiên
- Chia dataset thành
k
nhóm - Với mỗi nhóm:
- Sử dụng nhóm hiện tại để đánh giá hiệu quả mô hình
- Các nhóm còn lại được sử dụng để huấn luyện mô hình
- Huấn luyện mô hình
- Đánh giá và sau đó hủy mô hình
- Tổng hợp hiệu quả của mô hình dựa từ các số liệu đánh giá
Một lưu ý quan trọng là mỗi mẫu chỉ được gán cho duy nhất một nhóm và phải ở nguyên trong nhóm đó cho đến hết quá trình. Các tiền xử lý dữ liệu như xây dựng vocabulary chỉ được thực hiện trên tập huấn luyện đã được chia chứ không được thực hiện trên toàn bộ dataset. Việc hủy mô hình sau mỗi lần đánh giá là bắt buộc, tránh trường hợp mô hình ghi nhớ nhãn của tập test trong lần đánh giá trước. Các lỗi thiết lập này dễ xảy ra và đều dẫn đến kết quả đánh giá không chính xác (thường là tích cực hơn so với thực tế).
Kết quả tổng hợp thường là trung bình của các lần đánh giá. Ngoài ra việc bổ sung thông tin về phương sai và độ lệch chuẩn vào kết quả tổng hợp cũng được sử dụng trong thực tế.
Cấu hình k
Giá trị k
là thông số quan trọng để có thể đánh giá chính xác mô hình, vậy thì lựa chọn thông số này như thế nào?
Ba chiến thuật phổ biến để lựa chọn k
:
- Đại diện: Giá trị của
k
được chọn để mỗi tập train/test đủ lớn, có thể đại diện về mặt thống kê cho dataset chứa nó. - k=10: Giá trị của
k
được gán cố định bằng 10, một giá trị thường được sử dụng và được chứng minh là cho sai số nhỏ, phương sai thấp (thông qua thực nghiệm). - k=n: Giá trị của
k
được gán cố định bằngn
, vớin
là kích thước của dataset, như vậy mỗi mãu sẽ được sử dụng để đánh giá mô hình một lần. Cách tiếp cận này còn có tên leave-one-out cross-validation.
Giá trị k=10
là một cấu hình rất phổ biến. Bạn nên sử dụng giá trị này nếu như gặp khó khăn để lựa chọn một giá trị thích hợp cho bài toán của bạn. Ngoài ra, bạn cũng nên chọn giá trị của k
sao cho có thể chia đều các mẫu vào các nhóm. Thư viện scikit-learn cung cấp các cài đặt đầy đủ của cross-validation. Bạn có thể tham khảo tại Model Selection API.
Nếu bạn thấy bài viết hữu ích, đừng ngại chia sẻ với những người quan tâm. Hãy thường xuyên truy cập trituenhantao.io hoặc đăng ký (dưới chân trang) để nhận được những bài viết tương tự sớm nhất!