Seleção de Modelo Lasso

Beginner

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

Introdução

Neste laboratório, aprenderemos a utilizar o estimador LassoLarsIC para selecionar o melhor modelo Lasso utilizando os critérios AIC e BIC. Usaremos o conjunto de dados de diabetes do scikit-learn.

Dicas da Máquina Virtual

Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.

Carregar os Dados

Carregaremos o conjunto de dados de diabetes do scikit-learn usando o método load_diabetes.

from sklearn.datasets import load_diabetes

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

Pré-processar os Dados

Escalaremos o conjunto de dados usando o método StandardScaler e ajustaremos o estimador LassoLarsIC com o critério 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)

Redimensionar AIC e BIC

Precisamos redimensionar o AIC e o BIC para estar alinhado com a definição em [ZHT2007]_.

def zou_et_al_criterion_rescaling(criterion, n_samples, noise_variance):
    """Redimensionar o critério de informação para seguir a definição 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 o estimador LassoLarsIC com o critério BIC

Agora, ajustaremos o estimador LassoLarsIC com o critério 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]

Plotar os Critérios AIC e BIC

Vamos plotar os critérios AIC e BIC e o parâmetro de regularização selecionado subsequente.

plt.plot(aic_criterion, color="tab:blue", marker="o", label="Critério AIC")
plt.plot(bic_criterion, color="tab:orange", marker="o", label="Critério BIC")
plt.vlines(
    index_alpha_path_bic,
    aic_criterion.min(),
    aic_criterion.max(),
    color="black",
    linestyle="--",
    label="Alfa Selecionado",
)
plt.legend()
plt.ylabel("Critério de Informação")
plt.xlabel("Sequência do modelo Lasso")
_ = plt.title("Seleção do modelo Lasso via AIC e BIC")

Resumo

Neste laboratório, aprendemos como usar o estimador LassoLarsIC para selecionar o melhor modelo Lasso utilizando os critérios AIC e BIC. Também aprendemos como reescalar AIC e BIC para estar alinhado com a definição em [ZHT2007]_.