Regularized regression

scikit-learn के साथ Supervised Learning

George Boorman

Core Curriculum Manager, DataCamp

Regularize क्यों?

  • याद करें: Linear regression एक loss function को न्यूनतम करता है

  • यह हर feature वैरिएबल के लिए एक गुणांक $a$ चुनता है, साथ में $b$

  • बड़े गुणांक overfitting करा सकते हैं

  • Regularization: बड़े गुणांकों पर दंड लगाएँ

scikit-learn के साथ Supervised Learning

Ridge regression

  • Loss function = OLS loss function + $$ \alpha * \sum_{i=1}^{n} {a_i}^2$$

  • Ridge बड़े धनात्मक या ऋणात्मक गुणांकों को दंडित करता है

  • $\alpha$: वह पैरामीटर जिसे चुनना होता है

  • $\alpha$ चुनना KNN में k चुनने जैसा है

  • Hyperparameter: मॉडल पैरामीटर optimize करने के लिए प्रयुक्त वैरिएबल

  • $\alpha$ मॉडल की जटिलता नियंत्रित करता है

    • $\alpha$ = 0 = OLS (overfitting हो सकता है)

    • बहुत उच्च $\alpha$: underfitting हो सकता है

scikit-learn के साथ Supervised Learning

scikit-learn में Ridge regression

from sklearn.linear_model import Ridge

scores = [] for alpha in [0.1, 1.0, 10.0, 100.0, 1000.0]:
ridge = Ridge(alpha=alpha)
ridge.fit(X_train, y_train) y_pred = ridge.predict(X_test)
scores.append(ridge.score(X_test, y_test))
print(scores)
[0.2828466623222221, 0.28320633574804777, 0.2853000732200006, 
 0.26423984812668133, 0.19292424694100963]
scikit-learn के साथ Supervised Learning

Lasso regression

  • Loss function = OLS loss function + $$ \alpha * \sum_{i=1}^{n} |a_i|$$
scikit-learn के साथ Supervised Learning

scikit-learn में Lasso regression

from sklearn.linear_model import Lasso

scores = [] for alpha in [0.01, 1.0, 10.0, 20.0, 50.0]: lasso = Lasso(alpha=alpha) lasso.fit(X_train, y_train) lasso_pred = lasso.predict(X_test) scores.append(lasso.score(X_test, y_test)) print(scores)
[0.99991649071123, 0.99961700284223, 0.93882227671069, 0.74855318676232, -0.05741034640016]
scikit-learn के साथ Supervised Learning

Feature selection के लिए Lasso regression

  • Lasso किसी डेटासेट के महत्वपूर्ण फीचर चुन सकता है

  • कम महत्वपूर्ण फीचर के गुणांक को शून्य तक घटाता है

  • जो फीचर शून्य तक नहीं घटते, वे lasso द्वारा चुने जाते हैं

scikit-learn के साथ Supervised Learning

scikit-learn में feature selection के लिए Lasso

from sklearn.linear_model import Lasso

X = diabetes_df.drop("glucose", axis=1).values y = diabetes_df["glucose"].values names = diabetes_df.drop("glucose", axis=1).columns
lasso = Lasso(alpha=0.1)
lasso_coef = lasso.fit(X, y).coef_
plt.bar(names, lasso_coef) plt.xticks(rotation=45) plt.show()
scikit-learn के साथ Supervised Learning

scikit-learn में feature selection के लिए Lasso

हर फीचर के गुणांकों का बार प्लॉट; सभी शून्य के आसपास, सिवाय diabetes के जो 25 है

scikit-learn के साथ Supervised Learning

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

scikit-learn के साथ Supervised Learning

Preparing Video For Download...