2D ग्रिड सर्च
हर हाइपरपैरामीटर को अलग-अलग ट्यून करने की कमी यह है कि अलग-अलग हाइपरपैरामीटर्स के बीच निर्भरता हो सकती है. बेहतर तरीका है कि सभी संभावित हाइपरपैरामीटर संयोजनों को आजमाया जाए. हालाँकि, ऐसे मामलों में ग्रिड सर्च स्पेस बहुत तेज़ी से बढ़ता है. उदाहरण के लिए, अगर हमारे पास 2 पैरामीटर्स हैं और हर एक के 10 संभावित मान हैं, तो कुल 100 एक्सपेरिमेंट रन होंगे.
आपका लक्ष्य Gradient Boosting मॉडल के लिए max_depth और subsample का सबसे अच्छा जोड़ा खोजना है. subsample वे ऑब्ज़र्वेशंस का भाग (fraction) है जिनका उपयोग व्यक्तिगत ट्रीज़ को फिट करने में किया जाता है.
आपको get_cv_score() फंक्शन दिया गया है, जो ट्रेन डेटासेट और मॉडल पैरामीटर्स की डिक्शनरी को आर्ग्युमेंट्स के रूप में लेता है और 3-fold क्रॉस-वैलिडेशन पर ओवरऑल वैलिडेशन RMSE स्कोर लौटाता है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Kaggle प्रतियोगिता जीतना
अभ्यास निर्देश
max_depthऔरsubsampleके संभावित मानों के लिए ग्रिड्स निर्दिष्ट करें.max_depthके लिए: 3, 5 और 7.subsampleके लिए: 0.8, 0.9 और 1.0.itertoolsपैकेज केproduct()फंक्शन को हाइपरपैरामीटर ग्रिड्स पर लागू करें. यह इन दोनों ग्रिड्स की सभी संभावित संयोजन लौटाता है.- हर हाइपरपैरामीटर उम्मीदवार जोड़े को मॉडल की
paramsडिक्शनरी में पास करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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)