Trajectoire de régularisation de la régression logistique L1

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Le modèle de régression logistique L1 est une méthode de classification binaire qui utilise la régularisation L1 pour induire une parcimonie dans le modèle. La trajectoire de régularisation de ce modèle montre les coefficients du modèle à mesure que la force de régularisation augmente. Dans ce laboratoire, nous allons utiliser l'ensemble de données Iris pour entraîner des modèles de régression logistique pénalisés L1 et tracer leurs trajectoires de régularisation.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.


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{{"Trajectoire de régularisation de la régression logistique L1"}} ml/sklearn -.-> lab-49204{{"Trajectoire de régularisation de la régression logistique L1"}} end

Charger l'ensemble de données Iris

Nous allons charger l'ensemble de données Iris à partir de la bibliothèque scikit-learn. L'ensemble de données contient quatre caractéristiques : Longueur du sépale, Largeur du sépale, Longueur des pétales et Largeur des pétales. Nous n'utiliserons que les deux premières caractéristiques pour la classification binaire.

from sklearn import datasets

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

X = X[y!= 2] ## Utiliser seulement les deux premières caractéristiques pour la classification binaire
y = y[y!= 2]

X /= X.max() ## Normaliser X pour accélérer la convergence

Calculer la trajectoire de régularisation

Nous allons calculer la trajectoire de régularisation en entraînant des modèles de régression logistique pénalisés L1 avec différentes forces de régularisation. Nous utiliserons le solveur liblinear, qui peut optimiser efficacement la perte de régression logistique avec une pénalité L1. Nous allons définir une valeur basse pour la tolérance pour nous assurer que le modèle a convergé avant de collecter les coefficients. Nous utiliserons également warm_start=True, ce qui signifie que les coefficients des modèles sont réutilisés pour initialiser l'ajustement du prochain modèle afin d'accélérer le calcul de la trajectoire complète.

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

Tracer la trajectoire de régularisation

Nous allons tracer la trajectoire de régularisation en utilisant les coefficients des modèles entraînés. Les coefficients seront tracés en fonction du logarithme de la force de régularisation. Sur le côté gauche de la figure (régulariseurs forts), tous les coefficients sont exactement égaux à 0. Lorsque la régularisation devient progressivement moins stricte, les coefficients peuvent prendre des valeurs non nulles les uns après les autres.

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

Sommaire

Dans ce laboratoire, nous avons appris à entraîner des modèles de régression logistique pénalisés L1 sur l'ensemble de données Iris et à tracer leurs trajectoires de régularisation. La trajectoire de régularisation montre comment les coefficients du modèle changent avec différentes forces de régularisation. Cette méthode est utile pour la sélection de fonctionnalités, car elle peut identifier les fonctionnalités qui ont le plus d'impact significatif sur le modèle.