Skip to content

Machines à vecteurs de support en Python : Guide complet

Updated on

Comprendre l'algorithme Machine à vecteurs de support (SVM) est essentiel pour les data scientists et les praticiens de l'apprentissage automatique. Avec ce guide, vous comprendrez non seulement les concepts des SVM, mais vous apprendrez également comment les implémenter en Python à l'aide de la bibliothèque populaire sklearn.

Vous souhaitez créer rapidement une visualisation de données à partir d'un dataframe Python Pandas sans code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux d'analyse de données et de visualisation de données dans Jupyter Notebook en transformant votre dataframe pandas (et dataframe polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Qu'est-ce que les SVM ? Comprendre l'aperçu de la machine à vecteurs de support

Les machines à vecteurs de support, souvent abrégées en SVM, sont une classe d'algorithmes d'apprentissage supervisé largement utilisés pour les problèmes de classification et de régression. Au cœur de cela, un SVM crée un hyperplan (dans l'espace bidimensionnel, un hyperplan est une ligne) qui sépare au mieux les différentes catégories de données. Ce faisant, les SVM visent à maximiser la marge - la distance entre l'hyperplan et le point de données le plus proche de n'importe quelle classe.

Les SVM peuvent également traiter des données non linéaires en utilisant le kernel trick, en mappant les caractéristiques originales dans des espaces de dimensions supérieures où il est plus facile de séparer les données. Ainsi, les SVM sont polyvalents et puissants, capables de résoudre des problèmes complexes du monde réel.

La signification de la machine à vecteurs de support

Le terme 'machine à vecteurs de support' est dérivé de la façon dont fonctionne l'algorithme. Dans les SVM, les vecteurs sont des points de données. Les 'vecteurs de support' sont les points les plus proches de l'hyperplan, influençant son orientation et sa position. Ainsi, ces vecteurs de support sont essentiels pour déterminer le meilleur ajustement de l'hyperplan, ce qui donne son nom à l'algorithme.

Avantages et inconvénients des SVM

Avantages des SVM

Comme tout algorithme, les SVM ont leur propre ensemble de forces. Voici quelques avantages :

  1. Efficacité dans les espaces de grande dimension : Les SVM excellent lorsqu'il s'agit de traiter des données de grande dimension. Cela les rend adaptés à des applications où le nombre de fonctionnalités dépasse le nombre d'échantillons.

  2. Souplesse grâce aux noyaux : Les SVM peuvent traiter des données linéaires et non linéaires grâce aux fonctions noyau.

  3. Résistance aux valeurs aberrantes : Les SVM sont moins sensibles au surajustement car ils privilégient le principe de marge maximale, réduisant l'influence des valeurs aberrantes.

Inconvénients des SVM

Malgré les nombreux avantages, il existe quelques inconvénients aux SVM :

  1. Complexité computationnelle : Les SVM peuvent être coûteux en termes de calcul et lents sur de grands ensembles de données en raison de leur complexité quadratique.

  2. Choix du noyau : Le choix du bon noyau et l'ajustement de ses paramètres peuvent être difficiles et chronophages.

  3. Manque de transparence : Les SVM sont souvent considérés comme des modèles "boîte noire" car leur fonctionnement interne peut être difficile à interpréter.

Implémentation de la machine à vecteurs de support de Sklearn en Python

L'écosystème Python fournit la bibliothèque sklearn, qui propose des implémentations robustes d'une variété d'algorithmes d'apprentissage automatique, y compris les SVM. Voyons comment implémenter un classifieur SVM à l'aide de sklearn.

# Importer les bibliothèques nécessaires
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score
 
# Charger l'ensemble de données
iris = datasets.load_iris()
 
# Séparer les données
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.2, random_state=42)
 
# Définir le modèle SVM
clf = svm.SVC(kernel='linear')
 
# Former le modèle
clf.fit(X_train, y_train)
 
# Prédire
predictions = clf.predict(X_test)
 
# Mesurer l'exactitude
print("Exactitude :", accuracy_score(y_test, predictions))

Ce script entraîne un classifieur SVM sur l'ensemble de données Iris en utilisant un noyau linéaire. Il prédit ensuite les classes pour l'ensemble de test et affiche l'exactitude du modèle.

Alors que certaines personnes peuvent confondre à tort les SVM avec des "super machines à vecteurs", le terme correct est "machines à vecteurs de support".

Les SVM sont de puissants outils dans l'arsenal du data scientist, capables de résoudre des problèmes complexes. Au fur et à mesure que vous poursuivez votre parcours dans l'apprentissage automatique, votre compréhension et votre application des SVM se approfondiront et se élargiront, vous dotant des compétences nécessaires pour résoudre une gamme de défis de plus en plus large.

Conclusion

Maîtriser les SVM nécessite de la pratique, mais c'est un investissement précieux. Leur flexibilité et leur efficacité dans les espaces de grande dimension les rendent précieux dans de nombreux domaines. Bien qu'ils présentent des inconvénients, une compréhension appropriée et une utilisation prudente peuvent en grande partie atténuer ces problèmes. En combinant les SVM avec d'autres outils et techniques, vous pouvez créer des modèles d'apprentissage automatique sophistiqués et efficaces prêts à affronter les problèmes du monde réel.

N'oubliez pas, le ciel n'est pas la limite ; c'est seulement le début en matière d'apprentissage automatique !