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

Điều chỉnh siêu tham số Bayesian với Hyperopt

Trong ví dụ này, bạn sẽ thiết lập và chạy quy trình tối ưu hóa siêu tham số theo hướng Bayesian bằng gói Hyperopt (đã được import sẵn là hp). Bạn sẽ thiết lập không gian miền giá trị (tương tự như thiết lập lưới trong grid search), sau đó thiết lập hàm mục tiêu. Cuối cùng, bạn sẽ chạy bộ tối ưu qua 20 vòng lặp.

Bạn cần thiết lập không gian miền với các giá trị:

  • max_depth sử dụng phân phối quniform (từ 2 đến 10, bước nhảy 2)
  • learning_rate sử dụng phân phối uniform (0.001 đến 0.9)

Lưu ý: cho mục đích của bài tập này, quá trình đã được giảm kích thước mẫu dữ liệu và số vòng lặp của hyperopt & GBM. Nếu bạn tự thử phương pháp này trên máy của mình, hãy thử không gian tìm kiếm lớn hơn, nhiều lần thử hơn, nhiều fold CV hơn và tập dữ liệu lớn hơn để thật sự thấy hiệu quả!

Bài tập này là một phần của khóa học

Tinh chỉnh siêu tham số trong Python

Xem khóa học

Hướng dẫn bài tập

  • Thiết lập dictionary space theo miền giá trị nêu trên.
  • Thiết lập hàm mục tiêu dùng một bộ phân loại gradient boosting.
  • Chạy thuật toán với 20 lần đánh giá (chỉ dùng thuật toán mặc định được gợi ý trong các slide).

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.

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
Chỉnh sửa và Chạy Mã