Bắt đầu ngayBắt đầu miễn phí

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_depthsubsample 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

Xem khóa học

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_depthsubsample. Với max_depth: 3, 5 và 7. Với subsample: 0.8, 0.9 và 1.0.
  • Áp dụng hàm product() từ gói itertools lê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 params củ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)
Chỉnh sửa và Chạy Mã