हाइपरपैरामीटर ट्यूनिंग

scikit-learn के साथ Supervised Learning

George Boorman

Core Curriculum Manager

हाइपरपैरामीटर ट्यूनिंग

  • Ridge/lasso regression: alpha चुनना

  • KNN: n_neighbors चुनना

  • Hyperparameters: पैरामीटर जो आप मॉडल फिट करने से पहले तय करते हैं

    • जैसे alpha और n_neighbors
scikit-learn के साथ Supervised Learning

सही हाइपरपैरामीटर चुनना

  1. अलग-अलग हाइपरपैरामीटर वैल्यू आज़माएँ

  2. सबको अलग-अलग फिट करें

  3. देखें कौन सा बेहतर परफॉर्म करता है

  4. सबसे अच्छा परफॉर्म करने वाली वैल्यू चुनें

 

  • इसे हाइपरपैरामीटर ट्यूनिंग कहते हैं

  • टेस्ट सेट पर ओवरफिटिंग से बचने के लिए क्रॉस-वैलिडेशन ज़रूरी है

  • डेटा स्प्लिट करें और ट्रेनिंग सेट पर क्रॉस-वैलिडेशन चलाएँ

  • फाइनल इवैल्यूएशन के लिए टेस्ट सेट अलग रखें

scikit-learn के साथ Supervised Learning

ग्रिड सर्च क्रॉस-वैलिडेशन

2 से 11 तक 3-3 की वृद्धि में n_neighbors के संभावित मानों का ग्रिड, और metric के विकल्प euclidean या manhattan

scikit-learn के साथ Supervised Learning

ग्रिड सर्च क्रॉस-वैलिडेशन

ग्रिड में हर हाइपरपैरामीटर कॉम्बिनेशन के लिए k-fold क्रॉस-वैलिडेशन स्कोर

scikit-learn के साथ Supervised Learning

ग्रिड सर्च क्रॉस-वैलिडेशन

5 neighbors और euclidean metric हाइलाइट, स्कोर 0.8748

scikit-learn के साथ Supervised Learning

scikit-learn में GridSearchCV

from sklearn.model_selection import GridSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42)
param_grid = {"alpha": np.arange(0.0001, 1, 10), "solver": ["sag", "lsqr"]}
ridge = Ridge()
ridge_cv = GridSearchCV(ridge, param_grid, cv=kf)
ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'alpha': 0.0001, 'solver': 'sag'}
0.7529912278705785
scikit-learn के साथ Supervised Learning

सीमाएँ और एक वैकल्पिक तरीका

  • 3-fold क्रॉस-वैलिडेशन, 1 हाइपरपैरामीटर, 10 कुल वैल्यू = 30 fits
  • 10-fold क्रॉस-वैलिडेशन, 3 हाइपरपैरामीटर, 30 कुल वैल्यू = 900 fits
scikit-learn के साथ Supervised Learning

RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV

kf = KFold(n_splits=5, shuffle=True, random_state=42) param_grid = {'alpha': np.arange(0.0001, 1, 10), "solver": ['sag', 'lsqr']} ridge = Ridge()
ridge_cv = RandomizedSearchCV(ridge, param_grid, cv=kf, n_iter=2) ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'solver': 'sag', 'alpha': 0.0001}
0.7529912278705785
scikit-learn के साथ Supervised Learning

टेस्ट सेट पर मूल्यांकन

test_score = ridge_cv.score(X_test, y_test)

print(test_score)
0.7564731534089224
scikit-learn के साथ Supervised Learning

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

scikit-learn के साथ Supervised Learning

Preparing Video For Download...