Scikit Learn के साथ Grid Search

Python में Hyperparameter Tuning

Alex Scriven

Data Scientist

GridSearchCV ऑब्जेक्ट

 

GridSearchCV ऑब्जेक्ट का परिचय:

sklearn.model_selection.GridSearchCV(
    estimator,
    param_grid, scoring=None, fit_params=None,
    n_jobs=None, refit=True, cv='warn',
    verbose=0, pre_dispatch='2*n_jobs',
    error_score='raise-deprecating',
    return_train_score='warn')
Python में Hyperparameter Tuning

Grid Search के चरण

 

Grid Search के चरण:

  1. हाइपरपैरामीटर ट्यून करने के लिए एल्गोरिदम (इसे 'estimator' भी कहते हैं)
  2. कौन-से हाइपरपैरामीटर ट्यून होंगे, परिभाषित करें
  3. हर हाइपरपैरामीटर के लिए मानों की रेंज तय करें
  4. क्रॉस-वैलिडेशन स्कीम सेट करें; और
  5. एक स्कोर फंक्शन तय करें ताकि ग्रिड में 'सबसे अच्छा' चुना जा सके
  6. अतिरिक्त उपयोगी जानकारी या फंक्शन शामिल करें
Python में Hyperparameter Tuning

GridSearchCV ऑब्जेक्ट के इनपुट

महत्वपूर्ण इनपुट हैं:

  • estimator
  • param_grid
  • cv
  • scoring
  • refit
  • n_jobs
  • return_train_score
Python में Hyperparameter Tuning

GridSearchCV 'estimator'

 

estimator इनपुट:

  • मूल रूप से हमारा एल्गोरिदम
  • आप KNN, Random Forest, GBM, Logistic Regression के साथ काम कर चुके हैं

 

ध्यान रखें:

  • हर GridSearchCV ऑब्जेक्ट में सिर्फ एक estimator होता है
Python में Hyperparameter Tuning

GridSearchCV 'param_grid'

param_grid इनपुट:

  • किन हाइपरपैरामीटर और किन मानों को टेस्ट करना है, सेट करें

सूची की जगह:

max_depth_list = [2, 4, 6, 8]
min_samples_leaf_list = [1, 2, 4, 6]

यह होगा:

param_grid = {'max_depth': [2, 4, 6, 8],
              'min_samples_leaf': [1, 2, 4, 6]}
Python में Hyperparameter Tuning

GridSearchCV 'param_grid'

param_grid इनपुट:

ध्यान रखें: आपके param_grid डिक्शनरी की keys वैध हाइपरपैरामीटर होनी चाहिए।

उदाहरण, Logistic Regression estimator के लिए:

# Incorrect
param_grid = {'C': [0.1,0.2,0.5],
              'best_choice': [10,20,50]}
ValueError: Invalid parameter best_choice for estimator LogisticRegression
Python में Hyperparameter Tuning

GridSearchCV 'cv'

cv इनपुट:

  • क्रॉस-वैलिडेशन कैसे करेंगे, इसका चुनाव
  • एक integer देने पर k-fold क्रॉस-वैलिडेशन होता है; 5 या 10 आम मानक हैं

k-fold wikipedia

Python में Hyperparameter Tuning

GridSearchCV 'scoring'

 

scoring इनपुट:

  • किस स्कोर से सबसे अच्छा ग्रिड स्क्वायर (मॉडल) चुनें
  • अपना स्कोर दें या Scikit Learn के metrics मॉड्यूल का उपयोग करें

सारे built-in स्कोरिंग फंक्शन ऐसे देखें:

from sklearn import metrics
sorted(metrics.SCORERS.keys())
Python में Hyperparameter Tuning

GridSearchCV 'refit'

 

refit इनपुट:

  • सर्वश्रेष्ठ हाइपरपैरामीटर को training डेटा पर fit करता है
  • GridSearchCV ऑब्जेक्ट को एक estimator (prediction के लिए) की तरह उपयोग करने देता है
  • बहुत काम की setting!
Python में Hyperparameter Tuning

GridSearchCV 'n_jobs'

n_jobs इनपुट:

  • parallel execution में मदद करता है
  • एक-के-बाद-एक की जगह कई मॉडल साथ में बन पाते हैं

काम का कोड:

import os
print(os.cpu_count())

यदि और काम भी करना है तो सारे cores मॉडलिंग में न लगा दें!

Python में Hyperparameter Tuning

GridSearchCV 'return_train_score'

 

return_train_score इनपुट:

  • हुई training runs के आँकड़े लॉग करता है
  • bias-variance trade-off के विश्लेषण में सहायक, पर कंप्यूटेशनल लागत बढ़ती है
  • सर्वश्रेष्ठ मॉडल चुनने में मदद नहीं करता, केवल विश्लेषण हेतु है
Python में Hyperparameter Tuning

GridSearchCV ऑब्जेक्ट बनाना

 

अपना GridSearchCV ऑब्जेक्ट बनाना:

# Create the grid
param_grid = {'max_depth': [2, 4, 6, 8], 'min_samples_leaf': [1, 2, 4, 6]}

#Get a base classifier with some set parameters. rf_class = RandomForestClassifier(criterion='entropy', max_features='auto')
Python में Hyperparameter Tuning

GridSearchCv ऑब्जेक्ट बनाना

 

सभी हिस्से साथ लाना:

grid_rf_class = GridSearchCV(
    estimator = rf_class,
    param_grid = parameter_grid,
    scoring='accuracy',
    n_jobs=4,
    cv = 10,
    refit=True,
    return_train_score=True)
Python में Hyperparameter Tuning

GridSearchCV ऑब्जेक्ट का उपयोग

 

क्योंकि हमने refit को True रखा, आप ऑब्जेक्ट सीधे उपयोग कर सकते हैं:

#Fit the object to our data
grid_rf_class.fit(X_train, y_train)

# Make predictions
grid_rf_class.predict(X_test)
Python में Hyperparameter Tuning

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

Python में Hyperparameter Tuning

Preparing Video For Download...