Université Claude Bernard Lyon 1 Institut Camille Jordan Master Ingénierie Mathématiques INTRODUCTION AUX SVM (SUPPORT VECTOR MACHINES). APPLICATIONS AUX DONNEES MEDICALES Fait par: MAHAMAT ATTEIB Adoum Mahamat Soutenu le 10/06/2014 à 10h Responsable du master : Clopeau Thierry Encadré par: Ciuperca Gabriela Année Académique : 2013-2014
Remerciements Il est toujours délicat de remercier l ensemble des personnes qui ont contribué à l aboutissement de ce travail. J exprime tout d abord mes vifs remerciements à mon encadrante Madame CIUPERCA GA- BRIELA d être toujours à mon écoute, son entière disponibilité, son inspiration et aussi aux échanges fructueux que nous avons eu tout au long de notre travail ensemble. Je profite de l occasion pour exprimer mes gratitudes et mes sincères remerciements à l ensemble des professeurs qui m ont enseigné en master 1 d Ingénierie Mathématiques durant cette annéé. Que soient remerciés mes parents, mes frères, mes soeurs ainsi que mes ami(es) plus particulièrement- Maidé Hamit Lony et Mahamat Choua. Que tout ce qui m ont aidé de près ou de loin dans l élaboration de ce TER trouvent ici l expression de ma sincère gratitude. Merci enfin au lecteur qui par essence justifie la rédaction de ce travail. 1
Dédicace A mes parents A mes frères Imrane, Roudouane et Loukhmane A toutes mes soeurs A tout ceux qui m ont chers. 2
Table des matières 1 Introduction 4 2 SVM linéaire 4 2.1 Cas Séparable......................................... 4 2.1.1 Formalisation du problème............................. 4 2.1.2 Approche générale.................................. 4 2.1.3 Hyperplan....................................... 5 2.1.4 Définition de base.................................. 5 2.1.5 Formulation Primale................................. 6 2.1.6 Formulation duale.................................. 7 2.2 Cas non séparable...................................... 8 2.2.1 Formulation Primale................................. 8 2.2.2 Formulation Duale.................................. 9 3 SVM non linéaire 10 3.1 Fonction Noyau........................................ 13 3.2 Exemple de fonctions Noyaux................................ 13 3.3 Opérations sur les Noyaux.................................. 13 4 SVM Multi-classes 14 4.1 One Versus All........................................ 14 4.2 One Versus One........................................ 14 4.3 Comparaison......................................... 14 5 Avantages et Inconvénients des SVM 15 5.1 Avantages........................................... 15 5.2 Inconvénients......................................... 15 6 Domaine d application des SVM 15 7 Application aux données Médicales 15 7.0.1 Classification Supervisée............................... 15 7.1 Exemple illustratif : IRIS.................................. 15 7.1.1 Conclusion...................................... 17 7.2 Données ECOLI....................................... 18 7.3 Données HEART....................................... 20 7.3.1 Description brève de toutes les variables...................... 20 8 Conclusion Générale 22 9 Bibliographie 23 10 Annexe 24 3
1 Introduction Les Support Vector Machines 1 (SVM) sont une classe d algorithmes d apprentissage initialement définis pour la discrimination c est-à-dire la prévision d une variable qualitative binaire. Ils ont été ensuite généralisés à la prévision d une variable quantitative. Dans le cas de la discrimination d une variable dichotomique, ils sont basés sur la recherche de l hyperplan de marge optimale qui, lorsque c est possible, classe ou sépare correctement les données tout en étant le plus éloigné possible de toutes les observations. Le principe est donc de trouver un classifieur, ou une fonction de discrimination, dont la capacité de généralisation (qualité de prévision) est la plus grande possible. Cette approche découle directement des travaux de Vapnik en théorie de l apprentissage à partir de 1995. Elle s est focalisée sur les propriétés de généralisation (ou prévision) d un modèle en contrôlant sa complexité. Le principe fondateur des SVM est justement d intégrer à l estimation le contrôle de la complexité c est-à-dire le nombre de paramètres qui est associé dans ce cas au nombre de vecteurs supports. Ces fameuses machines ont été inventées en 1992 par Boser et al. mais leur dénomination par SVM n est apparue qu en 1995 avec Cortes et al. Dépuis lors, des nombreux développements ont été réalisés pour proposer des variantes traitant le cas non-linéaire, pour adapter cette méthode d apprentissage à la régression ou pour introduire d autres formulations des SVM ayant des liens avec les méthodes de régularisation. Aujourd hui, nous pouvons dire sans exagérer que ces machines ont supplanté les réseaux de neurones 2 et les autres techniques d apprentissage. En effet, elles sont largement répandues en apprentissage statistique et ont eu beaucoup de succès dans quasiment tous les domaines où elles ont été appliquées tels que le traitement d image, la catégorisation de texte, le diagnostique médical... Dans notre étude, on s interesse qu aux applications des SVM dans le domaine médical. 2 SVM linéaire 2.1 Cas Séparable 2.1.1 Formalisation du problème Le problème de classification rentre dans le cadre de l apprentissage statistique supervisée. Le but est de prévoir la classe y d un vecteur p dimensionnel x en se basant sur les mesures des variables qui l expliquent avec pour seule information celle contenue dans l échantillon d apprentissage S. Dans le cas de la discrimination biclasse, nous supposons que les données sont des couples (x i, y i ) X Y, ou X désigne l espace des variables explicatives souvent pris dans R p, y = { 1, 1} et n est la taille de l échantillon. L appartenance d une observation x i à une classe ou à une autre est matérialisée ici par la valeur -1 ou 1 de son étiquette y i. L échantillon d apprentissage S est ainsi une collection de réalisations indépendantes, identiquement distribuées du couple aléatoire (x, y) dont la distribution P est fixe mais inconnue. Cet ensemble est souvent dénoté par : S = {(x 1, y 1 ), (x 2, y 2 ),..., (x l, y l )} (X Y ) n 2.1.2 Approche générale La classification binaire est accomplie au moyen d une fonction à valeurs réelles, f : X R p R. Toute observation x i est affectée à la classe qui correspond au signe de f(x i ) : si f(x i ) > 0, x i est affecté à la classe positive (+1) et sinon elle sera dans la classe négative (-1). En classification linéaire, la fonction f est linéaire en x i et elle prend la forme générale suivante : f(x i ) =< w, x i > +b 1. traduit en français par les expressions "Séparateur à Vaste Marge" ou encore tout simplement par "les machines à vecteurs supports" 2. Ils sont tous deux des méthodes d apprentissage statistique. La différence est que les reseaux des neurones cherchent un optimum local alors que les SVM cherchent un optimum global 4
ou (w, b) R p R sont les paramètres à estimer de la fonction de décision f et <.,.> désigne le produit scalaire usuel dans R p. La règle de décision est donc donnée par sign(f(x i )). Par convention, sign(f(0)) = 1. La fonction sign(f(.)) est appelée "classifieur". La méthodologie d apprentissage implique que ces paramètres doivent être estimés à partir des données d apprentissage. L hyperplan est défini par l équation < w, x > +b = 0 ou w est un vecteur orthogonal au plan qu on appelle "vecteur de poids", tandisque la variation du paramètre b appelé biais engendre une simple translation de l hyperplan séparateur. Les termes "vecteurs de poids" pour le vecteur w et "biais" pour le paramètre b sont empruntés de la littérature des reseaux des neurones. Figure 1 Cas séparable ou d désigne la marge qu on cherche à maximiser 2.1.3 Hyperplan 2.1.4 Définition de base Soit E un espace vectoriel de dimension quelconque (eventuellement infinie). On appelle hyperplan tout sous espace vectoriel de E quelconque d une droite vectorielle. Caractérisation d un Hyperplan : H hyperplan de E si et seulement si, il existe ϕ L(E, K)\{0}, H = Kerϕ. Autrement dit : H est un hyperplan si et seulement si il est le noyau d une fonction linéaire non nulle. Parmi les infinités des hyperplans qui séparent les données, un seul est optimal. Vulgairement, on peut dire que c est celui qui se trouve entre les deux données et en même temps éloigné de ces dernières. L hyperplan optimal est défini par : arg max arg max arg max min w,b i min w,b i min w,b i {distance du point x i à l hyperplan(w, x)} = arg max min w,b i < w, x i > +b w {distance du point x i à l hyperplan(w, b)} (2) { x x i : x R d, < w, x i > +b = 0, i = 1,..., n} (3) (1) 5
Figure 2 Cas séparable ou <w,x>+b=0 désigne l hyperplan La marge normalisée appelée aussi marge géometrique vaut : 2 w. La distance d un point x quelconque à l hyperplan est : d(x) = wx+b La distance de l hyperplan à l origine est : b w. w 2.1.5 Formulation Primale Dans ce cas, les exemples sont linéairement séparables puisqu il existe une infinité des hyperplans (cf. figure 2) qui permettent de les discriminer correctement. C est le plus simple des modèles des séparateurs à vaste marge. Dans le cas contraire, on parle d exemples linéaire non séparables (l objet de la partie suivante). Il faut rappeler que notre objectif est de trouver un seul hyperplan séparateur (optimal) parmi les tant d autres qui sépare au mieux les deux classes d exemples, c est-à-dire qui maximise la distance euclidienne entre ces derniers. Cette distance s appelle "marge". Ce pourquoi, on parle de "séparateurs à vaste marges" puisqu on cherche à maximiser cette marge. Le fait d avoir une marge plus large procure plus de sécurité lorsqu on veut classer un nouvel exemple. Figure 3 Cas séparable Remarque : Minimiser cette marge, son carré, ou la moitié de son carré fournit la même solution. 6
Étant donné que le couple (w, b) est défini à un coefficient multiplicatif près, on impose y(wx i + b) 1. On doit donc résoudre le problème d optimisation sous contraintes s écrivant sous forme primal comme suit : 1 min w,b 2 w 2 y i (wx i + b) 1, i C est un problème d optimisation quadratique convexe sous contraintes linéaire (on a une seule contrainte) où la fonction objectif est le carré de l inverse de la double marge. Il existe plusieurs méthodes pour résoudre un problème d optimisation non linéaire telles que la méthode de Lagrange, la méthode de point intérieur, la méthode de gradient...en effet, un probleme convexe a un et un seul optimum et la fonction est derivable ; donc on peut suivre le gradient puisqu il existe et est continu, et celui-ci nous mene forcement à l optimum. Le point delicat est que dans certaines zones, le gradient peut etre tres faible : on peut alors perdre la direction de la plus forte pente, mais surtout perdre beaucoup de temps à effectuer de très petits pas (même si c est dans la bonne direction). Nous allons se contenter d utiliser la Méthode de Lagrange tout au long de notre travail. 2.1.6 Formulation duale D après la théorie de l optimisation, un problème d optimisation possède une forme duale dans le cas où la fonction objectif et les contraintes sont strictement convexes. Dans ce cas, la résolution de l expression duale du problème est équivalente à la solution du problème original. Pour résoudre ces types de problèmes, on utilise une fonction que l on appelle "lagrangien" qui incorpore des informations sur la fonction objectif et sur les contraintes et dont le caractère stationnaire peut être utilisé pour détecter des solutions. Plus précisément, le lagrangien est défini comme étant la somme de la fonction objectif et d une combinaison linéaire des contraintes dont les coefficients α i > 0 sont appelés multiplicateurs de Lagrange ou encore variables duales. Le lagrangien est défini par : L(w, b, α) = 1 2 w 2 [α i (y i (wx i + b) 1] Un théorème de Kuhn-Tucker, couronnant des travaux commencés par Fermat (1601-1665), puis poursuivis par Lagrange (1736-1813), démontre que le problème primal et sa formulation duale ont la même solution. Celle-ci correspond à un point-selle du lagrangien (il faut le minimiser par rapport aux variables primaires w et b et le maximiser par rapport aux variables duales. Au point-selle, la dérivée du lagrangien par rapport aux variables primaires doit s annuler : L(w, b, α) w L(w, b, α) b L(w, b, α) w L(w, b, α) b = 0 (4) = 0 (5) = = α i y i x i = 0 (6) α i y i = 0 (7) 7
En substituant les dans le lagrangien, on élimine les variable w et b et l on obtient le lagrangien dual : α i 1 2 α i α j y i y j < x i, y j > j=1 < x i, y j > désigne le produit scalaire entre x i et x j. La formulation duale recherchée est donc : max α i 1 α i α j y i y j < x i, y j > α 2 i, α i 0 n α iy i = 0 i,j=1 Il s agit d un problème de programmation quadratique convexe de dimension n (nombre d exemple). Ce problème peut être résolu en utilisant des méthodes standards de programmation quadratique. Une fois la solution optimale du problème obtenu α = (α 1, α 2,..., α n), le vecteur de poids de l hyperplan à marge maximale recherchée s écrit : w = αi y i x i Comme le paramètre b ne figure dans le problème dual, sa valeur optimale b peut être dérivée à partir des contraintes primales, soit : max (< b y i =1 w, x i >) + min (< y w, x i >) = 2 Une fois les paramètres α et b calculés, la règle de classification d une nouvelle observation x basée sur l hyperplan à marge maximale est donnée par : (. 2.2 Cas non séparable 2.2.1 Formulation Primale sign y i α i < x i, x > +b ) Dans le cas ou les exemples ne sont pas linéairement séparables (c est-à-dire les exemples d une classe sont mélangés dans d autre classe), on utilise la technique dite des "variables ressorts( slack variables)". L idée est d ajouter des variables d ajustement ( appelés aussi variables de relâchement des contraintes dans la formulation primale du problème). On les note ξ i et sont toutes positives. Elles assouplissent les contraintes et prennent en compte les erreurs de classification ou le bruit. En d autres termes, ces variables quantifient de combien un exemple est mal classé. Plus ξ i est petit, plus x i est mal classé et éloigné de la marge. Le problème primal s écrit alors sous cette forme : min w,b,ξ [ 1 2 w 2 + c ] ξ i y i (wx i + b) 1 ξ i, i c est appelé "paramètre de pénalisation du relâchement". C est une constante positive à fixer à priori judicieusement. Elle correspond au compromis entre mauvaise classification et complexité de la fonction, soit encore entre erreur empirique et erreur de généralisation. En d autres termes, elle permet de contrôler l importance de l erreur que l on s autorise par rapport à la taille de la marge. 8
Plus sa valeur est grande, moins d erreurs sont autorisées. Remarque : Figure 4 Cas non séparable Si ξ i = 0, les exemples sont bien classés, c est-à-dire y i (wx i + b) 1. Si ξ i = 0, on obtient les vecteurs supports, c est-à-dire y i (wx i + b) = 1. Si ξ i > 0, les exemples sont dans la marge,c est-à-dire y i (wx i + b) < 1. 2.2.2 Formulation Duale On construit le lagrangien de ce problème, par la méthode que précédemment, afin d obtenir la formulation duale. Il s écrit : L(w, b, ξ, α, β) = 1 2 w 2 + c ξ i α i [y i (wx i + b) + ξ i 1] β i ξ i Pour tout i, les multiplicateurs de Lagrange α i et β i sont positifs sou nuls. Étant donné que le problème primal et sa formulation duale ont la même solution qui correspond à un "point selle" du lagrangien, donc, on doit minimiser ce dernier par rapport aux variables w, b et ξ et le maximiser par rapport à α et β. Au point selle, la dérivée du lagrangien par rapport aux variables w, b et ξ sont nuls. Conditions d optimalités : L(w, b, ξ, α, β) w L(w, b, ξ, α, β) b = w = α i y i x i = 0 w = i α i y i = 0 α i y i x i (8) α i y i = 0 (9) L(w, b, ξ, α, β) ξ i = c α i β i (10) Les multiplicateurs de Lagrange étant positifs ou nuls, c est-à-dire α i 0 et β i 0 donc, ce qui 9
implique que c α i = β i 0. On obtient donc la contrainte suivante : 0 α i c. Après substitution des valeurs optimales dans le lagrangien, on obtient la formulation duale recherchée : [ ] max α i 1 α i α j y i y j < x i, x j > α 2 n α iy i = 0 i, 0 α i c Remarque : Elle a la même forme que dans le cas séparable linéairement. La seule différence réside sur la borne supérieure sur les α. 3 SVM non linéaire Nous avons vu le principe des SVM dans le cas ou les donnés sont au non séparables linéairement. Cependant, dans la plus part des problèmes réels de la vie, de classification sous entendu, ce n est pas toujours le cas. Autrement dit, il est difficile de séparer efficacement n importe quel jeu de donné par un simple hyperplan. Si par exemple les données des deux classes se chevauchent sévèrement. Le vif de ce paragraphe est donc d apporter des éléments de réponse à ce pertinent problème. L idée de Boxer et al. fut alors de pulvériser, de projet les données x i dans un espace de Hilbert de plus grande dimension, voire infinie ou on peut linéairement séparables. Il s agit donc, là, d un changement d espace. Cette opération n ait lieu qu à l aide d une fonction non linéaire : Figure 5 Changement d espace φ : R p T x φ(x) à choisir à priori avec card(t )>p. Il s agit donc d une transformation d un problème de séparation non linéaire dans l espace de représentation en un problème de séparation linéaire dans un espace de grande dimension. Il existe, sous certaines hypothèses, une fonction K dite "fonction noyau" définie par : K(x i, x j ) =< φ(x i ), φ(x j ) >. On peut dès lors effectuer tous les calculs dans le cadre des SVM en utilisant la fonction K(x i, x j ), sans devoir connaitre explicitement les donnés la fonction φ. D où l appellation de cette technique par "astuce de Noyau" 3. Le nouvel espace T porte plusieurs nominations dont on ne peut résister la tentation de les citer : espace des caractéristiques, espace de transformé ou espace de ré-description 4. 3. Kernel Strick 4. En Anglais, on parle plutôt de feature espace 10
Théorème de Cover 1 Dans une tâche de classification supervisée, plus la dimension des données est grande, plus ils ont d attributs linéairement indépendants, plus la probabilité que les classes soient linéairement séparables est grande. L hyperplan séparateur obtenu dans le nouvel espace T (espace des caractéristiques) est appelé : hyperplan optimal généralisé. Sa forme dépend sans doute des données que nous avons à classifier, à étudier. insérer une courbe ici pour montrer les différentes allures de l hyperplan généralisé!! La formulation duale de ce nouveau problème d optimisation se déduit de la précédente en remplaçant < x i, x j > par < φ(x i ), φ(x j ) > : max α α i 1 2 i, α i 0 n α iy i = 0 α i α j y i y j < φ(x i ), φ(x j ) > i,j=1 avec < φ(x i ), φ(x j ) >= K(x i, x j ). On peut ainsi donc reformuler le problème : max α i 1 α i α j y i y j K(x i, x j ) α 2 i, α i 0 n α iy i = 0 i,j=1 La solution de ce problème d optimisation nous donne l hyperplan optimal généralisé d équation : αi y i K(x i, x) + b Les coefficients α i et b sont obtenus comme précédemment par résolution du problème d optimisation quadratique. Exemple d Illustration : On considére un problème de discrimination les plus simples imaginables. On suppose que l espace des entrées est réduit à R, c est-à-dire à une dimension. On suppose que l on a cinq points d apprentissage associés à deux classes +1 et -1. S = {(x 1, y 1 ) = (1, 1); (x 2, y 2 ) = (2, 1); (x 3, y 3 ) = (4, 1); (x 4, y 4 ) = (5, 1); (x 5, y 5 ) = (6, 1)} Figure 6 C est un problème de discrimination à une dimension Il n est pas possible de trouver un séparateur linéaire permettant de distinguer les exemples 1 des exmples 1. 11
Choix des paramètres : Supposons que l on choisisse le noyau polynômial de degré 2. K(x i, x j ) = (< x i, x j > +1) 2. En prennant c = 100, le problème d optimisation s énonce comme suit : [ 5 ] max α i 1 5 α i α j y i y j < x i, x j > α 2 n α iy i = 0 i, 0 α i 100 On cherche les α i en resolvant le problème optimisation. Un programme de résolution de problème quadratique de ce type retourne la solution : α 1 = 0; α 2 = 2.5; α 3 = 0; α 4 = 7.333; α 5 = 4.833 Les points critiques 5 sont les points ou les α i sont non nuls et correspondent à : La fonction de décision correspondante est : {x 2 = 2; x 4 = 5; x 5 = 6} La fonction de décision est : f(x) = α i y i K(x, x i ) + b f(x) = (2.5)(1)(2x + 1) 2 + 7.333(1)(5x + 1) 2 + 4.833(1)(6x + 1) 2 + b f(x) = 0.6667x 2 5.333x + b b est obtenu par f(2) = 1 ou par f(5) = 1 ou par f(6) = 1 puisque x 2, x 4 et x 5 se situent sur la droite : Ce qui donne b = 9. La fonction de décision est alors : y i (wx i + b) = 1 f(x) = 0.6667x 2 5.333x + 9 Figure 7 La parabole bleue associée à la fonction f(x) sépare les trois classes 5. C est les points associés aux vecteurs supports 12
3.1 Fonction Noyau Sur le plan théorique, la fonction noyau définit un espace hilbertien, dit auto-reproduisant et isométrique par la transformation non linéaire de l espace initial et dans lequel est résolu le problème linéaire. Théoreme de Moore-Aronszajn(1950) 1 Toute fonction semi-définie positive K(x, x ) est un noyau et réciproquement. Elle peut s exprimer comme un produit scalaire dans un espace de grande dimension. 3.2 Exemple de fonctions Noyaux Soit x = (x 1, x 2 ) et φ(x) = (x 2 1, 2x 1 x 2, x 2 2 ). Dans l espace des caractéristiques T, le produit scalaire donne : < φ(x), φ(x ) >= x 2 1x 2 1 + 2x 1 x 2 x 1x 2 + x 2 2x 2 2 = (x 1 x 1 + x 2 x 2) 2 = (< x, x >) 2 On remarque qu on peut calculer < φ(x), φ(x ) > sans pourtant calculer φ. La question qu on doit se poser est comment reconnaitre une fonction noyau? Alors, toute fonction K "fonction noyau" si elle vérifie les conditions de Mercer, c est-à-dire qu elle est continue, symétrique et semi-définie positive. D où l appellation de cette fonction par "Noyau de Mercer". Les noyaux linéaires sont de la forme : K(x, x ) =< x, x >. Les réseaux de neurones à fonctions d activation ont pour fonction noyau les fonctions sigmoîdes : K(x, x ) = tanh[a(< x, x > b)] Les fonctions à base radiales ont pour fonction noyau le noyau gaussien et s écrit : K(x, x ) = exp x x 2 2σ 2 Le noyau polynomial d ordre p s écrit : K(x, x ) = (< x, x > +1) p 3.3 Opérations sur les Noyaux A partir des fonctions noyaux usuelles (gaussien, polynomial, sigmoïde,...), nous pouvons bien sur construire d autres fonctions noyaux adaptées et conformes à notre problème de classification. Soient K 1 (x, x ) et K 2 (x, x ) deux fonctions noyaux. Alors, nous avons : K(x, x ) = K 1 (x, x ) + K 2 (x, x ) (11) K(x, x ) = K 1 (x, x ) K 2 (x, x ) (12) K(x, x ) = f(x) f(x ) (13) K(x, x ) = ak 1 (x, x ) (14) K(x, x ) = xbx t (15) 13
a est une constante positive. B est une matrice symétrique, semi-définie positive. et f() une fonction de l espace caractéristique dans R. Le bon choix de la fonction noyau exige de l utilisateur de SVM des tâches considérables. Il doit ou devra essayer des fonctions noyaux associés à des produits scalaires dans l espace des caractéristiques T et voir si elles permettent l obtention de bonnes séparatrices. Autrement dit, l utilisateur de SVM essaie des fonctions noyaux afin de déterminer celle qui convient le mieux pour son application. 4 SVM Multi-classes Les séparateurs à vaste marge ont été conçus à l origine pour les problèmes à deux classes c.-à-d. le cas ou la variable à prédire prend deux modalités (par exemple : positifs et négatifs) quid du problème multi-classe? D ailleurs, en réalité, les problèmes rencontrés sont de type multi-classes, d où l importance d étendre le principe du SVM aux problèmes de plus de deux classes. L extension des SVM au cas multiclasse est actuellement un domaine de recherche très ouvert et fait l objet de plusieurs travaux en cours. Nous allons donc expliquer brièvement quelques méthodes parmi les plus utilisés. 4.1 One Versus All Cette méthode s appelle en français la méthode de "Un contre Tous". Elle consiste à construire autant de classifieur SVM que de classe. En fait, l idée consiste simplement à transformer le problème à k classes en k classifieurs binaires. Chaque classifieur renvoie 1 si sa forme à reconnaitre appartient à la classe, 1 sinon. Il faut donc pour reconnaitre une forme, le soumettre à tous les classifieurs, le meilleur remportant la décision. Il est évident qu avec un nombre de classe élevé, la combinatoire peut être énorme. 4.2 One Versus One Cette méthode s appelle en français la méthode de "Un contre un". Elle a été adopté par S.Knerr et al. et utilisé pour la prémiere fois dans le contexte des machines à vecteurs supports par Krebel. Comme son nom l indique, cette méthode consiste à discriminer chaque classe d une autre, c est-à-dire construire un classifieur pour chaque paire de classe. En d autres terme, chaque classe i est comparée à chaque classe j. Pour un problème à N classes, on a N(N 1) 2 classifieurs. Le classement est donné par le vote majoritaire. L inconvenient de cette méthode est que, plus N est grand, plus sa complexité augmente puisqu elle nécessite N(N 1) comparaisons. Le classement est donné par "le vote majoritaire". 4.3 Comparaison La méthode One Versus One nécessite moins de temps que la méthode One Versus All. 14
5 Avantages et Inconvénients des SVM 5.1 Avantages Les séparateurs à vaste marge présentent des avantages multiples dont on se contente d énumérer quelques un. Ils permettent de traiter des données de très grande dimension et sont d ailleurs très efficaces (donnent des résultats meilleurs aux méthodes supervisées classiques). Les SVM sont faciles d emploi et présentent de bon comportement en prédiction. Cette méthode d apprentissage qu est les SVM est sympathique dans la prise en compte des données complexes et légèrement bruitées. Comme presque tout problème de classification, le problème de classification par les SVM est converti, transcrit en un problème d optimisation quadratique convexe dont la solution est unique et est obtenue par des méthodes mathématiques classiques d optimisation. Du coup, L absence d optimum local facilite donc naturellement la résolution d un problème de classification par la méthode des SVM. En outre, la mise en œuvre d un algorithme de classification de manière incrementable peu coûteuse en temps fait de SVM une méthode d apprentissage statistique efficace et prisée. 5.2 Inconvénients Comme toute méthode de classification, les SVM présentent des désavantages, des limites. Elle ne présente pas des résultats escomptés dans une tâche de classification de très petite dimension par exemple. En sus, Les meilleurs choix (paramètres du noyau) du paramètre de pénalisation de relâchement c et du type de noyau posent énormément des problèmes et nécessitent des lourdes tâches à l utilisateur des SVM, ceci tire fatalement vers le bas les performances des SVM. En plus, la généralisation 6 Domaine d application des SVM 7 Application aux données Médicales Nous utilisons le logiciel R tout au long de notre étude. Plusieurs librairies rélatives aux séparateurs à vaste marge existent à savoir kernlab(ksvm), klar(svmlight), svmpath(svmpatch), e1071(svm),... Nous nous se contentons d utiliser la librairie e1071 de la bibiotheque de R, réalisée par Chang, Chih- Chung et Lin Chih-Jen. 7.0.1 Classification Supervisée 7.1 Exemple illustratif : IRIS Avant d utiliser les séparateurs à vaste marge pour traiter les données médicales que nous disposons, nous allons tout d abord traiter cet exemple illustratif qui consiste à prèdire un pic d ozone en fonction des conditions atmosphériques/ météorologiques. Les données sont celles, triviales, des "iris 6 " d Edgar Anderson 7, dits de Fisher afin d illustrer la méthode en explicitant graphiquement l emplacement des vecteurs supports. Notre donnée se constitue de 5 variables et de 150 observations. Trois variétés :"setosa","versicolor" et "virginica" (liaison avec la partie théorique : nous avons trois classes) d iris doivent être discriminées en fonction des 4 mésures (longueur et largeur des sépales et des pétales) réalisées sur les fleurs. Autrement dit, l objectif içi étant de prédire la cinquième variable, c est-à-dire prèdire l espèce (nommée "Species" 8 ) en connaissance des largeurs et longueurs des sépales et pétales des palntes. Rappellons les noms ou les termes utilisés avec leurs significations en français des quatres variables 6. Ces sont des plantes. 7. Edgar Anderson ( 9 novembre 1897-18 juin 1969 ) était un botaniste americain. Il est l auteur du livre "Introgressive Hybridization". Il a contribué énormement à la génétique botanique. 8. Species veut dire éspece en français. 15
explicatives que nous utilisons pour prédire la cinquième "Species" : Sepal.Length : Longueur des sépales Sepal.Width : Largeur des sépales Petal.Length : Longueur des pétales Petal.Width : Largeur des pétales Il y a 50 fleurs par variétés. Il est judicieux de faire tout d abord une étude déscriptive de notre donnée. Sepal.Length Sepal.Width Petal.Length Petal.Width Min 4.3 2 1 0.1 1st Qu. 5.1 2.8 1.6 0.3 Median 5.8 3 4.35 1.3 Mean 5.8 3 3.75 1.99 3rd Qu. 6.4 3.3 5.10 1.80 Max 7.9 4.4 6.9 2.5 Les commandes utilisées pour la classification supervisée 9 (cf. code iris, sous partie intitulée : classification supervisée des iris) nous indiquent que nous avons trois classes et 51 vecteurs supports. On a vu combien ces vecteurs supports jouent un rôle important. Les vecteurs supports synthétisent en quelque sorte les aspects importants de notre jeu d exemple "iris". Si on les connaissait a priori, on pourrait effectuer l apprentissage sans tenir compte des autres exemples. Alors, on peut donc compresser l ensemble des "iris" en ne retenant que les 51 vecteurs supports. Ces derniers jouent un rôle important dans la construction de la séparatrice. Nous expliquons plus tard le choix des paramètres fonction noyau, gamma et cost grâce au taux de l erreur de prèdiction. cost désigne la constante de coût pour le lagrangien. La méthode de validation croisée permet de faire le bon choix de ces paramètres. Le tableau ci-dessous par la commande table.iris dans le code compare les valeurs prédites et les valeurs réelles. Il nous permet aussi d avoir une idée sur le taux d erreur commis. predict.iris setosa versicolor virginica setosa 50 0 0 versicolor 0 48 2 virginica 0 2 48 On remarque que les 50 "setosa" sont bien prèdites. Les prèdictions de "versicolor" et "virginica" sont bonnes ou du moins acceptables malgrè que deux exemples de chacun d eux se trouvent respectivement à "virginica" et "versicolor". Le taux d erreur global que nous notons par "taux.iris" dans le code nous permet de savoir si les paramètres choisis sont efficaces et par consequent si nos prèdictions sont bonnes. taux.iris = 0.97, cela veut dire que les prèdictions faites sont bonnes dans 97% des cas. Non seulement ça, cela veut dire aussi que nous avons bien choisis les paramètres : fonction noyau, gamma et cost. Le choix des paramètres peut être optimisé grâce à la fonction tune.svm. Le resumé descriptif de 9. 16
Figure 8 Schema permettant de visualiser les classes par des couleurs différentes et les vecteurs supports répresentés par le "+". cette fonction nous renvoit les meilleurs paramètres à mettre en jeu conduisant bien entendu à un faible taux d erreur de classification. Si nous reprenons le travail fait avec les paramètres que la fonction tune.svm nous suggére, nos prèdictions augmentent de performance, taux.svm sera égal à 98% au lieu de 97%. Une amelioration! 7.1.1 Conclusion Nous concluons que nos prèdictions pour la variable "Species" sont parfaites globalement. 17
7.2 Données ECOLI Figure 9 Schema illustrant les différentes classes. Nous allons maintenant traiter les données ecoli.data que nous pouvons l obtenir par le lien http : //archive.ics.uci.edu/ml/machine learning databases/ecoli/ecoli.data de l Institut de Biologie Moléculaire et Cellulaire de l Université d Osaka. Les données contiennent 9 variables (nous les avons notées par V1, V2,...,V9) et 336 observations au total. Significations des abréviations suivantes : "cp","im","ims","iml","imu","om","oml","pp" cp : désigne le cytoplasme contenant 143 observations. im : c est la membrane intérieure sans ordre de signal contenant 77 observations. ims : désigne la membrane intérieure scindable contenant 2 observations. iml : membrane intérieure de lipoproteine composée de deux observations. imu : C est la membrane intérieure non scindable de l ordre de séquence contenant 35 observations. om : désigne la membrane externe qui contient 20 observations. oml : désigne la membrane externe de lipoproteine composée de 5 observations. pp : c est le periplasme qui contient 52 observations. Nous constatons que la somme de toutes les observations est bien 336. 18
L objectif est de prèdire la dernière variable (la neuvième), c est-à-dire de prèdire les "cp","im", "ims", "iml", "imu", "om", "oml", "pp" de la 9iéme variable en fonction des autres variables. Comme dans tout traitement quelconque des données, nous allons d abord faire le résumé statistique de toutes les variables que nous étudions. V2 V3 V4 V5 V6 V7 V8 Min. 0.00 0.16 0.48 0.5 0 0.03 0.00 1st Qu. 0.34 0.40 0.48 0.5 0.42 0.33 0.35 Median 0.50 0.47 0.48 0.5 0.49 0.45 0.43 Mean 0.50 0.50 0.49 0.5 0.5 0.5 0.49 3rd Qu. 0.66 0.57 0.48 0.5 0.57 0.71 0.71 Max 0.89 1 1 1 0.88 1 0.99 Les variables explicatives sont V 2 V 8 et nous avons au total 8 classes à discriminer. Le nombre des vecteurs support varient selon les paramètres que nous choisissons. Avec le choix que nous avons fait des paramètres, nous obtenons 185 vecteurs supports 10 repartis dans les 8 classes comme suit : 46 55 2 2 30 15 4 31. Le choix des paramètres que nous avons fait est correct comme on le constate dans le tableau ci-dessous qui permet de comparer les valeurs prèdites et les valeurs réelles. prediction.ecoli cp im iml ims imu om oml pp 1 141 2 0 0 0 0 0 4 2 0 68 1 1 8 0 0 1 3 0 0 1 0 0 0 0 0 4 0 0 0 0 0 0 0 0 5 0 7 0 0 27 0 0 0 6 0 0 0 0 0 18 0 0 7 0 0 0 0 0 0 5 0 8 2 0 0 1 0 2 0 47 Le fait que la première colonne du tableau précédent nommée prediction.ecoli est numérotée de 1 à 8 et non nommée nous interpelle et nous autorise à se poser la question : Comment les nouvelles classes sont étiquetées, nommées? Chacune des 8 classes contient évidemment des valeurs issues de la prèdiction. Chaque classe porte le nom des variables dominant qui le composent. Par exemple, la première classe sera la classe de "cytoplasme", la deuxième de "membrane intérieure sans ordre de signal" et avec le même principe, nous reconnaitrons que la dernière est celle de "periplasme". Le taux d erreur global de la prèdiction noté taux.ecoli est égal à 0.91, cela veut dire que 91% de nos prèdictions sont bonnes. Ce qui garantit aussi à la fois le bon choix de nos paramètres f onction noyau, gamma = 0.5 et cost = 1. Intéressons nous maintenant aux différents taux d erreur commis dans les 8 cas. Cas 1 : On remarque que de 143 cytoplasmes dont on disposons au départ, 141 sont bien prèdits contre 2. Les 2 autres etant considérés comme des "intrus" parmi la classe des periplasmes. l erreur commise dans chaque classe s obtient par la formule suivante : taux d erreur par type de classe = 10. les vecteurs supports sont aussi appelés des exemples critiques. nombre des intrus nombre total des observations de ce cas 19
2 Dans ce premièr cas, l erreur de prèdiction commise vaut 143. Cas 2 : La deuxième classe contient les observations de "la membrane intérieure sans ordre de séquence". le taux d erreur d erreur commise est de 9 77. Cas 3 : Nos prèdictions de "membrane intérieure de lipoproteine" sont bonnes dans 50% des cas. L erreur commise est égal à 1 2 soit 50% des cas. Cas 4 : Les "ims" ne sont pas bien prèdictes. Cas 5 : Les deux observations rélatives aux imu ne sont pas bien prèdites. Le taux d erreur commis est de 100%. Cas 6 : Seulement deux "om" ne sont pas bien prèdites,ils se sont retrouvés parmi les "pp". Les 18 autres sont bien prèdites. Le taux d erreur commise est de 2 20. Cas 7 : Les "oml" sont bien prèdites. Cas 8 : Nos prèdictions pour les "pp" sont acceptables malgré qu un taux d erreur de l ordre de 5 52 est commise. On conclut que les prèdictions faites sont bonnes dans 91% des cas. Traiter une autre donnée semble être nécessaire pour mieux comprendre, maitrîser la classification supervisée par la méthode des supports vectors machines. 7.3 Données HEART Les données Heart 11 que nous traitons dans cette partie de notre travail sont accessibles à l adresse : http : //archive.ics.uci.edu/ml/machine learning databases/statlog/heart/heart.dat et ne contiennent pas des données manquantes. Elles sont recoltées auprès des patients souffrant des maladie cardiaque. Elles comportent 270 observations et 14 variables dont 13 sont explicatives. L objectif étant de prèdire la 9ième variable. Nous avons en tout 14 variables. 7.3.1 Description brève de toutes les variables Variables réels : 1, 4, 5, 8, 10 et 12. Variables binaires : 2, 6 et 9. Variables de type : "nominal" : 7, 3, 13. V1 : l âge. V2 : le sexe. C est une variable binaire, c est-à-dire ne contenant que deux issues 1 ou 0. V3 : types des douleurs thoraciques. Il y a 4 types numerotés de 1 à 4. On constate alors que les données de cette colonne ne comprend des valeurs allant de 1 à 4. V4 : la pression arterielle au repos. V5 : serum de cholesterol en mg/dl. 12 V6 : le taux de glycémie à jeun supérieur à 120 mg/dl. V7 : les resultats d éléctrocardiologiques au repos. V8 : la fréquence cardiaque maximale. V9 : l exercie induisant à l angine. 11. le terme "Heart" veut dire "coeur" en français. 12. mg/dl : milligramme par decilitre 20
V10 : Oldpeak=ST depression induced by exercice relative to rest. V11 : la pente du segment ST pic d exercice. V12 : nombre de gros vaisseaux répresenté par 4 types 0, 1, 2 ou 3. V13 : Dans cette variable, 3 veut dire normal, 6 : normal et 7 : defaut reversible. Remarque : L absence d une maladie cardiaque est notée par 1 et sa présence par 2. Le fait que la variable 9 qu on veut prèdire est binaire nous donne d avance une idée sur le nombre des classes. La reponse est simple, on en aura deux. V1 V2 v3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 Min 29 0.0 1.0 94 126 0.0 0.00 71.0 0.0 0.0 1.0 0.0 3.0 1.0 1st Qu. 48 0.0 3.0 120 213 0.0 0.00 133.0 0.0 0.0 1.0 0.0 3.0 1.0 Median 55 1.0 3.0 130 245 0.0 2.0 153.5 0.0 0.80 2.0 0.0 3.0 1.0 Mean 54 0.67 3.17 131.3 249.7 0.14 1.02 149.7 0.32 1.05 1.58 0.67 4.69 1.4 3rd Qu. 61 1.0 4.0 140 280 0.0 2.0 166.0 1.0 1.60 2.0 1.0 7.0 2.0 Max 77 1.0 4.0 200 564 1.0 2.0 202.0 1.0 6.20 3.0 3.0 7.0 2.0 Ces données sont sympathiques comparées aux autres que nous avons étudiés dans ce TER puis qu elles sont bien prèdites tout simplement. Le choix judicieux que nous avons effectué pour les paramètres (kernel : "radial", gamma= 0.5, cost= 3) nous ont fournis 260 vecteurs supports repartis en 2 classes. La première classe contient 173 observations tandis que la deuxième en comprend 2. Nous récapitulons dans un tableau comme ce fut le cas précédemment les valeurs prèdites et les valeurs réelles. prediction.heart 0 1 0 181 0 1 0 89 Toute prèdiction n est pas épargnée d erreur on le sait bien mais celle-ci est parfaite en lisant le tableau ci-dessus. Autrement dit, le séparateur a classé les vecteurs supports comme il le faut. On conclut que les résultats fournis par les médécins sont bien fiables. Rappelons que l absence d angine est matéarilisé par "0" et sa présence par "1". De ce fait, on ajoute aussi qu aucun patient sain n est déclaré malade et inversement. 21
8 Conclusion Générale Dans ce TER, nous avons tenté d introduire sinon de présenter les notions fondamentales d une des importantes méthodes de la classification supervisée : Les Séparateurs à Vaste Marge (SVM) qui fut introduit par Vladimir Vapnik dans les années 95. Nous avons introduit les concepts mathématiques forts utiles permettant de connaître au mieux cette méthode. Dans la partie théorique de notre travail, nous avons traité premièrement le cas linéairement séparable qui a pour but de chercher un hyperplan qui permet de séparer au mieux les données, un cas naturel! Nous avons ensuite étudier le cas linéairement non séparable avant d entamer le cas non linéaire. Dans ce cas, grâce au kerneltrick, nous changeons notre espace afin qu on puisse classer les données. Rappelons nous que presque tout le problème de classification rencontrée dans la vie courante sont de type non linéaire et de multiclasse. Les SVM étaient tout d abord utilisées pour discriminer deux classes, elles ont été généralisées désormais au cas multiclasse. Les SVM ont montré leurs éfficacités dans presque tous les domaines ou ils sont utilisés. On s est servi des SVM pour classer les données médicales "Heart" et "Ecoli". Nous concluons la performance de cette méthode. Nous obtenons des bonnes prèdictions. Toute oeuvre a sa nature et ses méfaits, les séparateurs à vaste marge présentent des inconvénients sinon ont montrés leurs limites. Par exemple, le bon choix des paramètres n est pas une mince à faire. Je ne saurais terminer mes propos pour réitérer ma gratitude à mon encadrante Madame CIUPERCA GABRIELA pour tout son soutien afin que ce travail ait le jour. 22
9 Bibliographie 1 Gilles Gasso, Introduction à l apprentissage Statistique. INSA de ROUEN ; 2 Thèse de Anis Ben ISHAK intitulé Selection de Variables par les machines à Vecteurs Supports pour la discrimination binaire et multiclasse en grande dimension ; 3 Arnaud Revel, Séparateur à Vaste Marge ; 4 Olivier Bousquet, Introduction aux "Support Vector Machine". Centre de Mathématiques Appliquées. Ecole Polytechnique, Palaiseau. Orsay, 15 Novembre 2001 ; 5 Marie Szafranski, Utilisation des SVM dans les applications en biologie ; 6 WikiStat, Machines à Vecteurs Supports ; 7 Alain Rakotomamonjy, Séparateurs à Vaste Marge Linéaire. INSA de Rouen. 8 A. Cornuéjols et L.Michet. Eyrolles 2002. Apprentissage Artificielle : Méthodes et Algorithme ; 9 Philippe Preux, Machines à noyau : Une très courte introduction intuitive ou les SVM décryptées ou les SVMs pour les nuls ; 10 Hélène Milhem, Support Vecteurs Machine, Institut de Mathématiques de Toulouse ; 11 Alexis Lechervy : Fouille de données et apprentissage, Cours 5 : Les supports Vecteurs Machine (SVM) linéaire ; 12 WikiStat : TP ozone : SVM ou Machine à Vecteurs Supports. 23
10 Annexe #################################################### #########INTRODUCTION AUX SUPPORTS VECTORS MACHINE: ######### #########APPLICATION AUX DONNEES MEDICALES ################## ############################################################# ####################### #####IRIS############## ####################### #DONNEES IRIRS library(e1071) data(iris) class(iris) # c est un "data.frame" length(iris) # de longueur 5 # On a 150 observations. #resumé statistique summary(iris) #le modéle est calculé avec les valeurs par défaut des paramètres #noyau (gaussien, pénalisation à 1, gamma=0.25) #Classification supervisée des "iris" modele.iris= svm(species~.,data=iris, method="c-classification", kernel="radial", cost=1, gamma=0.25) #le. indique toutes les variables autre que #Species doivent être utilisées. print(modele.iris) class(modele.iris) summary(modele.iris) #On a 51 veectors supports. #"svm.formula" "svm" #regroupe toutes les informations. #Le nombre des vecteurs supports changent si on #change les parametres: gamma et cost. #plus on diminue les valeurs de "cost" et de "gamma", #plus le nombre des vecteurs supports évoluent, pourquoi?. modele.iris$sv #Matrice des vecteurs supports modele.iris$nsv #Nombre des vecteurs supports # 8 22 21 #prevision de l échantillon d apprentissage d iris: #la prédiction sur le dataframe ou la matrice donnée. #ça renvoit un vecteur de prédictions #Prédiction de Species. predict.iris = predict(modele.iris, iris[,1:4]) print(predict.iris) class(predict.iris) #factor #comparer les valeurs predites et les valeurs réelles: Par deux manières table.iris = table(predict.iris,iris$species) print(table.iris) #Commentaire de ce tableau dans le rapport. 24
taux.iris = sum(diag(table.iris))/sum(table.iris) #taux=0.97, soit, 97% de nos predictions sont bonnes. print(taux.iris) #Visualisation des classes (couleurs) et des vecteurs supports ("+") plot(cmdscale(dist(iris[,-5])), col = as.integer(iris[,5]), pch = c("o","+")[1:150 %in% model$index +1], main="schema Illustratif avec les 3 classes des couleurs différentes") #Optimisation: connaitre la combinaison des paramètres #optimum pour construire le modèle #la fonction de "tuning" ou de calibration du modèle #La fonction tune.svm nous retourne les meilleurs paramètres pour #construire le modèle dans #le sens où ils minimisent l erreur induite par le modèle #(ou autrement dit, maximisent la performance du modèle). #Dans notre cas, il s agit de l erreur de discrimination #car la variable à expliquer est qualitative. obj = tune.svm(species~., data = iris, gamma = 2^(-7:0),cost = 2^c(-2:0)) summary(obj) ##################### #######ECOLI######### ##################### #DONNEES ECOLI donnees.ecoli = read.table("ecoli.txt", col.names=c("v1","v2","v3","v4","v5","v6","v7","v8","v9")) print(donnees.ecoli) class(donnees.ecoli) # c est un "dataframe" names(donnees.ecoli) # les noms de toutes les colonnes length(donnees.ecoli) # de longueur 9. #RESUME STATISTIQUE ECOLI summary(donnees.ecoli) #L Objectif étant de prevoir la dernière variable, la 9ième en fonction #des autres variables. #EXTRACTION DES DONNEES: ECOLI. a=c(donnees.ecoli$v1) b=c(donnees.ecoli$v2) c=c(donnees.ecoli$v3) d=c(donnees.ecoli$v4) e=c(donnees.ecoli$v5) f=c(donnees.ecoli$v6) g=c(donnees.ecoli$v7) h=c(donnees.ecoli$v8) i=c(donnees.ecoli$v9) #renvoie la premiere colonne. #c(): vecteur 25
#CLASSIFICATION SUPERVISEE D ECOLI: modele.ecoli = svm(i~.,donnees.ecoli, type="c-classification", kernel="radial",gamma = 0.5, cost=1) #toutes les variables autre que "i" print(modele.ecoli) summary(modele.ecoli) #on a 8 classes et 164 vecteurs supports. class(modele.ecoli) #PREDICTION DE LA 9ieme VARIABLE. prediction.ecoli = predict(modele.ecoli, donnees.ecoli[,-9]) print(prediction.ecoli) modele.ecoli$sv modele.ecoli$nsv #matrice des vecteurs de support. #nombre de vecteurs de support. #MATRICE DE CONFUSION POUR L ECHANTILLON D APPRENTISSAGE table.ecoli = table(prediction.ecoli,donnees.ecoli$v9) print(table.ecoli) #TAUX D ERREUR COMMIS taux.ecoli = sum(diag(table.ecoli))/sum(table.ecoli) #taux=0.90, soit, 90% de nos predictions sont bonnes. print(taux.ecoli) #fin! ##################### ########HEART######## ##################### #DONNEES STATISTIQUE HEART donnees.heart = read.table("heart.txt") attach(donnees.heart) print(donnees.heart) class(donnees.heart) #C est un "data.frame" length(donnees.heart) #14 #RESUME STATISTIQUE HEART summary(donnees.heart) #EXTRACTION DES DONNEES HEART aa=c(donnees.heart$v1) bb=c(donnees.heart$v2) cc=c(donnees.heart$v3) dd=c(donnees.heart$v4) ee=c(donnees.heart$v5) ff=c(donnees.heart$v6) gg=c(donnees.heart$v7) hh=c(donnees.heart$v8) ii=c(donnees.heart$v9) jj=c(donnees.heart$v10) 26
kk=c(donnees.heart$v11) ll=c(donnees.heart$v12) mm=c(donnees.heart$v13) nn=c(donnees.heart$v14) #L objectif etant le même, prevoir la 9ieme variable en fonction des autres. #CLASSIFICATION SUPERVISEE de HEART #On prend un noyau radial. modele.heart = svm(ii~.,data=donnees.heart, type="c-classification",kernel="radial", gamma=0.05,cost=3) #toutes les variables autre que "i" print(modele.heart) summary(modele.heart) #On a 2 classes et 260 vectors supports. class(modele.heart) #"svm.formula" "svm" #PREDICTION HEART prediction.heart = predict(modele.heart, donnees.heart[,-9]) print(prediction.heart) #matrice des vecteurs de support. modele.heart$sv #nombre de vecteurs de support partagé en 2 classes: 154 et 85 modele.heart$nsv #MATRICE DE CONFUSION POUR L ECHANTILLON D APPRENTISSAGE table.heart = table(prediction.heart,ii) print(table.heart) #TAUX D ERREUR GLOBAL taux.heart = sum(diag(table.heart))/sum(table.heart) print(taux.heart) #les prèdictions sont bonnes à 100%. #fin! 27