H2O के साथ Grid और Random सर्च

R में Hyperparameter Tuning

Dr. Shirin Elsinghorst

Senior Data Scientist

H2O मॉडलों में हाइपरपैरामीटर्स

  • Gradient Boosting के हाइपरपैरामीटर्स:
?h2o.gbm
  • ntrees: ट्री की संख्या. डिफॉल्ट 50.

  • max_depth: ट्री की अधिकतम गहराई. डिफॉल्ट 5.

  • min_rows: एक लीफ में न्यूनतम (वेटेड) ऑब्ज़र्वेशन. डिफॉल्ट 10.

  • learn_rate: लर्निंग रेट (0.0 से 1.0). डिफॉल्ट 0.1.

  • learn_rate_annealing: हर ट्री के बाद लर्निंग रेट को इस फैक्टर से स्केल करें (जैसे 0.99 या 0.999). डिफॉल्ट 1.
R में Hyperparameter Tuning

H2O के साथ मॉडलिंग के लिए डेटा तैयार करना

  • H2O frame में कन्वर्ट करें
seeds_data_hf <- as.h2o(seeds_data)
  • features और target पहचानें
y <- "seed_type"
x <- setdiff(colnames(seeds_data_hf), y)
  • डेटा को train, test और validation सेट में split करें
sframe <- h2o.splitFrame(data = seeds_data_hf, ratios = c(0.7, 0.15), seed = 42)
train <- sframe[[1]]
valid <- sframe[[2]]
test <- sframe[[3]]
R में Hyperparameter Tuning

हाइपरपैरामीटर ग्रिड परिभाषित करना

  • GBM हाइपरपैरामीटर्स
gbm_params <- list(ntrees = c(100, 150, 200), max_depth = c(3, 5, 7), learn_rate = c(0.001, 0.01, 0.1))
  • h2o.grid फंक्शन
gbm_grid <- h2o.grid("gbm", 
                     grid_id = "gbm_grid",
                     x = x, 
                     y = y,
                     training_frame = train,
                     validation_frame = valid,
                     seed = 42,
                     hyper_params = gbm_params)
  • h2o.getGrid से परिणाम देखें
R में Hyperparameter Tuning

ग्रिड ऑब्जेक्ट की जाँच

  • हमारे मॉडल gbm_grid के लिए h2o.getGrid से परिणाम जाँचें.

  • ग्रिड परिणामों को validation accuracy के आधार पर sort करें

gbm_gridperf <- h2o.getGrid(grid_id = "gbm_grid", sort_by = "accuracy", decreasing = TRUE)
Grid ID: gbm_grid 
Used hyper parameters: 
  -  learn_rate 
  -  max_depth 
  -  ntrees 
Number of models: 27 
Number of failed models: 0 

Hyper-Parameter Search Summary: ordered by decreasing accuracy
R में Hyperparameter Tuning

ग्रिड से श्रेष्ठ मॉडल निकालना

  • validation accuracy से चुना गया शीर्ष GBM मॉडल id पोज़िशन 1 पर है
best_gbm <- h2o.getModel(gbm_gridperf@model_ids[[1]])
  • श्रेष्ठ मॉडल के ये हाइपरपैरामीटर्स हैं:
print(best_gbm@model[["model_summary"]])
Model Summary: 
 number_of_trees number_of_internal_trees model_size_in_bytes min_depth
             200                      600              100961         2 
 max_depth mean_depth min_leaves max_leaves mean_leaves
         7    5.22667          3         10     8.38833
R में Hyperparameter Tuning

ग्रिड से श्रेष्ठ मॉडल निकालना

  • best_gbm एक सामान्य H2O मॉडल ऑब्जेक्ट है और वैसे ही उपयोग करें!
h2o.performance(best_gbm, test)
MSE: (Extract with `h2o.mse`) 0.04761904
RMSE: (Extract with `h2o.rmse`) 0.2182179
Logloss: (Extract with `h2o.loglos
R में Hyperparameter Tuning

H2O के साथ Random सर्च

  • हाइपरपैरामीटर ग्रिड के साथ-साथ सर्च क्राइटेरिया भी जोड़ें:
gbm_params <- list(ntrees = c(100, 150, 200),
                   max_depth = c(3, 5, 7),
                   learn_rate = c(0.001, 0.01, 0.1))

search_criteria <- list(strategy = "RandomDiscrete", max_runtime_secs = 60, seed = 42)
gbm_grid <- h2o.grid("gbm", grid_id = "gbm_grid", x = x, y = y, training_frame = train, validation_frame = valid, seed = 42, hyper_params = gbm_params, search_criteria = search_criteria)
R में Hyperparameter Tuning
search_criteria <- list(strategy = "RandomDiscrete", 
                        stopping_metric = "mean_per_class_error", 
                        stopping_tolerance = 0.0001, 
                        stopping_rounds = 6)

gbm_grid <- h2o.grid("gbm", x = x, y = y, training_frame = train, validation_frame = valid, seed = 42, hyper_params = gbm_params, search_criteria = search_criteria)
H2O Grid Details
================
Grid ID: gbm_grid 
Used hyper parameters: 
  -  learn_rate 
  -  max_depth 
  -  ntrees 
Number of models: 30 
Number of failed models: 0
R में Hyperparameter Tuning

Time to practice!

R में Hyperparameter Tuning

Preparing Video For Download...