Support Vector Machine (SVM)

Apprendre les hyperplans optimaux pour définir les frontières de décision

Une Support Vector Machine (SVM) est un algorithme d'apprentissage supervisé utilisé pour de nombreux problèmes de classification et de régression, tels que les applications médicales de traitement du signal, le traitement du langage naturel, la reconnaissance vocale et  la reconnaissance d'images.

L'objectif de l'algorithme SVM est de trouver un hyperplan qui, du mieux possible, sépare les points de données d'une classe de ceux d'une autre classe. Le meilleur cas est un hyperplan représentant la plus grande marge entre les deux classes, indiquées par les plus et les moins dans la figure ci-dessous. La marge désigne la largeur maximale de l'espace parallèle à l'hyperplan qui ne contient aucun point de données. L'algorithme ne peut trouver un tel hyperplan que pour les problèmes linéairement séparables. Pour la plupart des problèmes pratiques, l'algorithme maximise la marge souple, autorisant ainsi un petit nombre d'erreurs de classification.

Définir la « marge » entre les classes : le critère que les SVM cherchent à optimiser.

Les vecteurs de support désignent un sous-ensemble d'observations d'apprentissage qui identifient l'emplacement de l'hyperplan de séparation. L'algorithme SVM standard est formulé pour les problèmes de classification binaire. Les problèmes multiclasses sont généralement réduits à une série de problèmes binaires.

En approfondissant l'aspect mathématique, les Support Vector Machines relèvent d'une catégorie d'algorithmes de Machine Learning appelés méthodes à noyau, où les caractéristiques peuvent être transformées à l'aide d'une fonction noyau. Les fonctions noyau mappent les données sur un espace dimensionnel différent (souvent plus grand) dans l'espoir que les classes soient plus faciles à séparer après cette transformation. Ceci permet potentiellement de simplifier les frontières de décisions complexes non linéaires en frontières linéaires dans un espace mappé de dimension supérieur. Dans ce processus, il n'est pas nécessaire de transformer explicitement les données, ce qui serait coûteux en calcul. C'est ce qu'on appelle communément l'astuce des noyaux.

MATLAB® supporte plusieurs noyaux, dont les suivants :

Type de SVM Noyau Mercer Description
RBF (radial Basis Function) ou gaussien \(K(x_1,x_2) = \exp\left(-\frac{\|x_1 - x_2\|^2}{2\sigma^2}\right)\) Apprentissage à une classe. \(\sigma\) est la largeur du noyau.
Linéaire \(K(x_1,x_2) = x_1^{\mathsf{T}}x_2\)
Apprentissage à deux classes.
Polynôme \(K(x_1,x_2) = \left( x_1^{\mathsf{T}}x_2 + 1 \right)^{\rho}\)
\(\rho\)  est l'ordre de la fonction polynomiale.
Sigmoïde \(K(x_1,x_2) = \tanh\left( \beta_{0}x_1^{\mathsf{T}}x_2 + \beta_{1} \right)\)
Il ne s'agit d'un noyau Mercer que pour certaines valeurs \(\beta_{0}\) et \(\beta_{1}\).

Entraîner une Support Vector Machine revient à résoudre un problème d'optimisation quadratique pour trouver un hyperplan qui minimise la marge souple entre les classes. Le nombre de caractéristiques transformées est déterminé par le nombre de vecteurs de support.

Points clés :

  • Les Support Vector Machines sont populaires et permettent d'obtenir de bonnes performances dans de nombreuses tâches de classification et de régression.
  • Alors que les Support Vector Machines sont formulées pour la classification binaire, vous pouvez élaborer une SVM multiclasses en combinant plusieurs classificateurs binaires.
  • Les noyaux rendent les SVM plus flexibles et capables de traiter des problèmes non linéaires.
  • Seuls les vecteurs de support choisis à partir des données d'apprentissage sont nécessaires pour construire la surface de décision. Une fois entraîné, le reste des données d'apprentissage n'est pas pertinent, ce qui donne une représentation compacte du modèle qui convient à la génération automatique de code.

Exemple

Les Support Vector Machines peuvent également être utilisées pour la détection d'anomalies en concevant une SVM à classe unique dont la limite de décision détermine si un objet appartient à la classe « normale » à l'aide d'un seuil déterminant les valeurs aberrantes. Dans cet exemple, MATLAB mappe tous les exemples sur une seule classe utilisant comme paramètre la fraction cible de valeurs aberrantes, comme suit : fitcsvm(sample,ones(…), ‘OutlierFraction’, …). Le graphe illustre les hyperplans de séparation pour une série de OutlierFractions pour les données d'une tâche de classification de l'activité humaine.

Voir aussi: Statistics and Machine Learning Toolbox, Modèles de Machine Learning, biomedical signal processing