Nhà khoa học dữ liệu · Bước 5/8 · 12 phút
Những mô hình đầu tiên
Huấn luyện và so sánh một baseline, một mô hình hồi quy và một cây quyết định bằng scikit-learn.
Chia dữ liệu trước khi huấn luyện
Mô hình học từ các ví dụ, nên bạn cần một cách công bằng để kiểm tra nó trên những ví dụ nó chưa thấy. Hãy chia dữ liệu trước: thường phần lớn để huấn luyện (train), phần còn lại giữ riêng để kiểm thử (test). Trong scikit-learn, train_test_split làm việc này trong một dòng. Đừng bao giờ nhìn tập test khi chọn đặc trưng hay tham số, nếu không nó không còn là bài thi công bằng.
Nếu dữ liệu có thứ tự thời gian, hãy chia theo thời gian: huấn luyện trên quá khứ, kiểm thử trên giai đoạn gần nhất. Đó chính là cách mô hình sẽ được dùng.
Luôn bắt đầu bằng baseline
Baseline (mốc so sánh) là dự đoán đơn giản nhất có thể: luôn đoán giá trung bình, hoặc luôn đoán lớp phổ biến nhất. Nghe có vẻ ngớ ngẩn, nhưng nó cho bạn biết thế nào là “tốt”. Nếu 95% khách không bao giờ hủy, một mô hình chính xác 95% có thể chẳng học được gì.
scikit-learn có sẵn DummyRegressor và DummyClassifier đúng cho việc này. Lần nào báo cáo mô hình cũng nên đặt nó cạnh baseline.
Hồi quy và cây quyết định
Hồi quy tuyến tính (linear regression) dự đoán một con số bằng tổng có trọng số của các đầu vào, như giá nhà từ diện tích và vị trí. Hồi quy logistic, dù tên gọi vậy, lại dự đoán một nhóm, như hủy hay không hủy, dưới dạng xác suất. Cả hai đều nhanh, dễ hiểu và dễ giải thích, nên vẫn là công cụ dùng hằng ngày.
Cây quyết định (decision tree) đặt ra một loạt câu hỏi có hoặc không về đầu vào, giống một sơ đồ. Nó xử lý tốt dữ liệu hỗn hợp và các quan hệ phức tạp. Ghép nhiều cây lại, như random forest hay gradient boosting, là một trong những cách mạnh nhất cho dữ liệu dạng bảng.
Overfitting
Overfitting (quá khớp) là khi mô hình học thuộc lòng dữ liệu huấn luyện, kể cả phần nhiễu, thay vì học quy luật. Dấu hiệu là một khoảng cách lớn: rất tốt trên dữ liệu train, kém hơn hẳn trên dữ liệu test. Một cây quyết định quá sâu là ví dụ kinh điển.
Cách chữa là dùng mô hình đơn giản hơn, thêm dữ liệu, bớt đặc trưng nhiễu, và đặt tham số giới hạn độ phức tạp, như max_depth cho cây. Mọi mô hình scikit-learn đều theo cùng một mẫu: tạo mô hình, gọi fit trên dữ liệu train, gọi predict trên dữ liệu mới. Học một lần là bạn thử được rất nhiều mô hình.
Thử ngay
Baseline đấu với hai mô hình thật
- 1.Trên Colab, nạp file giá nhà California và chọn median_house_value làm biến mục tiêu.
- 2.Chia dữ liệu bằng train_test_split(X, y, test_size=0.2, random_state=42).
- 3.Huấn luyện DummyRegressor, LinearRegression và DecisionTreeRegressor, so sánh sai số tuyệt đối trung bình (MAE) trên tập test.
- 4.Đổi max_depth của cây từ None sang 5 và xem sai số train và test thay đổi ra sao.
Tôi mới học scikit-learn. Hãy viết một đoạn code Colab ngắn, có chú thích, nạp [BỘ DỮ LIỆU], dự đoán [BIẾN MỤC TIÊU], và so sánh một baseline giả, hồi quy tuyến tính và cây quyết định trên tập test giữ riêng. Giải thích mỗi bước trong một dòng và không dùng thư viện nào ngoài pandas và scikit-learn.