Sélection du modèle Lasso

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49190{{"Sélection du modèle Lasso"}} sklearn/preprocessing -.-> lab-49190{{"Sélection du modèle Lasso"}} sklearn/pipeline -.-> lab-49190{{"Sélection du modèle Lasso"}} sklearn/datasets -.-> lab-49190{{"Sélection du modèle Lasso"}} ml/sklearn -.-> lab-49190{{"Sélection du modèle Lasso"}} end

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]_.