<page> <title>Machine à vecteurs de support</title> <id>301082</id> <revision> <id>31706515</id> <timestamp>2008-07-19T14:38:30Z</timestamp> <contributor> <username>Sylenius</username> <id>65080</id> </contributor> <minor /> <comment>/* Cas non séparable: Kernel trick */ emphase résultat</comment> <text xml:space="preserve">Les '''machines à vecteurs de support''' ou '''séparateurs à vaste marge''' (en anglais ''Support Vector Machine'', SVM) sont un ensemble de techniques d'[[apprentissage supervisé]] destinées à résoudre des problèmes de [[Analyse discriminante|discrimination]]<ref>Le terme anglais pour discrimination est classification, qui a un [[Classification automatique|sens différent]] en français (se rapporte au clustering). On utilise aussi le terme classement à la place de discrimination, plus proche du terme anglais, et plus compréhensible.</ref> et de [[régression]]. Les SVM sont une généralisation des [[classifieur linéaire|classifieurs linéaires]]. Les SVM ont été développés dans les [[années 1990]] à partir des considérations théoriques de [[Vladimir Vapnik]] sur le développement d'une théorie statistique de l'apprentissage : la [[Théorie de Vapnik-Chervonenkis]]. Les SVM ont rapidement été adoptés pour leur capacité à travailler avec des données de grandes [[dimension]]s, le faible nombre d'[[hyper paramètre]]s, le fait qu'ils soient bien fondés théoriquement, et leurs bons résultats en pratique. Les SVM ont été appliqués à de très nombreux domaines ([[bio-informatique]], [[recherche d'information]], [[vision par ordinateur]], [[finance]]...<ref>{{en}} Bernhard Schölkopf, Alexander J. Smola, ''Learning With Kernels: Support Vector Machines, Regularization, Optimization and Beyond'', 2002, MIT Press.</ref>). Selon les données, la performance des machines à vecteurs de support est de même ordre, ou même supérieure, à celle d'un [[réseau de neurones]] ou d'un [[modèle de mixture gaussienne]]. ==Historique== Les séparateurs à vastes marges reposent sur deux idées clés : la notion de marge maximale et la notion de fonction noyau. Ces deux notions existaient depuis plusieurs années avant qu'elles ne soient mises en commun pour construire les SVM. L'idée des hyperplans à marge maximale a été explorée dès [[1963]] par [[Vladimir Vapnik]] et A. Lerner<ref>{{en}} [[Vladimir Vapnik]] et A. Lerner, ''Pattern Recognition using Generalized Portrait Method'', Automation and Remote Control, 1963</ref>, et en [[1973]] par [[Richard Duda]] et [[Peter Hart]] dans leur livre Pattern Classification<ref>{{en}} Richard O. Duda, Peter E. Hart, Pattern classification and Scene Analysis. Wiley, 1973.</ref>. Les fondations théoriques des SVM ont été explorés par Vapnik et ses collègues dans les [[Années 1970|années 70]] avec le développement de la [[Théorie de Vapnik-Chervonenkis]], et par Valiant et la théorie de l'apprentissage PAC<ref>{{en}} L.G. Valiant. ''A Theory of the Learnable'', Communications of the ACM, 27(11), pp. 1134-1142, November 1984.</ref>. L'idée des fonctions noyaux n'est pas non plus nouvelle: le [[théorème de Mercer]] date de [[1909]]<ref>{{en}} J. Mercer, ''Functions of positive and negative type and their connection with the theory of integral equations''. Philos. Trans. Roy. Soc. London, A 209:415--446, 1909.</ref>, et l'utilité des fonctions noyaux dans le contexte de l'apprentissage artificiel a été montré dès 1964 par Aizermann, Bravermann et Rozoener<ref>M. Aizerman, E. Braverman, and L. Rozonoer, ''Theoretical foundations of the potential function method in pattern recognition learning'', Automation and Remote Control 25:821--837, 1964.</ref>. Ce n'est toutefois qu'en [[1992]] que ces idées seront bien comprises et rassemblées par Boser, Guyon et Vapnik dans un article, qui est l'article fondateur des séparateurs à vaste marge<ref>{{en}} Bernhard E. Boser, Isabelle M. Guyon, Vladimir N. Vapnik, ''[http://www.clopinet.com/isabelle/Papers/colt92.ps.Z A Training Algorithm for Optimal Margin Classifiers]'' In Fifth Annual Workshop on Computational Learning Theory, pages 144--152, Pittsburgh, ACM. 1992</ref>. L'idée des variables ressorts, qui permet de résoudre certaines limitations pratiques importantes, ne sera introduite qu'en [[1995]]. À partir de cette date, qui correspond à la publication du livre de Vapnik <ref>V. Vapnik, "The nature of statistical learning theory", N-Y: Springer-Verlag, 1995.</ref>, les SVM gagnent en popularité et sont utilisés dans de nombreuses applications. Un brevet américain sur les SVM est déposé en [[1997]] par les inventeurs originels<ref>{{en}}Pattern recognition system using support vectors. B. Boser, I. Guyon, and V. Vapnik, US Patent 5,649,068 1997</ref>. == Résumé intuitif == Les séparateurs à vastes marges sont des classifieurs qui reposent sur deux idées clés, qui permettent de traiter des problèmes de discrimination non-linéaire, et de reformuler le problème de classement comme un problème d'[[programmation quadratique|optimisation quadratique]]. La première idée clé est la notion de ''marge maximale''. La marge est la distance entre la frontière de séparation et les [[Échantillon (statistiques)|échantillon]]s les plus proches. Ces derniers sont appelés ''vecteurs supports''. Dans les SVM, la frontière de séparation est choisie comme celle qui maximise la marge. Ce choix est justifié par la [[théorie de Vapnik-Chervonenkis]] (ou théorie statistique de l'apprentissage), qui montre que la frontière de séparation de marge maximale possède la plus petite [[dimension VC|capacité]]<ref>{{en}} Marti A. Hearst, ''Support Vector Machines'', IEEE Intelligent Systems, vol. 13, no. 4, pp. 18-28, Jul/Aug, 1998</ref>. Le problème est de trouver cette frontière séparatrice optimale, à partir d'un ensemble d'apprentissage. Ceci est fait en formulant le problème comme un problème d'optimisation quadratique, pour lequel il existe des algorithmes connus. Afin de pouvoir traiter des cas où les données ne sont pas linéairement séparables, la deuxième idée clé des SVM est de transformer l'espace de représentation des données d'entrées en un espace de plus grande dimension (possiblement de dimension infinie), dans lequel il est probable qu'il existe une séparatrice linéaire. Ceci est réalisé grâce à une [[fonction noyau]], qui doit respecter [[théorème de Mercer|certaines conditions]], et qui a l'avantage de ne pas nécessiter la connaissance explicite de la transformation à appliquer pour le changement d'espace. Les fonctions noyau permettent de transformer un produit scalaire dans un espace de grande dimension, ce qui est coûteux, en une simple évaluation ponctuelle d'une fonction. Cette technique est connue sous le nom de [[kernel trick]]. ==Principe général== Les SVM peuvent être utilisés pour résoudre des problèmes de discrimination, c'est-à -dire décider à quelle classe appartient un échantillon, ou de [[régression]], c'est à dire prédire la valeur numérique d'une variable. La résolution de ces deux problèmes passe par la construction d'une fonction <math>f</math> qui à un vecteur d'entrée <math>x</math> fait correspondre une sortie <math>y</math> : :<math>y=f(x)</math> On se limite pour l'instant à un problème de discrimination à deux classes (discrimination binaire), c'est à dire <math>y \in \{-1,1\}</math>, le vecteur d'entrée <math>x</math> étant dans un espace X muni d'un [[produit scalaire]]. On peut prendre par exemple <math>X=\mathbb{R}^N</math>. === Discrimination linéaire et hyperplan séparateur=== Pour rappel, le cas simple est le cas d'une fonction discriminante linéaire, obtenue par combinaison linéaire du vecteur d'entrée <math>x=(\mathbf{x}_1,...,\mathbf{x}_N)^T</math> : :<math>h(x)=w^Tx+w_0</math> Il est alors décidé que <math>x</math> est de classe 1 si <math>h(x) \ge 0</math> et de classe -1 sinon. C'est un [[classifieur linéaire]]. La frontière de décision <math>h(x)=0</math> est un [[hyperplan]], appelé ''hyperplan séparateur'', ou ''séparatrice''. Rappelons que le but d'un algorithme d'apprentissage supervisé est d'apprendre la fonction h(x) par le biais d'un ensemble d'apprentissage : :<math>\{ (x_1, l_1), (x_2, l_2), \ldots, (x_p, l_p)\} \in \mathbb{R}^N</math>×<math>\{ -1,1 \} </math> où les <math>l_k</math> sont les labels, <math>p</math> est la taille de l'ensemble d'apprentissage, <math>N</math> la [[dimension]] des vecteurs d'entrée. Si le problème est linéairement séparable, on doit alors avoir : :<math>l_k h(x_k) \ge 0 \quad 1 \le k \le p, \quad \mbox{ autrement dit } \quad l_k(w^T x_k+w_0) \ge 0 \quad 1 \le k \le p.</math> === Exemple === Prenons un exemple pour bien comprendre le concept. Imaginons un plan (espace à deux dimensions) dans lequel sont répartis deux groupes de points. Ces points sont associés à un groupe : les point (+) pour y > x et les points (-) pour y < x. On peut trouver un séparateur linéaire évident dans cet exemple, la droite d'équation y=x. Le problème est dit ''linéairement séparable''. Pour des problèmes plus compliqués, il n'existe en général pas de séparatrice linéaire. Imaginons par exemple un plan dans lequel les points (-) sont regroupés en un cercle, avec des points (+) tout autour : aucun séparateur linéaire ne peut correctement séparer les groupes : le problème n'est pas ''linéairement séparable''. Il n'existe pas d'hyperplan séparateur. {| |[[Image:Separatrice lineaire.svg|thumb|left|350px|Exemple d'un problème de discrimination à deux classes, avec une séparatrice linéaire : la droite d'équation y=x. Le problème est ''linéairement séparable''.]] |[[Image:Separatrice non lineaire.svg|thumb|right|350px|Exemple d'un problème de discrimination à deux classes, avec une séparatrice non-linéaire : le [[cercle unité]]. Le problème ''n'est pas linéairement séparable''.]] |} === Marge maximale === On se place désormais dans le cas où le problème est linéairement séparable. Même dans ce cas simple, le choix de l'hyperplan séparateur n'est pas évident. Il existe en effet une infinité d'hyperplans séparateurs, dont les performances en apprentissage sont identiques (le [[risque empirique]] est le même), mais dont les performances en généralisation peuvent être très différentes. Pour résoudre ce problème, il a été montré{{référence nécessaire}} qu'il existe un unique hyperplan optimal, défini comme l'hyperplan qui maximise la marge entre les [[Échantillon (statistiques)|échantillons]] et l'hyperplan séparateur. Il existe des raisons théoriques à ce choix. Vapnik a montré{{référence nécessaire}} que la [[Dimension VC|capacité]] des classes d'hyperplans séparateurs diminue lorsque leur marge augmente. {| |[[Image:Plusieurs separatrice lineaire.svg|thumb|left|350px|Pour un ensemble de points linéairement séparables, il existe une infinité d'hyperplans séparateurs.]] |[[Image:Separatrice lineaire avec marges.svg|thumb|right|400px|L'hyperplan optimal (en rouge) avec la marge maximale. Les échantillons entourés sont des ''vecteurs supports''.]] |} La marge est la distance entre l'hyperplan et les échantillons le plus proches. Ces derniers sont appelés '''vecteurs supports'''. L'hyperplan qui maximise la marge est donné par : :<math>\arg \max_{w,w_0} \min_k \{||x-x_k|| : x \in \mathbb{R}^N, w^Tx+w_0=0 \}</math> Il s'agit donc de trouver w et w<sub>0</sub> remplissant ces conditions, afin de déterminer l'équation de l'hyperplan séparateur : :<math>h(x)=w^Tx+w_0=0</math> === Recherche de l'hyperplan optimal === ==== Formulation primale ==== La marge est la plus petite distance entre les échantillons d'apprentissage et l'hyperplan séparateur qui satisfasse la condition de séparabilité (à savoir <math>l_k(w^Tx_k+w_0) \ge 0</math> comme expliqué précédemment). La distance d'un échantillon x<sub>k</sub> à l'hyperplan est donnée par sa [[projection orthogonale]] sur l'hyperplan<ref>Pour un hyperplan d'équation <math>w^Tx_k+w_0=0</math>, la distance de tout point ''a'' de l'espace à l'hyperplan est <math>\frac{|w^Ta+w_0|}{||w||}</math> </ref> : :<math>\frac{l_k(w^Tx_k+w_0)}{||w||}</math>. L'hyperplan séparateur (w,w<sub>0</sub>) de marge maximale est donc donné par: :<math>\arg \max_{w,w_0} \left \{ \frac{1}{||w||} \min_k \left [ l_k(w^Tx_k+w_0) \right ] \right \}</math> Afin de faciliter l'[[Optimisation (mathématiques)|optimisation]], on choisit de normaliser w et w<sub>0</sub>, de telle manière que les échantillons à la marge ( <math>x_{marge}^+</math> pour les vecteurs supports sur la frontière positive, et <math>x_{marge}^-</math> pour ceux situés sur la frontière opposée) satisfassent : :<math> \begin{cases} w^Tx_{marge}^+ + w_0=1 \\ w^Tx_{marge}^- + w_0=-1 \end{cases} </math> D'où pour tous les échantillons, <math>k=1,\ldots,p</math> :<math>l_k(w^Tx_k+w_0) \ge 1</math> Cette normalisation est parfois appelée la forme canonique de l'hyperplan, ou ''hyperplan canonique''<ref>{{en}} Bernhard Schölkopf, Alexander J. Smola, ''Learning With Kernels: Support Vector Machines, Regularization, Optimization and Beyond'', 2002, MIT Press, p.190</ref>. Avec cette mise à l'échelle, la marge vaut désormais <math>\frac{1}{||w||}</math>, il s'agit donc de maximiser <math>||w||^{-1}</math>. La formulation dite ''primale'' des SVM s'exprime alors sous la forme suivante<ref>Maximiser <math>||w||^{-1}</math> est équivalent à minimiser <math>||w||^2</math>. Le carré est pris pour se débarrasser de la [[racine carrée]] incluse dans la [[Norme (mathématiques)|norme]]. Le 1/2 n'est présent que pour faciliter la lisibilité des calculs et du résultat de l'optimisation.</ref> : {{Bloc emphase|<math>\mbox{Minimiser}\quad \frac{1}{2} ||w||^2\quad \mbox{sous les contraintes} \quad l_k(w^Tx_k+w_0) \ge 1</math>}} Ceci peut se résoudre par la méthode classique des [[Multiplicateur de Lagrange]], où le lagrangien est donné par : :<math>L(w,w_0,\alpha) = \frac{1}{2} ||w||^2 - \sum_{k=1}^p \alpha_k \left \{l_k(w^Tx_k+w_0) - 1 \right \} \qquad\qquad(1)</math> Le lagrangien doit être minimisé par rapport à w et w<sub>0</sub>, et maximisé par rapport à α. ==== Formulation duale ==== En annulant les [[dérivée partielle|dérivées partielles]] du lagrangien, selon les [[conditions de Kuhn-Tucker]], on obtient : :<math> \begin{cases} \sum_{k=1}^p \alpha_k l_k x_k & = w^* \\ \sum_{k=1}^p \alpha_k l_k & = 0 \end{cases} </math> En réinjectant ces valeurs dans l'équation <math>(1)</math>, on obtient la ''formulation duale'' : {{Bloc emphase|<math>\mbox{Maximiser } \tilde{L}(\alpha) = \sum_{k=1}^p \alpha_k - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j l_i l_j x_i^T x_j \qquad\qquad(2)</math> <math>\mbox{sous les contraintes } \alpha_k \geq 0 \mbox{ , et } \sum_{k=1}^p \alpha_k l_k = 0 </math>}} <!-- avec accolades, mais perte du signe somme entier :<math> \begin{cases} \mbox{Maximiser } \tilde{L}(\alpha) = \sum_{k=1}^p \alpha_k - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j l_i l_j x_i^T x_j \\ \mbox{Sous les contraintes } \alpha_i \geq 0 \mbox{ , et } \sum_{k=1}^p \alpha_k l_k = 0 \end{cases} </math> --> Ce qui donne les multiplicateurs de Lagrange optimaux <math>\alpha_k^*</math>. Afin d'obtenir l'hyperplan solution, on remplace w par sa valeur optimale w<sup>*</sup>, dans l'équation de l'hyperplan <math>h(x)</math> , ce qui donne : {{Bloc emphase|<math>h(x) = \sum_{k=1}^p \alpha_k^* l_k (x \cdot x_k)+w_0 </math>}} <!--régler le cas de w0 + dire que l'on peut classer des points avec cet hyperplan et léger exemple--> ==== Conséquences ==== *Il y a trois remarques intéressantes à faire à propos de ce résultat. La première découle de l'une des [[Conditions de Kuhn-Tucker#Troisième étape : conditions supplémentaires|conditions de Kuhn-Tucker]], qui donne : :<math> \alpha_k [ l_k h(x_k)-1 ] = 0 \quad 1 \le k \le p.</math> d'où :<math>\begin{cases} \alpha_k & = 0 \\ l_k h(x_k) & = 1 \end{cases}</math>. Les seuls points pour lesquels les contraintes du lagrangien sont actives sont donc les points tels que <math>l_k h(x_k) = 1 </math>, qui sont les points situés sur les hyperplans de marges maximales. En d'autres termes, seuls les ''vecteurs supports'' participent à la définition de l'hyperplan optimal. *La deuxième remarque découle de la première. Seul un sous-ensemble restreint de points est nécessaire pour le calcul de la solution, les autres [[Échantillon (statistiques)|échantillons]] ne participant pas du tout à sa définition. Ceci est donc efficace au niveau de la [[Complexité algorithmique|complexité]]. D'autre part, le changement ou l'agrandissement de l'ensemble d'apprentissage a moins d'influence que dans un [[modèle de mélanges gaussiens]] par exemple, où tous les points participent à la solution. En particulier, le fait d'ajouter des échantillons à l'ensemble d'apprentissage qui ne sont pas des vecteurs supports n'a aucune influence sur la solution finale. *La dernière remarque est que l'hyperplan solution ne dépend que du [[produit scalaire]] entre le vecteur d'entrée et les vecteurs supports. Cette remarque est l'origine de la deuxième innovation majeure des SVM: le passage par un espace de redescription grâce à une fonction noyau. === Cas non séparable: [[Kernel trick]] === ==== Principe ==== [[Image:Separatrice non lineaire.svg|thumb|right|350px|Exemple simple de transformation: le problème n'est pas linéairement séparable en [[coordonnées cartésiennes]], par contre en [[coordonnées polaires]], le problème devient linéaire. Il s'agit ici d'un exemple très simple, l'espace de redescription étant de même dimension que l'espace d'entrée.]] La notion de marge maximale et la procédure de recherche de l'[[hyperplan]] séparateur telles que présentées pour l'instant ne permettent de résoudre que des problèmes de discrimination linéairement séparables. C'est une limitation sévère qui condamne à ne pouvoir résoudre que des problèmes jouets, ou très particuliers. Afin de remédier au problème de l'absence de séparateur linéaire, l'idée des SVM est de reconsidérer le problème dans un espace de [[Dimension d'un espace vectoriel|dimension]] supérieure, éventuellement de dimension infinie. Dans ce nouvel espace, il est alors probable qu'il existe une séparatrice linéaire. Plus formellement, on applique aux vecteurs d'entrée x une transformation non-linéaire <math>\phi</math>. L'espace d'arrivée <math>\phi(X)</math> est appelé ''espace de redescription''. Dans cet espace, on cherche alors l'hyperplan :<math>h(x)=w^T \phi(x)+w_0</math> qui vérifie :<math>l_kh(x_k)>0</math> , pour tous les points <math>x_k</math> de l'ensemble d'apprentissage, c'est à dire l'hyperplan séparateur dans l'espace de redescription. En utilisant la même procédure que dans le cas sans transformation, on aboutit au problème d'optimisation suivant : :<math>\mbox{Maximiser } \tilde{L}(\alpha) = \sum_{k=1}^p \alpha_k - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j l_i l_j \phi(x_i)^T \phi(x_j) \qquad\qquad(3)</math> :<math>\mbox{Sous les contraintes } \alpha_i \geq 0 \mbox{ , et } \sum_{k=1}^p \alpha_k l_k = 0 </math> Le problème de cette formulation est qu'elle implique un produit scalaire entre vecteurs dans l'espace de redescription, de dimension élevée, ce qui est couteux en terme de calculs. Pour résoudre ce problème, on utilise une astuce connue sous le nom de [[Kernel trick]], qui consiste à utiliser une [[fonction noyau]], qui vérifie : :<math>K(x_i,x_j) = \phi(x_i)^T\cdot\phi(x_j)</math> d'où l'expression de l'hyperplan séparateur en fonction de la fonction noyau: {{Bloc emphase|<math>h(x) = \sum_{k=1}^p \alpha_k^* l_k K(x_i,x_j)+w_0 </math>}} L'intérêt de la fonction noyau est double : * Le calcul se fait dans l'espace d'origine, ceci est beaucoup moins coûteux qu'un produit scalaire en grande dimension. * La transformation <math>\phi</math> n'a pas besoin d'être connue explicitement, seule la fonction noyau intervient dans les calculs. On peut donc envisager des transformations complexes, et même des espaces de redescription de dimension infinie. <!--Le changement d'espace se fait au moyen d'une fonction, dont le produit scalaire correspond à une [[fonction noyau]]. Le [[théorème de Mercer]] donne les conditions sur la fonction noyau pour qu'elle soit expimable comme un produit scalaire. Ce critère permet un changement 'dans les deux sens' ce qui permet à partir de l'expression de l'hyperplan dans l'espace complexe de classer les éléments dans l'espace de description initial.--> ==== Choix de la fonction noyau ==== En pratique, on ne connait pas la transformation <math>\phi</math>, on construit plutôt directement une fonction noyau. celle ci doit respecter certaines conditions, elle doit correspondre à un produit scalaire dans un espace de grande dimension. Le [[théorème de Mercer]] explicite les conditions que K doit satisfaire pour être une fonction noyau : elle doit être symétrique, semi-définie positive. L'exemple le plus simple de fonction noyau est le noyau linéaire : :<math>K(x_i,x_j) = x_i^T \cdot x_j</math> On se ramène donc au cas d'un [[classifieur linéaire]], sans changement d'espace. L'approche par Kernel trick généralise donc l'approche linéaire en en faisant un cas particulier. Le noyau linéaire est parfois employé pour évaluer la difficulté du problème. Les noyaux usuels employés pour les SVM sont: *le noyau polynomial <math>K(x_i,x_j) = (x_i^T \cdot x_j)^d</math> *le noyau gaussien <math>K(\mathbf{x},\mathbf{y})=\exp\left(- \frac{\|\mathbf{x} - \mathbf{y}\|^2}{2 \sigma^2}\right)</math> == Extensions == === Marge souple === En général, il n'est pas non plus possible de trouver une séparatrice linéaire dans l'espace de redescription. Il se peut aussi que des échantillons soient mal étiquetés, et que l'hyperplan séparateur ne soit pas la meilleure solution au problème de classement. En 1995, [[Corinna Cortes]] et [[Vladimir Vapnik]] proposent une technique dite de '''marge souple''' <ref>Corinna Cortes and V. Vapnik, "Support-Vector Networks'', Machine Learning, 20, 1995. http://www.springerlink.com/content/k238jx04hm87j80g/ </ref>, qui tolère les mauvais classements. La technique cherche un hyperplan séparateur qui minimise le nombre d'erreurs grâce à l'introduction de '''variables ressort''' <math>\xi_k</math> (''slack variables'' en anglais), qui permettent de relacher les contraintes sur les vecteurs d'apprentissage: :<math>l_k(w^Tx_k+w_0) \ge 1 - \xi_k \quad \xi_k > 0, \quad 1 \le k \le p </math> Avec les contraintes précédentes, le problème d'optimisation est modifié par un terme de pénalité, qui pénalise les variables ressort élevées: :<math>\mbox{Minimiser } \frac{1}{2} ||w||^2+C \sum_{k=1}^p \xi_k \quad, \quad C>0</math> où <math>C</math> est une constante qui permet de contrôler le compromis entre nombre d'erreurs de classement, et la largeur de la marge. Elle doit être choisie par l'utilisateur, en général par une [[recherche exhaustive]] dans l'espace des paramètres, en utilisant la [[validation croisée]] sur l'ensemble d'apprentissage. === Cas multi-classe === Plusieurs méthodes ont été proposées pour étendre le schéma ci-dessus au cas où plus de deux classes sont à séparer. Ces schémas sont applicables à tout classifieur binaire, et ne sont donc pas spécifiques aux SVM<ref>{{Bishop06}}, p.182-184</ref>. Les deux plus connues sont appelées ''one versus all'' et ''one versus one''. Formellement, les échantillons d'apprentissage et de test peuvent ici être classés dans <math>M</math> classes <math>\{C_1, C_2, ..., C_M\}</math>. La méthode '''one-versus-all''' (appelée parfois '''one-versus-the-rest''') consiste à construire <math>M</math> classifieurs binaires en attribuant le label 1 aux échantillons de l'une des classes et le label -1 à toutes les autres. En phase de test, le classifieur donnant la valeur de confiance (e.g la marge) la plus élevée remporte le vote. La méthode '''one-versus-one''' consiste à construire <math>M(M-1)/2</math> classifieurs binaires en confrontant chacune des <math>M</math> classes. En phase de test, l'échantillon à classer est analysé par chaque classifieur et un vote majoritaire permet de déterminer sa classe. Si l'on note <math>x_t</math> l'échantillon à classer et <math>h_{ij}(.)</math> le classifieur SVM séparant la classe <math>C_i</math> et la classe <math>C_j</math> et renvoyant le label attribué à l'échantillon à classer, alors le label attribué à <math>x_t</math> peut formellement se noter <math>Card(\{h_{i,j}(x_t)\} \cap \{k\};i,j,k \in [1,M], i<j)</math>. C'est la classe qui sera le plus souvent attribuée à <math>x_t</math> quand il aura été analysé par tous les <math>h_{ij}</math>. Ces méthodes souffrent toutes deux de défauts. Dans la version one-versus-all, rien n'indique que les valeurs du résultat de classification des <math>M</math> classifieurs soient comparables (pas de normalisation, donc possibles problèmes d'échelle)<ref name=Bishop338>{{Bishop06}}, p.338-339</ref>. De plus le problème n'est plus équilibré, par exemple avec M=10, on utilise seulement 10% d'exemples positifs pour 90% d'exemples négatifs. Dans le cas du one-versus-one, il peut exister une ambiguité dans le résultat du comptage, s'il n'existe pas de vote majoritaire<ref name=Bishop338/>. === Les SVM pour la régression === {{...}} ==Voir aussi== * [[Apprentissage automatique]] * [[Apprentissage supervisé]] * [[Réseau de neurones]] * [[Modèle de mélanges gaussiens]] * [[Théorie de Vapnik-Chervonenkis]] ==Bibliographie== *{{en}} Vapnik, V. Statistical Learning Theory. Wiley-Interscience, New York, (1998) *{{en}} Bernhard Schölkopf, Alexander J. Smola, ''Learning With Kernels: Support Vector Machines, Regularization, Optimization and Beyond'', 2002, MIT Press. *{{en}} John Shawe-Taylor, Nello Cristianini, ''Support Vector Machines and other kernel-based learning methods'', Cambridge University Press, 2000. * {{en}} Christopher J.C. Burges, ''A Tutorial on Support Vector Machines for Pattern Recognition'', Data Mining and Knowledge Discovery, 2, 121–167 (1998) * {{Bishop06}} == Notes et références == <references /> == Liens externes == * {{en}} [http://www.support-vector.net/references.html Introduction aux SVM] {{Portail|probabilités et statistiques|informatique}} [[Catégorie:Informatique théorique]] [[Catégorie:Intelligence artificielle]] [[cs:Support vector machines]] [[de:Support Vector Machine]] [[en:Support vector machine]] [[es:Máquinas de vectores de soporte]] [[eu:Euskarri bektoredun makina]] [[fa:ماشین بردار پشتیبانی]] [[fi:Tukivektorikone]] [[it:Macchine a vettori di supporto]] [[ja:サãƒãƒ¼ãƒˆãƒ™ã‚¯ã‚¿ãƒ¼ãƒžã‚·ãƒ³]] [[ko:서í¬íЏ 벡터 ë¨¸ì‹ ]] [[ru:Метод опорных векторов]] [[sl:Metoda podpornih vektorjev]] [[sv:Stödvektormaskin]] [[zh:支æŒå‘釿œº]]</text> </revision> </page>