Régression régularisée

Apprentissage supervisé avec scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Pourquoi régulariser ?

  • Rappel : la régression linéaire minimise une fonction de perte

  • Elle choisit un coefficient, $a$, pour chaque variable caractéristique, plus $b$

  • Des coefficients importants peuvent conduire à un surajustement

  • Régularisation : pénaliser les grands coefficients

Apprentissage supervisé avec scikit-learn

Régression de crête

  • Fonction de perte = fonction de perte MCO + $$ \alpha * \sum_{i=1}^{n} {a_i}^2$$

  • La crête pénalise les coefficients positifs ou négatifs importants

  • $\alpha$ : paramètre que nous devons choisir

  • Choisir $\alpha$ est semblable à choisir k dans KNN

  • Hyperparamètre : variable utilisée pour optimiser les paramètres du modèle

  • $\alpha$ contrôle la complexité du modèle

    • $\alpha$ = 0 => MCO, peut conduire à un surajustement

    • $\alpha$ très élevé => peut conduire à un sous-ajustement

Apprentissage supervisé avec scikit-learn

Régression de crête dans scikit-learn

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]
Apprentissage supervisé avec scikit-learn

Régression lasso

  • Fonction de perte = fonction de perte MCO + $$ \alpha * \sum_{i=1}^{n} |a_i|$$
Apprentissage supervisé avec scikit-learn

Régression lasso dans scikit-learn

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]
Apprentissage supervisé avec scikit-learn

Régression lasso pour la sélection des caractéristiques

  • Lasso permet de sélectionner les caractéristiques importantes d’un ensemble de données

  • Réduit à zéro les coefficients des caractéristiques moins importantes

  • Les caractéristiques qui ne sont pas réduites à zéro sont sélectionnées par lasso

Apprentissage supervisé avec scikit-learn

Lasso pour la sélection des caractéristiques dans scikit-learn

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()
Apprentissage supervisé avec scikit-learn

Lasso pour la sélection des caractéristiques dans scikit-learn

graphique à barres des coefficients pour chaque caractéristique, tous autour de zéro sauf pour le diabète avec une valeur de 25

Apprentissage supervisé avec scikit-learn

Passons à la pratique !

Apprentissage supervisé avec scikit-learn

Preparing Video For Download...