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 3: Model Evaluation and Optimization

Tinh chỉnh siêu tham số (Hyperparameter Tuning)

In / Lưu PDF

Tinh chỉnh siêu tham số

Tham số và siêu tham số khác nhau ở đâu

Tham số (parameter)Siêu tham số (hyperparameter)
Ai quyết địnhMô hình tự học từ dữ liệuNgười dùng đặt trước khi huấn luyện
Ví dụHệ số w của hồi quy tuyến tínhmax_depth, C, n_estimators

Grid Search

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.

Random Search — thường hiệu quả hơ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)

Cái bẫy lớn nhất

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:

  1. Chia train / test ngay từ đầu
  2. Tinh chỉnh bằng cross-validation chỉ trên tập train
  3. Chạy tập test đúng một lần, với mô hình đã chốt

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

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.