Introducción
En este laboratorio, aprenderemos a usar el estimador LassoLarsIC para seleccionar el mejor modelo Lasso utilizando los criterios AIC y BIC. Usaremos el conjunto de datos de diabetes de scikit-learn.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Cargar los datos
Cargaremos el conjunto de datos de diabetes de scikit-learn utilizando el método load_diabetes.
from sklearn.datasets import load_diabetes
X, y = load_diabetes(return_X_y=True, as_frame=True)
Preprocesar los datos
Escalaremos el conjunto de datos utilizando el método StandardScaler y ajustaremos el estimador LassoLarsIC con el criterio 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)
Reescalar AIC y BIC
Necesitamos reescalar el AIC y el BIC para que estén de acuerdo con la definición en [ZHT2007]_.
def zou_et_al_criterion_rescaling(criterion, n_samples, noise_variance):
"""Reescalar el criterio de información para seguir la definición 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]
Ajustar el estimador LassoLarsIC con el criterio BIC
Ahora ajustaremos el estimador LassoLarsIC con el criterio 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]
Graficar el criterio AIC y BIC
Graficaremos el criterio AIC y BIC y el parámetro de regularización seleccionado posteriormente.
plt.plot(aic_criterion, color="tab:blue", marker="o", label="Criterio AIC")
plt.plot(bic_criterion, color="tab:orange", marker="o", label="Criterio BIC")
plt.vlines(
index_alpha_path_bic,
aic_criterion.min(),
aic_criterion.max(),
color="black",
linestyle="--",
label="Alpha seleccionado",
)
plt.legend()
plt.ylabel("Criterio de información")
plt.xlabel("Secuencia del modelo Lasso")
_ = plt.title("Selección del modelo Lasso a través de AIC y BIC")
Resumen
En este laboratorio, aprendimos cómo usar el estimador LassoLarsIC para seleccionar el mejor modelo Lasso utilizando los criterios AIC y BIC. También aprendimos cómo reescalar AIC y BIC para que estén de acuerdo con la definición en [ZHT2007]_.