Python में Hyperparameter Tuning
Alex Scriven
Data Scientist
अब तक जो कुछ किया है वह uninformed search रहा है:
Uninformed search: जहाँ hyperparameter tuning का हर iteration पिछले से कुछ नहीं सीखता।
इसी से हम काम को parallelize कर पाते हैं। पर क्या यह बहुत कुशल लगता है?
अब तक की प्रक्रिया:

एक वैकल्पिक तरीका:

एक बुनियादी informed search विधि:
पहले मोटे, random तरीके से शुरू करें और खोज को क्रमिक रूप से परिष्कृत करें.
प्रक्रिया यह है:
आप (3) से पहले कुछ और random searches भी कर सकते हैं
Coarse to fine tuning के फायदे:
खराब परिणाम वाले search space पर समय न गवाएँ!
नोट: यह एक मॉडल पर नहीं, बैचों पर informed होता है
इन hyperparameter रेंज के साथ एक उदाहरण देखें:
max_depth_list 1 से 65 के बीचmin_sample_list 3 से 17 के बीचlearn_rate_list 0.01 से 150 के बीच 150 मानहमारे पास कुल कितने संभावित मॉडल हैं?
combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
आइए केवल 500 संयोजनों पर random search करें।
यहाँ हम accuracy स्कोर प्लॉट करते हैं:

कौन से मॉडल अच्छे रहे?
शीर्ष परिणाम:
| max_depth | min_samples_leaf | learn_rate | accuracy |
|---|---|---|---|
| 10 | 7 | 0.01 | 96 |
| 19 | 7 | 0.023355705 | 96 |
| 30 | 6 | 1.038389262 | 93 |
| 27 | 7 | 1.11852349 | 91 |
| 16 | 7 | 0.597651007 | 91 |
max_depth बनाम accuracy स्कोर को visualize करें:

min_samples_leaf 8 से कम पर बेहतर

learn_rate 1.3 से ऊपर खराब

पहले iteration से क्या पता चला:
max_depth 8 से 30 के बीचlearn_rate 1.3 से कमmin_samples_leaf शायद 8 से कमअब आगे क्या? जो पता है उसके साथ एक और random या grid search!
नोट: यह केवल bivariate विश्लेषण था। आप एक ही ग्राफ पर कई hyperparameters (3, 4 या अधिक!) भी जाँच सकते हैं, पर वह इस कोर्स के दायरे से बाहर है।
Python में Hyperparameter Tuning