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