Caminho de Regularização da Regressão Logística L1

Beginner

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

Introdução

O modelo de Regressão Logística L1 é um método de classificação binária que utiliza a regularização L1 para induzir esparcidade no modelo. O caminho de regularização deste modelo mostra os coeficientes do modelo à medida que a força de regularização aumenta. Neste laboratório, utilizaremos o conjunto de dados Iris para treinar modelos de regressão logística penalizados por L1 e traçar seus caminhos de regularização.

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 prontamente o problema para si.

Carregar o conjunto de dados Iris

Vamos carregar o conjunto de dados Iris da biblioteca scikit-learn. O conjunto de dados contém quatro características: Comprimento da sépala, Largura da sépala, Comprimento da pétala e Largura da pétala. Usaremos apenas as duas primeiras características para classificação binária.

from sklearn import datasets

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

X = X[y != 2] ## Use only first two features for binary classification
y = y[y != 2]

X /= X.max() ## Normalize X to speed-up convergence

Calcular o caminho de regularização

Vamos calcular o caminho de regularização treinando modelos de regressão logística penalizados por L1 com diferentes níveis de força de regularização. Usaremos o solucionador liblinear, que pode otimizar eficientemente a perda de Regressão Logística com uma penalidade L1. Definiremos um valor baixo para a tolerância para garantir que o modelo tenha convergido antes de coletar os coeficientes. Também usaremos warm_start=True, o que significa que os coeficientes dos modelos são reutilizados para inicializar o ajuste do próximo modelo, acelerando o cálculo do caminho completo.

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_)

Plotar o caminho de regularização

Vamos plotar o caminho de regularização usando os coeficientes dos modelos treinados. Os coeficientes serão plotados contra o logaritmo da força de regularização. No lado esquerdo do gráfico (regularizadores fortes), todos os coeficientes são exatamente 0. À medida que a regularização se torna progressivamente menos restritiva, os coeficientes podem assumir valores não nulos um após o outro.

import matplotlib.pyplot as plt

plt.plot(np.log10(cs), coefs_, marker="o")
ymin, ymax = plt.ylim()
plt.xlabel("log(C)")
plt.ylabel("Coeficientes")
plt.title("Caminho da Regressão Logística")
plt.axis("tight")
plt.show()

Resumo

Neste laboratório, aprendemos como treinar modelos de regressão logística penalizados por L1 no conjunto de dados Iris e plotar seus caminhos de regularização. O caminho de regularização demonstra como os coeficientes do modelo mudam com diferentes níveis de força de regularização. Este método é útil na seleção de recursos, pois pode identificar quais recursos têm o impacto mais significativo no modelo.