L1-로지스틱 회귀의 정규화 경로

Beginner

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

소개

L1-로지스틱 회귀 모델은 모델의 희소성을 유도하기 위해 L1 정규화를 사용하는 이진 분류 방법입니다. 이 모델의 정규화 경로는 정규화 강도가 증가함에 따라 모델의 계수를 보여줍니다. 이 실습에서는 아이리스 데이터셋을 사용하여 L1-페널티화된 로지스틱 회귀 모델을 학습하고 그 정규화 경로를 플롯할 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.

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

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

아이리스 데이터셋 로드

scikit-learn 라이브러리에서 아이리스 데이터셋을 로드합니다. 이 데이터셋은 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비의 네 가지 특징을 포함합니다. 이진 분류를 위해 처음 두 특징만 사용할 것입니다.

from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target

X = X[y != 2] ## 이진 분류를 위해 처음 두 특징만 사용
y = y[y != 2]

X /= X.max() ## 수렴 속도를 높이기 위해 X 를 정규화합니다.

정규화 경로 계산

다양한 정규화 강도를 가진 L1-페널티화된 로지스틱 회귀 모델을 학습하여 정규화 경로를 계산할 것입니다. liblinear 솔버를 사용하여 L1 페널티가 있는 로지스틱 회귀 손실을 효율적으로 최적화할 것입니다. 모델이 계수를 수집하기 전에 수렴했는지 확인하기 위해 허용 오차 (tolerance) 를 낮은 값으로 설정할 것입니다. 또한 warm_start=True 를 사용하여 이전 모델의 계수를 다음 모델의 초기화에 재사용하여 전체 경로 계산 속도를 높일 것입니다.

import numpy as np
from sklearn import linear_model
from sklearn.svm import l1_min_c

cs = l1_min_c(X, y, loss="log") * np.logspace(0, 10, 16)

clf = linear_model.LogisticRegression(
    penalty="l1",
    solver="liblinear",
    tol=1e-6,
    max_iter=int(1e6),
    warm_start=True,
    intercept_scaling=10000.0,
)
coefs_ = []
for c in cs:
    clf.set_params(C=c)
    clf.fit(X, y)
    coefs_.append(clf.coef_.ravel().copy())

coefs_ = np.array(coefs_)

정규화 경로 시각화

학습된 모델의 계수를 사용하여 정규화 경로를 시각화할 것입니다. 계수는 정규화 강도의 로그 값에 대해 플롯될 것입니다. 그림의 왼쪽 (강한 정규화제) 에서는 모든 계수가 정확히 0 입니다. 정규화가 점진적으로 약해짐에 따라 계수가 하나씩 0 이 아닌 값을 가질 수 있습니다.

import matplotlib.pyplot as plt

plt.plot(np.log10(cs), coefs_, marker="o")
ymin, ymax = plt.ylim()
plt.xlabel("log(C)")
plt.ylabel("계수")
plt.title("로지스틱 회귀 경로")
plt.axis("tight")
plt.show()

요약

이 실습에서는 아이리스 데이터셋에 L1-페널티화된 로지스틱 회귀 모델을 학습하고 그 정규화 경로를 시각화하는 방법을 배웠습니다. 정규화 경로는 모델의 계수가 서로 다른 정규화 강도에 따라 어떻게 변하는지 보여줍니다. 이 방법은 특징 선택에 유용하며, 어떤 특징이 모델에 가장 큰 영향을 미치는지 식별할 수 있기 때문입니다.