Machine à vecteurs de support (SVM) : définition et cas d'usage

Machine à vecteurs de support (SVM) : définition et cas d'usage

Les machines à vecteurs de support ou support vector machines sont des algorithmes d'apprentissage utilisés en machine learning pour résoudre des problèmes de classification, de régression ou de détection d'anomalie.

Les machines à vecteurs de support (SVM), c'est quoi ?

Les machines à vecteurs de support, ou support vector machine (SVM), sont des modèles de machine learning supervisés centrés sur la résolution de problèmes de discrimination et de régression mathématiques. Elles ont été conceptualisées dans les années 1990 à partir d'une théorie d'apprentissage statistique développée par les informaticiens russes Vladimir Vapnik et Alexey Chervonenkis : la théorie de Vapnik-Chervonenkis. Ce modèle a été rapidement adopté en raison de sa capacité à travailler avec des données de grandes dimensions, ses garanties théoriques et les bons résultats réalisés en pratique. Requérant un faible nombre de paramètres, les SVM sont appréciées pour leur simplicité d’usage.

Comment fonctionnent les SVM ?

Le principe des SVM consiste à ramener un problème de classification ou de discrimination à un hyperplan (feature space) dans lequel les données sont séparées en plusieurs classes dont la frontière est la plus éloignée possible des points de données (ou "marge maximale"). D'où l'autre nom attribué aux SVM : les séparateurs à vaste marge. Le concept de frontière implique que les données soient linéairement séparables. Pour y parvenir, les support vector machines font appel à des noyaux, c'est-à-dire des fonctions mathématiques permettant de projeter et séparer les données dans l'espace vectoriel, les "vecteurs de support" étant les données les plus proches de la frontière. C'est la frontière la plus éloignée de tous les points d'entraînement qui est optimale, et qui présente donc la meilleure capacité de généralisation. 

Une SVM peut-elle permettre de résoudre une régression ?

Oui. En 1996, Vladimir Vapnik, en collaboration avec d’autres mathématiciens (Harris Drucker, Chris Burges, Linda Kaufman et Alex Smola), a proposé une méthode permettant d’utiliser des SVM pour résoudre des problèmes de régression. Cela est possible là-encore en ayant recours à l’astuce du noyau, très utilisée en machine learning car elle permet d'utiliser des classifieurs linéaires et de s’en servir pour résoudre un problème non linéaire. La version régression des SVM est appelée en anglais : Support Vector Regression (SVR).

La bibliothèque Scikit-learn propose-t-elle un algorithme de SVM ?

Oui, il est possible de pratiquer l’apprentissage automatique avec le langage Python, grâce à la bibliothèque Scikit-learn qui propose un module sklearn.svm. Les utilisateurs ont la possibilité de résoudre à la fois des problèmes de classification et de régression. Pour la classification, trois classes d’algorithmes sont accessibles : SVC (pour support vector classification), NuSVC et LinearSVC. Et pour la régression, trois classes également : SVR, NuSVR et LinearSVR. La reconnaissance de chiffres et de visages ou l’évaluation des risques médicaux sont permises par cet usage.