Limio— Learn your way
🏆 Đấu trường
Đăng nhậpĐăng ký

Thiết kế và phát triển: @Limio team - Khoa Khoa học và Công nghệ Giáo dục, Đại học Bách Khoa Hà Nội

← Fundamental of Machine Learning

Bạn đang xem thử công khai

Đăng nhập để lưu tiến độ, làm bài tập, thảo luận và nhận phản hồi.

Đăng nhập
Module 1: Data Preparation and Model Foundations

Chia tập dữ liệu (Data Partitioning)

In / Lưu PDF

Chia tập dữ liệu

Vì sao không được đánh giá trên dữ liệu đã huấn luyện

Một mô hình học thuộc lòng toàn bộ tập huấn luyện sẽ đạt độ chính xác 100% trên chính tập đó — và có thể vô dụng với dữ liệu mới. Đó là overfitting. Muốn biết mô hình có thực sự học được quy luật hay không, phải kiểm tra trên dữ liệu nó chưa từng thấy.

Chia thế nào

TậpTỉ lệ thường dùngDùng để
Train60–80%Huấn luyện mô hình
Validation10–20%Chọn mô hình, chỉnh siêu tham số
Test10–20%Đánh giá cuối cùng, chỉ dùng một lần

Nếu chỉ chia hai phần (train/test) như trong buổi thực hành, hãy dùng kiểm định chéo trên tập train để thay vai trò của validation.

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(
    x, y, test_size=0.2, random_state=1009)

random_state cố định cách chia ngẫu nhiên. Nhờ nó, chạy lại mã cho ra đúng kết quả cũ — điều kiện bắt buộc để so sánh hai phương án một cách công bằng.

Chia phân tầng (stratify) — bắt buộc khi dữ liệu mất cân bằng

Nếu chỉ 1% dữ liệu là gian lận, một lần chia ngẫu nhiên có thể đẩy gần hết ca gian lận vào tập train, để lại tập test gần như không có ca dương nào. Khi đó recall đo được là vô nghĩa.

x_train, x_test, y_train, y_test = train_test_split(
    x, y, test_size=0.2, random_state=1009, stratify=y)

stratify=y giữ nguyên tỉ lệ các lớp ở cả hai tập.

Lỗi thường gặp nhất

Dùng tập test nhiều lần để chỉnh mô hình. Mỗi lần bạn xem kết quả test rồi quay lại sửa mô hình, tập test lại rò rỉ thêm một chút vào quyết định của bạn. Sau mười vòng như vậy, con số trên tập test không còn là ước lượng trung thực nữa. Hãy chỉnh trên validation, và chỉ chạm vào test đúng một lần cuối.