Pencarian grid 2D
Kelemahan menyetel setiap hyperparameter secara terpisah adalah adanya potensi ketergantungan antar-hyperparameter. Pendekatan yang lebih baik adalah mencoba semua kombinasi hyperparameter yang memungkinkan. Namun, dalam kasus seperti ini, ruang pencarian grid bertambah sangat cepat. Misalnya, jika kita memiliki 2 parameter dengan 10 nilai yang mungkin, hasilnya adalah 100 percobaan.
Tujuan Anda adalah menemukan pasangan hyperparameter terbaik untuk max_depth dan subsample pada model Gradient Boosting. subsample adalah fraksi observasi yang digunakan untuk melatih pohon-pohon individual.
Anda diberikan fungsi get_cv_score() yang menerima himpunan data latih dan kamus parameter model sebagai argumen, lalu mengembalikan skor RMSE validasi keseluruhan dari cross-validation 3-fold.
Latihan ini adalah bagian dari kursus
Memenangi Kompetisi Kaggle dengan Python
Petunjuk latihan
- Tentukan grid untuk nilai
max_depthdansubsampleyang mungkin. Untukmax_depth: 3, 5, dan 7. Untuksubsample: 0,8, 0,9, dan 1,0. - Terapkan fungsi
product()dari paketitertoolspada grid hyperparameter. Fungsi ini mengembalikan semua kombinasi yang mungkin dari kedua grid tersebut. - Berikan setiap pasangan kandidat hyperparameter ke kamus
paramsmodel.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)