Trayectoria de regularización de la regresión logística L1

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El modelo de regresión logística L1 es un método de clasificación binaria que utiliza regularización L1 para inducir esparcidad en el modelo. La trayectoria de regularización de este modelo muestra los coeficientes del modelo a medida que aumenta la fuerza de regularización. En este laboratorio, usaremos el conjunto de datos Iris para entrenar modelos de regresión logística penalizada con L1 y trazar sus trayectorias de regularización.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49204{{"Trayectoria de regularización de la regresión logística L1"}} ml/sklearn -.-> lab-49204{{"Trayectoria de regularización de la regresión logística L1"}} end

Cargar el conjunto de datos Iris

Cargaremos el conjunto de datos Iris desde la biblioteca scikit-learn. El conjunto de datos contiene cuatro características: longitud del sépalo, ancho del sépalo, longitud del pétalo y ancho del pétalo. Usaremos solo las dos primeras características para la clasificación binaria.

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 la trayectoria de regularización

Calcularemos la trayectoria de regularización entrenando modelos de regresión logística penalizados con L1 con diferentes fuerzas de regularización. Usaremos el solucionador liblinear, que puede optimizar eficientemente la pérdida de la regresión logística con una penalización L1. Estableceremos un valor bajo para la tolerancia para asegurarnos de que el modelo haya convergido antes de recopilar los coeficientes. También usaremos warm_start = True, lo que significa que los coeficientes de los modelos se reutilizan para inicializar la siguiente ajuste del modelo para acelerar el cálculo de la trayectoria completa.

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

Graficar la trayectoria de regularización

Graficaremos la trayectoria de regularización utilizando los coeficientes de los modelos entrenados. Los coeficientes se graficarán en función del logaritmo de la fuerza de regularización. En el lado izquierdo de la figura (regularizadores fuertes), todos los coeficientes son exactamente 0. A medida que la regularización se vuelve progresivamente menos restrictiva, los coeficientes pueden tomar valores no nulos uno tras otro.

import matplotlib.pyplot as plt

plt.plot(np.log10(cs), coefs_, marker="o")
ymin, ymax = plt.ylim()
plt.xlabel("log(C)")
plt.ylabel("Coefficients")
plt.title("Logistic Regression Path")
plt.axis("tight")
plt.show()

Resumen

En este laboratorio, aprendimos cómo entrenar modelos de regresión logística penalizados con L1 en el conjunto de datos Iris y graficar sus trayectorias de regularización. La trayectoria de regularización muestra cómo cambian los coeficientes del modelo con diferentes fuerzas de regularización. Este método es útil en la selección de características, ya que puede identificar qué características tienen el mayor impacto en el modelo.