Tìm kiếm lưới 2D
Hạn chế của việc tinh chỉnh từng siêu tham số độc lập là có thể tồn tại sự phụ thuộc giữa các siêu tham số. Cách tốt hơn là thử tất cả các tổ hợp siêu tham số có thể. Tuy nhiên, trong các trường hợp như vậy, không gian tìm kiếm lưới sẽ tăng rất nhanh. Ví dụ, nếu có 2 tham số với 10 giá trị khả dĩ, bạn sẽ phải chạy 100 thí nghiệm.
Mục tiêu của bạn là tìm cặp siêu tham số tốt nhất max_depth và subsample cho mô hình Gradient Boosting. subsample là tỷ lệ quan sát được dùng để huấn luyện từng cây riêng lẻ.
Bạn được cung cấp hàm get_cv_score(), hàm này nhận tập huấn luyện và một từ điển tham số mô hình làm đối số, và trả về điểm RMSE xác thực tổng thể qua cross-validation 3-fold.
Bài tập này là một phần của khóa học
Chinh phục cuộc thi Kaggle bằng Python
Hướng dẫn bài tập
- Xác định các lưới cho các giá trị khả dĩ của
max_depthvàsubsample. Vớimax_depth: 3, 5 và 7. Vớisubsample: 0.8, 0.9 và 1.0. - Áp dụng hàm
product()từ góiitertoolslên các lưới siêu tham số. Hàm này trả về mọi tổ hợp có thể của hai lưới này. - Truyền từng cặp ứng viên siêu tham số vào từ điển
paramscủa mô hình.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
import itertools
# Hyperparameter grids
max_depth_grid = [____]
subsample_grid = [____]
results = {}
# For each couple in the grid
for max_depth_candidate, subsample_candidate in itertools.____(max_depth_grid, subsample_grid):
params = {'max_depth': ____,
'subsample': ____}
validation_score = get_cv_score(train, params)
# Save the results for each couple
results[(max_depth_candidate, subsample_candidate)] = validation_score
print(results)