Python में Hyperparameter Tuning
Alex Scriven
Data Scientist
Grid search जैसा ही:
लेकिन अब हम grid के squares को यादृच्छिक रूप से चुनते हैं.
Bengio & Bergstra (2012):
यह पेपर बताता है, अनुभवजन्य और सैद्धांतिक रूप से, कि यादृच्छिक रूप से चुने गए ट्रायल्स hyper-parameter optimization के लिए grid पर ट्रायल्स से अधिक कुशल होते हैं.
दो मुख्य कारण:
एक grid search:

95% संभावना पाने के लिए कितने मॉडल चलाने होंगे कि हमें हरे squares में से एक मिल जाए?
हमारे सर्वश्रेष्ठ मॉडल:

यदि हम hyperparameter कॉम्बिनेशन को uniformly रैंडम चुनें, तो हर बार चूक जाने की संभावना देखें, ताकि समझें कि वह कितना असंभाव्य है.
ट्रायल 1 = सफलता की 0.05 संभावना और चूकने की (1 - 0.05)
वास्तव में, n ट्रायल्स पर हर बार चूकने की संभावना (1-0.05)^n होती है.
तो उस क्षेत्र के अंदर आने की उच्च (95%) संभावना के लिए कितने ट्रायल चाहिए?
इसका मतलब क्या है?
याद रखें:
अधिकतम उतना ही अच्छा है जितनी अच्छी grid आपने सेट की है!
Grid search से निष्पक्ष तुलना के लिए, मॉडलिंग का वही 'बजट' रखें.
हम hyperparameter कॉम्बिनेशन का अपना रैंडम सैंपल बना सकते हैं:
# Set some hyperparameter lists
learn_rate_list = np.linspace(0.001,2,150)
min_samples_leaf_list = list(range(1,51))
# Create list of combinations
from itertools import product
combinations_list = [list(x) for x in
product(learn_rate_list, min_samples_leaf_list)]
# Select 100 models from our larger set
random_combinations_index = np.random.choice(
range(0,len(combinations_list)), 100,
replace=False)
combinations_random_chosen = [combinations_list[x] for x in
random_combinations_index]
हम X और Y axis पर hyperparameter विकल्पों को plot करके random search की coverage भी visualize कर सकते हैं.

ध्यान दें, scatter की रेंज तो चौड़ी है, पर गहराई से कवर नहीं है.
Python में Hyperparameter Tuning