Grid Search का परिचय

Python में Hyperparameter Tuning

Alex Scriven

Data Scientist

2 Hyperparameters का ऑटोमेशन

आपका पिछला कार्य:

neighbors_list = [3,5,10,20,50,75]
accuracy_list = []
for test_number in neighbors_list:
    model = KNeighborsClassifier(n_neighbors=test_number)
    predictions = model.fit(X_train, y_train).predict(X_test)
    accuracy = accuracy_score(y_test, predictions)
    accuracy_list.append(accuracy)

जिसे हमने विश्लेषण के लिए एक dataframe में जोड़ा।

Python में Hyperparameter Tuning

2 Hyperparameters का ऑटोमेशन

 

2 hyperparameters के मान टेस्ट करने पर क्या?

एक GBM एल्गोरिदम का उपयोग करते हुए:

  • learn_rate [0.001, 0.01, 0.05]
  • max_depth [4,6,8,10]

हम (nested) for loop इस्तेमाल कर सकते हैं!

Python में Hyperparameter Tuning

2 Hyperparameters का ऑटोमेशन

पहले एक मॉडल बनाने का फंक्शन:

def gbm_grid_search(learn_rate, max_depth):
    model = GradientBoostingClassifier(
            learning_rate=learn_rate,
            max_depth=max_depth)

predictions = model.fit(X_train, y_train).predict(X_test)
return([learn_rate, max_depth, accuracy_score(y_test, predictions)])
Python में Hyperparameter Tuning

2 Hyperparameters का ऑटोमेशन

 

अब हम hyperparameters की सूचियों पर loop चलाकर अपना फंक्शन कॉल कर सकते हैं:

results_list = []

for learn_rate in learn_rate_list:
    for max_depth in max_depth_list:
        results_list.append(gbm_grid_search(learn_rate,max_depth))

Python में Hyperparameter Tuning

2 Hyperparameters का ऑटोमेशन

 

हम इन परिणामों को एक DataFrame में भी डालकर प्रिंट कर सकते हैं:

results_df = pd.DataFrame(results_list, columns=['learning_rate', 'max_depth', 'accuracy'])
print(results_df)

results table

Python में Hyperparameter Tuning

कितने मॉडल?

 

अधिक hyperparameters और मान जोड़कर बहुत और मॉडल बने।

  • संबंध linear नहीं, exponential है
  • किसी hyperparameter का एक और मान जोड़ना सिर्फ एक मॉडल नहीं होता
  • Hyperparameter 1 के 5 और Hyperparameter 2 के 10 मान यानी 50 मॉडल!

Cross-validation का क्या?

  • 10-fold cross-validation से 50x10 = 500 मॉडल बनेंगे!
Python में Hyperparameter Tuning

2 से N hyperparameters तक

 

और hyperparameters जोड़ने पर क्या?

हम अपना loop nest कर सकते हैं!

# Adjust the list of values to test
learn_rate_list = [0.001, 0.01, 0.1, 0.2, 0.3, 0.4, 0.5]
max_depth_list = [4,6,8, 10, 12, 15, 20, 25, 30]
subsample_list = [0.4,0.6, 0.7, 0.8, 0.9]
max_features_list = ['auto', 'sqrt']
Python में Hyperparameter Tuning

2 से N hyperparameters तक

हमारे फंक्शन को एडजस्ट करें:

def gbm_grid_search(learn_rate, max_depth,subsample,max_features):
    model = GradientBoostingClassifier(
        learning_rate=learn_rate, 
        max_depth=max_depth,
        subsample=subsample,
        max_features=max_features)
    predictions = model.fit(X_train, y_train).predict(X_test)
    return([learn_rate, max_depth, accuracy_score(y_test, predictions)])
Python में Hyperparameter Tuning

2 से N hyperparameters तक

हमारे for loop को एडजस्ट करना (nesting):

for learn_rate in learn_rate_list:
    for max_depth in max_depth_list:
        for subsample in subsample_list:
            for max_features in max_features_list:
                results_list.append(gbm_grid_search(learn_rate,max_depth,
                                     subsample,max_features))
results_df = pd.DataFrame(results_list, columns=['learning_rate',
                         'max_depth', 'subsample', 'max_features','accuracy'])
print(results_df)
Python में Hyperparameter Tuning

2 से N hyperparameters तक

 

अब कितने मॉडल?

  • 7x9x5x2 = 630 (cross-validated हो तो 6,300!)

हम हमेशा के लिए nesting नहीं कर सकते!

साथ ही, अगर हमें चाहिए:

  • training time और scores का विवरण
  • cross-validation scores का विवरण
Python में Hyperparameter Tuning

Grid Search का परिचय

आइए एक grid बनाएँ:

  • बाएँ कॉलम में सभी max_depth के मान
  • ऊपर पंक्ति में सभी learning_rate के मान

Table of hyperparameter combinations

Python में Hyperparameter Tuning

Grid Search का परिचय

grid की हर cell पर काम करते हुए:

table of hyperparameter combinations

(4,0.001) का अर्थ ऐसा estimator बनाना है:

GradientBoostingClassifier(max_depth=4, learning_rate=0.001)
Python में Hyperparameter Tuning

Grid Search: फायदे और सीमाएँ

 

इस तरीके के कुछ फायदे:

Advantages:

  • आपको हजारों लाइनों का कोड नहीं लिखना पड़ता
  • grid के भीतर best model ढूँढता है (*यहाँ विशेष नोट!)
  • समझाना आसान
Python में Hyperparameter Tuning

Grid Search: फायदे और सीमाएँ

 

इस तरीके की कुछ कमियाँ:

  • कंप्यूटेशन महँगा! याद है हम कितनी तेजी से 6,000+ मॉडल बनाए?
  • यह 'uninformed' है। एक मॉडल के नतीजे अगले मॉडल के निर्माण में मदद नहीं करते।

 

'informed' तरीकों को आगे कवर करेंगे!

Python में Hyperparameter Tuning

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

Python में Hyperparameter Tuning

Preparing Video For Download...