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.
| Tham số (parameter) | Siêu tham số (hyperparameter) | |
|---|---|---|
| Ai quyết định | Mô hình tự học từ dữ liệu | Người dùng đặt trước khi huấn luyện |
| Ví dụ | Hệ số w của hồi quy tuyến tính | max_depth, C, n_estimators |
Liệt kê các giá trị muốn thử, thư viện chạy hết mọi tổ hợp và chọn cái tốt nhất theo cross-validation.
from sklearn.model_selection import GridSearchCV
grid = {
"model__max_depth": [3, 5, 10, None],
"model__n_estimators": [100, 300],
}
search = GridSearchCV(pipe, grid, cv=5, scoring="f1", n_jobs=-1)
search.fit(x_train, y_train)
print(search.best_params_)
print(search.best_score_)
Lưu ý số lượng: 4 × 2 = 8 tổ hợp, mỗi tổ hợp chạy 5 fold → 40 lần huấn luyện. Lưới càng rộng, chi phí tăng theo cấp số nhân.
Thay vì thử hết, bốc ngẫu nhiên N tổ hợp. Nghe có vẻ kém hơn, nhưng thực tế thường tốt hơn với cùng ngân sách tính toán: phần lớn siêu tham số ít ảnh hưởng, nên grid search tiêu tốn rất nhiều lượt chạy để dò các giá trị chẳng thay đổi gì.
from sklearn.model_selection import RandomizedSearchCV
search = RandomizedSearchCV(pipe, grid, n_iter=20, cv=5, random_state=1009)
Nếu bạn tinh chỉnh dựa trên tập test rồi báo cáo kết quả trên chính tập đó, con số ấy không còn trung thực — bạn đã chọn mô hình khớp nhất với tập test. Quy trình đúng:
Quét lưới khổng lồ ngay từ đầu. Hãy quét thô trên khoảng rộng trước để tìm vùng tốt, rồi mới quét mịn quanh vùng đó — tiết kiệm hàng giờ tính toán.