선형 모델링을 위한 Ridge 회귀

Beginner

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

소개

이 실습에서는 L2 정규화를 사용하여 선형 회귀에서 과적합을 방지하기 위한 릿지 회귀를 배우게 됩니다. 파이썬의 인기 머신러닝 라이브러리인 scikit-learn 을 사용합니다.

가상 머신 팁

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

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제약으로 인해 작업 검증은 자동화될 수 없습니다.

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

필요한 라이브러리 가져오기

이 실습에서는 필요한 라이브러리를 가져오는 것으로 시작합니다.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error

랜덤 데이터 생성

scikit-learn 의 make_regression 함수를 사용하여 랜덤 데이터를 생성합니다. n_samples를 10, n_features를 10, random_state를 1 로 설정합니다. 이 함수는 입력 특징 X, 목표 변수 y, 그리고 실제 계수 값 w 를 반환합니다.

X, y, w = make_regression(
    n_samples=10, n_features=10, coef=True, random_state=1, bias=3.5
)

Ridge 회귀 모델 초기화

기본 하이퍼파라미터로 Ridge 회귀 모델을 초기화합니다.

clf = Ridge()

서로 다른 정규화 강도로 모델 학습

반복문을 사용하여 서로 다른 정규화 강도로 모델을 학습합니다. set_params 함수에서 alpha 값을 변경하여 정규화 강도를 설정합니다. 각 alpha 값에 대한 계수와 오차를 저장합니다.

coefs = []
errors = []

alphas = np.logspace(-6, 6, 200)

for a in alphas:
    clf.set_params(alpha=a)
    clf.fit(X, y)
    coefs.append(clf.coef_)
    errors.append(mean_squared_error(clf.coef_, w))

결과 플롯

Matplotlib 을 사용하여 정규화 강도에 따른 계수 및 오차를 플롯합니다.

plt.figure(figsize=(20, 6))

plt.subplot(121)
ax = plt.gca()
ax.plot(alphas, coefs)
ax.set_xscale("log")
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("정규화에 따른 Ridge 계수")
plt.axis("tight")

plt.subplot(122)
ax = plt.gca()
ax.plot(alphas, errors)
ax.set_xscale("log")
plt.xlabel("alpha")
plt.ylabel("오차")
plt.title("정규화에 따른 계수 오차")
plt.axis("tight")

plt.show()

요약

이 실험에서 우리는 L2 정규화를 사용하여 과적합을 방지하는 Ridge 회귀를 사용하는 방법을 배웠습니다. 랜덤 데이터를 생성하고, 서로 다른 정규화 강도로 Ridge 회귀 모델을 학습시키고, 정규화 강도에 따른 계수와 오차를 플롯했습니다.