開始使用免費開始

使用 Hyperopt 進行貝葉斯式超參數調校

在這個範例中,你會使用 Hyperopt 套件(已為你匯入為 hp)來設定並執行貝葉斯式超參數最佳化流程。你會先設定搜尋空間(類似於為網格搜尋設定網格),接著建立目標函式。最後,將最佳化器執行 20 次迭代。

你需要用以下值來設定搜尋空間:

  • max_depth 使用離散均勻分佈(quniform,介於 2 到 10,以 2 為步進)
  • learning_rate 使用連續均勻分佈(uniform,0.001 到 0.9)

注意:為了本練習的目的,我們縮小了資料樣本數,以及 hyperopt 與 GBM 的迭代次數。 如果你在自己的電腦上試用這個方法,建議擴大搜尋空間、增加試驗次數、增加交叉驗證摺數,並使用更大的資料集,這樣更能看出效果!

本練習屬於課程

Python 超參數調校

檢視課程

練習說明

  • 依照上述條件,建立 space 字典作為搜尋空間。
  • 使用梯度提升分類器來建立目標函式。
  • 將演算法執行 20 次評估(直接使用投影片中預設建議的演算法)。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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(____)
編輯並執行程式碼