Random Search का परिचय

Python में Hyperparameter Tuning

Alex Scriven

Data Scientist

जो आप पहले से जानते हैं

 

Grid search जैसा ही:

  • एक estimator तय करें, किन hyperparameters को ट्यून करना है और हर hyperparameter की वैल्यू-रेंज।
  • हम अब भी cross-validation स्कीम और scoring फंक्शन सेट करते हैं।

 

लेकिन अब हम grid के squares को यादृच्छिक रूप से चुनते हैं.

Python में Hyperparameter Tuning

यह काम क्यों करता है?

Bengio & Bergstra (2012):

यह पेपर बताता है, अनुभवजन्य और सैद्धांतिक रूप से, कि यादृच्छिक रूप से चुने गए ट्रायल्स hyper-parameter optimization के लिए grid पर ट्रायल्स से अधिक कुशल होते हैं.

दो मुख्य कारण:

  1. हर hyperparameter उतना महत्वपूर्ण नहीं होता
  2. प्रायिकता की एक छोटी तरकीब
Python में Hyperparameter Tuning

प्रायिकता की एक तरकीब

एक grid search:

अलग-अलग मॉडलों का 10x10

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

हमारे सर्वश्रेष्ठ मॉडल:

अलग-अलग मॉडलों का 10x10

Python में Hyperparameter Tuning

A probability Trick

 

यदि हम hyperparameter कॉम्बिनेशन को uniformly रैंडम चुनें, तो हर बार चूक जाने की संभावना देखें, ताकि समझें कि वह कितना असंभाव्य है.

  • ट्रायल 1 = सफलता की 0.05 संभावना और चूकने की (1 - 0.05)

    • ट्रायल 2 = रेंज चूकने की (1-0.05) x (1-0.05)
      • ट्रायल 3 = फिर चूकने की (1-0.05) x (1-0.05) x (1-0.05)
  • वास्तव में, n ट्रायल्स पर हर बार चूकने की संभावना (1-0.05)^n होती है.

Python में Hyperparameter Tuning

प्रायिकता की एक तरकीब

 

तो उस क्षेत्र के अंदर आने की उच्च (95%) संभावना के लिए कितने ट्रायल चाहिए?

  • सब कुछ चूकने की संभावना (1-0.05)^n है.
  • तो अंदर आने की संभावना = 1 - चूकने की संभावना = (1-(1-0.05)^n).
  • 1-(1-0.05)^n >= 0.95 हल करने पर मिलता है: n >= 59
Python में Hyperparameter Tuning

प्रायिकता की एक तरकीब

 

इसका मतलब क्या है?

  • जब आप नए spots यादृच्छिक रूप से चुनते हैं, तो लंबे समय तक 'अच्छे क्षेत्र' को लगातार चूकना कम संभावित है.
  • Grid search exhaustive कवर करते-करते 'खराब क्षेत्र' में काफी समय बिता सकता है.
Python में Hyperparameter Tuning

कुछ महत्वपूर्ण बातें

 

याद रखें:

  1. अधिकतम उतना ही अच्छा है जितनी अच्छी grid आपने सेट की है!

  2. Grid search से निष्पक्ष तुलना के लिए, मॉडलिंग का वही 'बजट' रखें.

Python में Hyperparameter Tuning

Hyperparameters का रैंडम सैंपल बनाना

हम 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]
Python में Hyperparameter Tuning

Random Search का विज़ुअलाइज़ेशन

हम X और Y axis पर hyperparameter विकल्पों को plot करके random search की coverage भी visualize कर सकते हैं.

random search कवरेज ग्राफ

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

Python में Hyperparameter Tuning

अभ्यास करते हैं!

Python में Hyperparameter Tuning

Preparing Video For Download...