Sélection du modèle Lasso

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser l'estimateur LassoLarsIC pour sélectionner le meilleur modèle Lasso en utilisant les critères AIC et BIC. Nous utiliserons le jeu de données diabetes de scikit-learn.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.

Charger les données

Nous allons charger le jeu de données diabetes de scikit-learn en utilisant la méthode load_diabetes.

from sklearn.datasets import load_diabetes

X, y = load_diabetes(return_X_y=True, as_frame=True)

Prétraiter les données

Nous allons mettre à l'échelle le jeu de données en utilisant la méthode StandardScaler et ajuster l'estimateur LassoLarsIC avec le critère AIC.

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LassoLarsIC
from sklearn.pipeline import make_pipeline

lasso_lars_ic = make_pipeline(StandardScaler(), LassoLarsIC(criterion="aic")).fit(X, y)

Rééchelle AIC et BIC

Nous devons rééchelle l'AIC et le BIC pour qu'ils soient conformes à la définition dans [ZHT2007]_.

def zou_et_al_criterion_rescaling(criterion, n_samples, noise_variance):
    """Rééchelle le critère d'information pour suivre la définition de Zou et al."""
    return criterion - n_samples * np.log(2 * np.pi * noise_variance) - n_samples

aic_criterion = zou_et_al_criterion_rescaling(
    lasso_lars_ic[-1].criterion_,
    n_samples,
    lasso_lars_ic[-1].noise_variance_,
)

index_alpha_path_aic = np.flatnonzero(
    lasso_lars_ic[-1].alphas_ == lasso_lars_ic[-1].alpha_
)[0]

Ajuster l'estimateur LassoLarsIC avec le critère BIC

Nous allons maintenant ajuster l'estimateur LassoLarsIC avec le critère BIC.

lasso_lars_ic.set_params(lassolarsic__criterion="bic").fit(X, y)

bic_criterion = zou_et_al_criterion_rescaling(
    lasso_lars_ic[-1].criterion_,
    n_samples,
    lasso_lars_ic[-1].noise_variance_,
)

index_alpha_path_bic = np.flatnonzero(
    lasso_lars_ic[-1].alphas_ == lasso_lars_ic[-1].alpha_
)[0]

Tracer le critère AIC et BIC

Nous allons tracer le critère AIC et BIC et le paramètre de régularisation sélectionné ensuite.

plt.plot(aic_criterion, color="tab:blue", marker="o", label="Critère AIC")
plt.plot(bic_criterion, color="tab:orange", marker="o", label="Critère BIC")
plt.vlines(
    index_alpha_path_bic,
    aic_criterion.min(),
    aic_criterion.max(),
    color="black",
    linestyle="--",
    label="Alpha sélectionné",
)
plt.legend()
plt.ylabel("Critère d'information")
plt.xlabel("Séquence du modèle Lasso")
_ = plt.title("Sélection du modèle Lasso via AIC et BIC")

Sommaire

Dans ce laboratoire, nous avons appris à utiliser l'estimateur LassoLarsIC pour sélectionner le meilleur modèle Lasso en utilisant les critères AIC et BIC. Nous avons également appris à rééchelle l'AIC et le BIC pour qu'ils soient conformes à la définition dans [ZHT2007]_.