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

Les machines à vecteurs de support, ou Support Vector Machine (SVM) en anglais, sont des algorithmes d'apprentissage automatique, utilisés en machine learning pour résoudre des problèmes de classification, de régression ou de détection d'anomalie. Les SVM sont considérées comme une généralisation des classifieurs linéaires.

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

Les SVM appartiennent à une famille d’algorithmes qui font appel à l’apprentissage dit supervisé, et qui sont spécialisées dans la résolution de problèmes de discrimination et de régression mathématiques. Ces machines à vecteurs de support ont été développées dans les années 1990, à partir du concept des informaticiens russes Vladimir Vapnik et Alexey Chervonenkis. Ces derniers ont en effet proposé une nouvelle théorie statistique de l’apprentissage automatique : la théorie de Vapnik-Chervonenkis. Leurs travaux ont vite été adoptés en raison de leur capacité à travailler avec des données de grandes dimensions, leurs 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 ?

Dans les SVM, les données sont séparées en plusieurs classes en recourant à la "marge maximale", avec une frontière de séparation choisie pour maximiser la distance entre les groupes de données. La difficulté est de déterminer cette frontière optimale : pour y parvenir, il faut formuler le problème comme un problème d’optimisation quadratique. Les points les plus proches de la frontière sont nommés "vecteurs support", et c’est d’eux que provient le nom de cette famille d’algorithmes. La seconde idée des SVM est de transformer l’espace de représentation des données d’entrées pour en faire un espace de plus grande dimension, dans lequel il existe une séparation linéaire, pour pouvoir traiter des données difficiles à séparer linéairement.

Une SVM peut-il 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 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 Python 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, 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.

Dictionnaire de l'intelligence artificielle