Tracer l'hyperplan séparateur avec SGD

Beginner

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

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser les Machines à Vecteurs de Support (SVM) avec la Descente de Gradient Stochastique (SGD) pour classifier des données. Les SVM sont un algorithme de classification puissant largement utilisé en apprentissage automatique pour l'analyse de classification et de régression. L'idée derrière les SVM est de trouver le meilleur hyperplan qui sépare les données en classes avec la marge la plus large possible. La marge est la distance entre l'hyperplan et les points de données les plus proches de chaque classe. La Descente de Gradient Stochastique (SGD) est un algorithme d'optimisation utilisé pour trouver les meilleurs paramètres pour l'algorithme des SVM.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

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

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

Importez les bibliothèques nécessaires et générez des données

Tout d'abord, nous devons importer les bibliothèques nécessaires et générer un ensemble de données approprié pour la classification. Dans cet exemple, nous allons générer 50 points séparables en utilisant la fonction make_blobs de Scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import make_blobs

## nous créons 50 points séparables
X, Y = make_blobs(n_samples=50, centers=2, random_state=0, cluster_std=0.60)

Entraînez le modèle SVM avec SGD

Ensuite, nous devons entraîner le modèle SVM en utilisant SGD. Nous allons utiliser la classe SGDClassifier de Scikit-learn pour entraîner le modèle. Nous allons définir le paramètre loss sur "hinge" pour utiliser l'algorithme SVM et le paramètre alpha sur 0,01 pour contrôler la force de régularisation. Nous allons également définir le paramètre max_iter sur 200 pour limiter le nombre d'itérations.

## ajustez le modèle
clf = SGDClassifier(loss="hinge", alpha=0.01, max_iter=200)
clf.fit(X, Y)

Tracez l'hyperplan séparateur de la marge maximale

Enfin, nous pouvons tracer l'hyperplan séparateur de la marge maximale que nous avons obtenu en utilisant l'algorithme SVM avec SGD. Nous allons créer une grille de points en utilisant np.meshgrid puis calculer la fonction de décision pour chaque point de la grille en utilisant la méthode decision_function du modèle SVM. Nous tracerons ensuite la frontière de décision en utilisant plt.contour et les points de données en utilisant plt.scatter.

## tracez la ligne, les points et les vecteurs les plus proches du plan
xx = np.linspace(-1, 5, 10)
yy = np.linspace(-1, 5, 10)

X1, X2 = np.meshgrid(xx, yy)
Z = np.empty(X1.shape)
for (i, j), val in np.ndenumerate(X1):
    x1 = val
    x2 = X2[i, j]
    p = clf.decision_function([[x1, x2]])
    Z[i, j] = p[0]
levels = [-1.0, 0.0, 1.0]
linestyles = ["dashed", "solid", "dashed"]
colors = "k"
plt.contour(X1, X2, Z, levels, colors=colors, linestyles=linestyles)
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolor="black", s=20)

plt.axis("tight")
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser les Machines à Vecteurs de Support (SVM) avec la Descente de Gradient Stochastique (SGD) pour classifier des données. Nous avons généré un ensemble de données approprié pour la classification, entraîné le modèle SVM en utilisant SGD et tracé l'hyperplan séparateur de la marge maximale. Les SVM sont un algorithme de classification puissant largement utilisé en apprentissage automatique pour l'analyse de classification et de régression. L'idée derrière les SVM est de trouver le meilleur hyperplan qui sépare les données en classes avec la marge la plus large possible. La Descente de Gradient Stochastique (SGD) est un algorithme d'optimisation utilisé pour trouver les meilleurs paramètres pour l'algorithme des SVM.