Lasso 모델 선택

Beginner

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

소개

이 실습에서는 AIC 및 BIC 기준을 사용하여 최상의 Lasso 모델을 선택하는 방법을 LassoLarsIC 추정기를 통해 학습합니다. scikit-learn 의 당뇨병 데이터셋을 사용합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 Jupyter Notebook을 연습에 사용합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터 로드

scikit-learn 의 load_diabetes 메서드를 사용하여 당뇨병 데이터셋을 로드합니다.

from sklearn.datasets import load_diabetes

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

데이터 전처리

StandardScaler 메서드를 사용하여 데이터셋을 스케일링하고 AIC 기준으로 LassoLarsIC 추정기를 맞춥니다.

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)

AIC 및 BIC 재스케일링

[ZHT2007]의 정의와 일치하도록 AIC 및 BIC 를 재스케일링해야 합니다.

def zou_et_al_criterion_rescaling(criterion, n_samples, noise_variance):
    """Zou 등의 정의에 따라 정보 기준을 재스케일링합니다."""
    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]

BIC 기준으로 LassoLarsIC 추정기 적합

이제 BIC 기준으로 LassoLarsIC 추정기를 적합합니다.

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]

AIC 및 BIC 기준 플롯

AIC 및 BIC 기준과 이후 선택된 정규화 매개변수를 플롯합니다.

plt.plot(aic_criterion, color="tab:blue", marker="o", label="AIC 기준")
plt.plot(bic_criterion, color="tab:orange", marker="o", label="BIC 기준")
plt.vlines(
    index_alpha_path_bic,
    aic_criterion.min(),
    aic_criterion.max(),
    color="black",
    linestyle="--",
    label="선택된 alpha",
)
plt.legend()
plt.ylabel("정보 기준")
plt.xlabel("Lasso 모델 시퀀스")
_ = plt.title("AIC 및 BIC 를 통한 Lasso 모델 선택")

요약

이 실습에서는 AIC 및 BIC 기준을 사용하여 최적의 Lasso 모델을 선택하는 방법을 LassoLarsIC 추정기를 통해 배웠습니다. 또한 [ZHT2007]에서 정의된 내용과 일치하도록 AIC 및 BIC 를 재조정하는 방법도 배웠습니다.