Une Support Vector Machine (SVM) est un algorithme de Machine Learning supervisé qui trouve l'hyperplan séparant le mieux les points de données d'une classe de ceux d'une autre classe.
Une Support Vector Machine est un algorithme de Machine Learning supervisé souvent utilisé pour les problèmes de classification et de régression dans des applications telles que le traitement du signal, le traitement du langage naturel (NLP), 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. Cet hyperplan peut être une ligne dans le cas d'un espace 2D ou un plan dans le cas d'un espace à n dimensions, où n représente le nombre de caractéristiques pour chaque observation dans le jeu de données. Plusieurs hyperplans peuvent séparer les classes dans les données. L'hyperplan optimal, dérivé par l'algorithme SVM, est celui qui maximise la marge entre deux classes.
La marge correspond à la largeur maximale de l'espace parallèle à l'hyperplan qui ne contient aucun point de données. Les points de données qui marquent les limites de cet espace parallèle et sont les plus proches de l'hyperplan de séparation sont les vecteurs de support. Les vecteurs de support désignent un sous-ensemble d'observations d'apprentissage qui identifient l'emplacement de l'hyperplan de séparation.
Utilisation d'un algorithme SVM pour maximiser la largeur de la marge entre deux classes, représentées par des plus et des moins et séparées par un hyperplan.
Utilisation d'un algorithme SVM pour maximiser la largeur de la marge entre deux classes, représentées par des plus et des moins et séparées par un hyperplan.
Workflow pour la modélisation SVM
Un workflow type pour créer un modèle Support Vector Machine comporte les étapes suivantes :
Prétraitement des données
L'apprentissage d'un modèle SVM à partir de données brutes donne souvent de mauvais résultats en raison des valeurs manquantes et des valeurs aberrantes, ainsi que de la redondance des informations. Vous pouvez effectuer un nettoyage de données pour traiter les valeurs manquantes ou aberrantes, et une extraction de caractéristiques pour choisir le bon ensemble de caractéristiques à partir des données.
L'extraction de caractéristiques transforme les données brutes en caractéristiques numériques qui peuvent être traitées tout en préservant les informations dans le jeu de données d'origine. Les techniques de réduction de la dimensionnalité, telles que l'analyse en composantes principales (ACP), réduisent le nombre de caractéristiques tout en conservant les informations les plus importantes. Cette approche rend les modèles Support Vector Machine robustes et capables de traiter les jeux de données complexes.
Une fois que vos données sont traitées, divisez-les en jeux d'apprentissage et de test. Utilisez la validation croisée pour diviser les données de manière optimale. Le modèle SVM est entraîné sur le jeu de données d'apprentissage, et le jeu de données de test est utilisé pour évaluer les performances du modèle sur des données invisibles.
Choix d'un noyau
En fonction de la distribution des données, choisissez une fonction noyau appropriée (linéaire, polynomiale, RBF, etc.). Lorsqu'une séparation linéaire est impossible, une fonction noyau transforme les données en un espace de dimension supérieure, ce qui simplifie la séparation des classes.
| Type de SVM | Noyau Mercer | Description |
| Fonction gaussienne ou RBF (radial basis function) | \( K({x_1},{x_2})=exp(−‖{x_1}−{x_2}‖^2/2{σ^2}) \) | Apprentissage à une classe. \( σ \) représente la largeur du noyau. |
| Linéaire | \( K({x_1},{x_2})={x_1}T{x_2} \) | Apprentissage à deux classes. |
| Polynôme | \( K({x_1},{x_2})=({x_1}T{x_2}+1)ρ \) | \( ρ \) représente l'ordre de la fonction polynomiale. |
| Sigmoïde | \( K({x_1},{x_2})=tanh({β_0}{x_1}T{x_2}+{β_1}) \) | Il ne s'agit d'un noyau Mercer que pour certaines valeurs \( β_0 \) et \( β_1 \). |
Apprentissage du modèle SVM
Créez et entraînez votre modèle SVM à l'aide d'un jeu de données d'apprentissage. Entraîner une Support Vector Machine revient à résoudre un problème d'optimisation quadratique pour trouver un hyperplan qui maximise la marge entre les classes. L'algorithme Support Vector Machine identifie les vecteurs de support et détermine l'hyperplan optimal. Utilisez le modèle entraîné pour classer les points de données nouveaux et invisibles en fonction de l'hyperplan optimal.
Évaluation du modèle SVM
Testez le modèle à l'aide du jeu de données de test. Évaluez la performance du modèle à l'aide de métriques telles que la précision, la matrice de confusion, la justesse, le score F1 ou le rappel.
Ajustement des hyperparamètres
Ajustez les hyperparamètres afin d'améliorer la performance du modèle. Utilisez une technique de recherche telle que l'optimisation bayésienne, qui s'appuie sur des modèles probabilistes pour trouver les meilleurs hyperparamètres.
Types de classificateurs SVM
Support Vector Machines linéaires
Les SVM linéaires sont utilisés pour les données linéairement séparables comportant exactement deux classes. Ce type d'algorithme Support Vector Machine utilise une limite de décision linéaire pour séparer tous les points de données des deux classes.
L'algorithme SVM ne peut trouver cet hyperplan que pour les problèmes linéairement séparables. Pour les tâches les plus complexes, lorsque les données ne sont pas séparables, la Support Vector Machine peut utiliser une marge souple, c'est-à-dire un hyperplan qui sépare de nombreux points de données, mais pas tous. L'algorithme maximise la marge souple, qui tolère un petit nombre d'erreurs de classification.
SVM à marge souple tolérant la mauvaise classification d'un point de données de la classe -1 (bleu). (Consultez la documentation MATLAB.)
SVM à marge souple tolérant la mauvaise classification d'un point de données de la classe -1 (bleu). (Consultez la documentation MATLAB.)
Support Vector Machines non linéaires
Les SVM sont également utilisées pour effectuer des tâches de classification et de régression non linéaire. Pour les données qui ne sont pas linéairement séparables, les Support Vector Machines utilisent des fonctions noyau pour transformer les caractéristiques. Le nombre de caractéristiques transformées est déterminé par le nombre de vecteurs de support.
Les fonctions noyau mappent les données dans un espace différent, souvent de dimension supérieure. Cette transformation peut faciliter la séparation des classes en simplifiant la limite de décision non linéaire complexe en limite linéaire dans l'espace de caractéristiques mappé de dimension supérieure. Au cours de ce processus, que l'on appelle communément l'astuce des noyaux, il n'est pas nécessaire de transformer explicitement les données, ce qui serait coûteux en calcul. Les fonctions noyau pour les données non linéaires comprennent les polynômes, la fonction à base radiale (fonction gaussienne), et le perceptron multicouches ou sigmoïde (réseau de neurones).
Un classificateur SVM non linéaire entraîné dans MATLAB avec une fonction noyau gaussienne. (Voir le code.)
Un classificateur SVM non linéaire entraîné dans MATLAB avec une fonction noyau gaussienne. (Voir le code.)
Régression du vecteur de support
Les SVM sont principalement utilisées pour les tâches de classification, mais elles peuvent également être adaptées pour la régression. La régression SVM est considérée comme une technique non paramétrique, car elle s'appuie sur les fonctions noyau. Contrairement à ce qui se passe dans la régression linéaire, où la relation entre les variables de réponse (sortie) et de prédicteur (entrée) est connue, la régression de vecteur de support (SVR) a pour objectif de trouver cette relation. Pour ce faire, la SVR identifie l'hyperplan qui convient le mieux aux données dans une marge de tolérance spécifiée, appelée marge, tout en maintenant les erreurs de prédiction à un niveau minimum.
Le principe de fonctionnement de la SVR est le même que celui des classificateurs Support Vector Machine, sauf que la SVR vise à prédire des valeurs continues au lieu de classes discrètes. La SVR peut traiter des données linéaires et non linéaires en utilisant les différents types de noyaux. L'astuce des noyaux vous permet d'effectuer une régression non linéaire en mappant les données dans un espace de dimension supérieure.
Pour continuer à explorer ce sujet
Avantages des SVM
Les SVM font partie des algorithmes d'apprentissage supervisé les plus populaires dans les domaines du Machine Learning et de l'intelligence artificielle, principalement parce qu'elles sont capables de traiter les données à dimensionnalité élevée et les limites de décision complexes de manière efficace. Les principaux avantages des Support Vector Machines sont les suivants :
- Polyvalence des données. Les SVM sont particulièrement efficaces lors du traitement des jeux de données à dimensionnalité élevée et non structurées. Elles peuvent être utilisées pour les données linéaires et non linéaires, ce qui les rend utiles pour de nombreuses applications.
- Robustesse. Les SVM sont moins sujettes au surajustement, en particulier dans les espaces de grande dimension, en raison du paramètre de régularisation qui contrôle le compromis entre l'obtention d'un faible niveau d'erreur sur les données d’apprentissage et la réduction de la norme des pondérations.
- Interprétabilité. La limite de décision créée par un classificateur SVM linéaire est claire et interprétable, ce qui peut être utile pour comprendre les prédictions de modèle et prendre des décisions éclairées.
- Précision. Les SVM sont très précises et efficaces pour les jeux de données peu volumineux, en particulier dans les cas où le nombre de dimensions est supérieur au nombre d'échantillons.
Applications des SVM
Les avantages précédemment mentionnés font des Support Vector Machines un choix intéressant pour la modélisation des données dans un large éventail d'applications :
- Traitement du langage naturel. Les SVM sont couramment utilisées dans les tâches de traitement du langage naturel telles que la détection des spams et l'analyse de sentiments par classification de textes en catégories.
- Computer Vision. Les SVM sont utilisées dans les tâches de classification d'images telles que la reconnaissance d'écriture et la détection de visages ou d'objets, et en tant qu'outil de diagnostic médical pour la classification des images IRM susceptibles d'indiquer la présence d'une tumeur.
- Traitement du signal. Les SVM sont également appliquées sur les données de signal dans certaines tâches telles que la détection d'anomalies, la reconnaissance vocale et l'analyse de signaux biomédicaux.
- Détection d'anomalies. Les SVM peuvent être entraînées pour trouver un hyperplan qui sépare les données normales des anomalies.
- Bioinformatique. Les SVM sont utilisées dans la classification des données biologiques, la classification des protéines et l'analyse des profils d'expression génétique.
Une image hyperspectrale classée à l'aide d'un classificateur SVM. (Voir le code MATLAB.)
Inconvénients des SVM
Comme tous les modèles de Machine Learning, les Support Vector Machines présentent certaines limites :
- Jeux de données volumineux. Étant donné que les SVM consomment beaucoup de ressources de calcul et de mémoire, elles ne sont pas adaptées au traitement de jeux de données volumineux. Même si l'astuce des noyaux permet aux Support Vector Machines de traiter des données linéaires, elles exigent des calculs complexes. En effet, il s'agit pour ces machines de résoudre un problème d'optimisation quadratique. Dans les jeux de données volumineux, la matrice de noyaux serait également volumineuse, et il faudrait beaucoup de mémoire.
- Données bruitées. Les SVM ne sont pas adaptées aux données bruitées, car leur but est d'optimiser la marge entre les classes.
- Interprétabilité. Les SVM linéaires sont interprétables, mais pas les SVM non linéaires. Ces dernières utilisent des transformations complexes qui rendent difficile l'interprétation de la limite de décision.
Grâce à MATLAB® et Statistics and Machine Learning Toolbox™, vous pouvez entraîner, évaluer et effectuer des prédictions grâce à des modèles SVM destinés à la classification et à la régression. MATLAB propose des outils permettant de construire des modèles Support Vector Machine (SVM) efficaces, comme la sélection de caractéristiques, l'affinement d'hyperparamètres, la validation croisée ou encore les métriques de performances. Les applications de Machine Learning low-code dans MATLAB vous permettent d'entraîner et d'évaluer les SVM de manière interactive, de générer du code C/C++ et d'effectuer le déploiement sur des CPU et des microcontrôleurs, sans avoir à rédiger de code par vous-même.
Prétraiter les données
Pour que les résultats soient exacts, les données doivent être exemptes de valeurs aberrantes et prêtes pour l’apprentissage du modèle. MATLAB vous permet d'effectuer des tâches de nettoyage comme par exemple, traiter les valeurs aberrantes et manquantes, ou encore normaliser et lisser les données. Vous pouvez utiliser les tâches du Live Editor pour le prétraitement des données ou l'application Data Cleaner pour prétraiter vos données de manière interactive. Ces applications permettent en outre de générer du code.
MATLAB supporte plusieurs types de données : données de séries temporelles, texte, images et audio, entre autres. Il est également possible d'extraire des fonctionnalités grâce à des toolboxes spécialisées, comme Audio Toolbox™ et Signal Processing Toolbox™. Vous pourrez ainsi mesurer des caractéristiques distinctives dans différents domaines et réutiliser des calculs intermédiaires.
Entraîner le modèle SVM
Pour entraîner vos modèles SVM pour la classification binaire ou multiclasse et les tâches de régression, vous pouvez utiliser les fonctions fitcsvm et fitrsvm. Pour les Support Vector Machines non linéaires, certaines fonctions noyau sont supportées (linéaires, polynomiales et RBF, par exemple). Vous pouvez également créer et indiquer une fonction noyau personnalisée (sigmoïde, par exemple).
Vous pouvez également entraîner des modèles SVM de manière interactive à l'aide des applications Classification Learner et Regression Learner. Ces applications vous permettent d'effectuer le workflow d'un modèle SVM dans son intégralité (de l’apprentissage à l'affinement) sans avoir à rédiger de code. Elles vous permettent également d'explorer les données, de sélectionner des caractéristiques, d'effectuer un apprentissage automatisé, d'optimiser des hyperparamètres et d'évaluer les résultats.
Matrice de confusion de validation créée à l'aide de l'application Classification Learner. (Voir le code MATLAB.)
Matrice de confusion de validation créée à l'aide de l'application Classification Learner. (Voir le code MATLAB.)
Les applications peuvent générer du code C/C++ et vous permettent d'exporter votre modèle SVM. Ainsi, vous pouvez facilement partager vos résultats et les analyser en dehors de l'application. Vous pouvez par exemple exporter votre modèle Support Vector Machine depuis les applications Classification Learner ou Regression Learner, puis l'importer dans l'application Experiment Manager. Vous pourrez y effectuer des tâches supplémentaires, comme modifier les données d'apprentissage, ajuster les plages de recherche des hyperparamètres et effectuer des tests d’apprentissage personnalisés.
Effectuer des prédictions
Une fois le modèle SVM entraîné, vous pouvez prédire des libellés avec la fonction « predict ». Vous pouvez simuler votre modèle SVM entraîné dans Simulink grâce aux blocs ClassificationSVM Predict ou RegressionSVM Predict.
Évaluer les résultats
Vous pouvez évaluer la performance du modèle SVM de deux façons : de manière programmatique, avec des fonctions comme confusionchart et rocmetrics, ou de manière interactive. Grâce aux applications de Machine Learning, vous pouvez comparer les performances de différents modèles pour trouver celui qui convient le mieux à vos données.
Une fois que les classificateurs ont été entraînés dans l'application Classification Learner, vous pouvez comparer les modèles en termes de précision, visualiser les résultats des classificateurs en effectuant des représentations graphiques des classes, ou encore vérifier les performances à l'aide d'une matrice de confusion, d'une courbe ROC ou d'une courbe justesse-rappel.
De même, dans l'application Regression Learner, vous pouvez comparer des modèles selon certaines métriques, visualiser des résultats de régression dans un diagramme de réponse ou en comparant dans un graphique la réponse prévue à la réponse effective, ou encore évaluer les modèles à l'aide d'un tracé résiduel.
Graphique représentant la prédiction de la réponse et la réponse effective pour un modèle de régression entraîné dans l'application Regression Learner. Plus les points sont proches de la ligne, plus la prédiction est fiable. (Voir le code MATLAB.)
Graphique représentant la prédiction de la réponse et la réponse effective pour un modèle de régression entraîné dans l'application Regression Learner. Plus les points sont proches de la ligne, plus la prédiction est fiable. (Voir le code MATLAB.)
Ressources
Développez vos connaissances grâce à la documentation, aux exemples, aux vidéos et plus encore.
Documentation
- Classifier des enregistrements de phonocardiogrammes humains (PCG) avec un classificateur SVM
- Évaluer la performance de classificateurs avec l'application Classification Learner
- Évaluer la performance de modèles avec l'application Regression Learner
- Choisir un type de classificateur
- Exporter un modèle de classification pour prédire de nouvelles données
- Affiner un modèle de régression avec Experiment Manager
- Construire un classificateur d'images SVM
Sujets connexes
Explorez des sujets similaires pour lesquels on utilise couramment les produits MATLAB et Simulink.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)