Ricco Rakotomalala
Université Lumière Lyon 2
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 1
Plan
1. Classement binaire – Séparation linéaire
2. Maximisation de la marge (I) – Formulation initiale
3. Maximisation de la marge (II) – Formulation duale
4. Cas de la séparation imparfaite – Soft Margin
5. Fonction noyau – Séparation non linéaire
6. Calcul des probabilités d’affectation
7. Sélection de variables
8. Extension aux problèmes multi classes
9. Pratique des SVM – Logiciels et outils
10. Bilan – Avantages et inconvénients
11. Références bibliographiques
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 2
Construction d’un hyperplan séparateur
DISCRIMINATION LINÉAIRE
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 3
Discrimination binaire Apprentissage supervisé : Y = f(x1,x2,…,xp ; ) dans un cadre
Problème linéairement séparable binaire c.-à-d. Y {+, -} ou Y {+1, -1}
10
x1 x2 y 9
1 3 -1 8
2 1 -1 7
4 5 -1 6
6 9 -1
x2
5
8 7 -1 4
5 1 1 3
7 1 1 2
9 4 1 1
12 7 1 0
0 2 4 6 8 10 12 14
13 6 1 x1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 4
Recherche de la solution Une fois la « forme » de la fonction de séparation choisie, il faut
« optimale » choisir une solution parmi l’infinité de solutions possibles.
10
8
Deux questions clés toujours en « machine learning » :
7
(1) Choisir la forme de la séparation (‘’representation bias’’ ou
6
‘’hypothesis bias’’) choix de famille de fonction
x2
4
(2) Privilégier une solution parmi l’ensemble des solutions possibles
3
2
(‘’preference bias’’) revient souvent à définir un critère à
1 optimiser
0
0 2 4 6 8 10 12 14
x1
10
Exemple : Analyse 8
discriminante linéaire x2 6
4
La droite de séparation est à mi-chemin entre les 3
1
distance de Mahalanobis. 0
0 2 4 6 8 10 12 14
x1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 5
Première formulation
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 6
Principe de la maximisation Hyperplan optimal doit maximiser la distance entre la frontière
de la marge de séparation et les points de chaque classe qui lui sont le plus
Présentation intuitive proche [HTF, page 132]
8
2
• La marge maximale est
7
égale à
6
x2
1
• Plusieurs zones sont définies dans l’espace de
0 représentation
0 2 4 6 8 10 12 14
x1 f(x) = 0, on est sur la frontière
f(x) > 0, on classe « + »
f(x) < 0, on classe « - »
f(x) = +1 ou -1, on est sur les droites délimitant
Ricco Rakotomalala des vecteurs de support
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 7
Maximisation de la marge Maximiser la marge revient
Formulation mathématique 2
à minimiser la norme du max min
vecteur de paramètres
Sous contrainte : • Les contraintes indiquent que tous les points sont du
bon côté, au pire ils sont sur la droite définissant les
yi f ( xi ) 1, i 1, , n vecteurs de support.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 8
Maximisation de la marge Nous utilisons le SOLVEUR pour résoudre notre
Un exemple jouet sous EXCEL (!) problème d’optimisation.
beta.1 beta.2 beta.0
0.667 -0.667 -1.667
(p + 1) cellules variables
n° x1 x2 y f(x) f(x)*y
1 1 3 -1 -3 3
2 2 1 -1 -1 1
3 4 5 -1 -2.33333333 2.33333333 Contraintes saturées : 3 points
4 6 9 -1 -3.66666667 3.66666667
5 8 7 -1 -1 1 supports à l’issue de l’optimisation
6 5 1 1 1 1 (n°2, 5 et 6)
7 7 1 1 2.33333333 2.33333333
8 9 4 1 1.66666667 1.66666667
9 12 7 1 1.66666667 1.66666667
10 13 6 1 3 3
0.667 x1 0.667 x2 1.667 0
Norme.Beta 0.943 12
10
n = 10 contraintes 8
Cellule cible à 6
définir ||||
x2
4
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 9
Première formulation
Commentaires
beta.1 beta.2 beta.0
0.667 -0.667 -1.667
x1 x2 y f(x) prediction
1 3 -1 -3 -1
2 1 -1 -1 -1
4 5 -1 -2.3333 -1
Règle de classement pour un
0 yˆ i* 1 6 9 -1 -3.6667 -1
coefficients estimés ̂ j 7
9
1
4
1
1
2.33333
1.66667
1
1
12 7 1 1.66667 1
13 6 1 3 1
première écriture (2) Cette écriture ne met pas en évidence la possibilité d’utiliser des
« primale » fonctions « noyau » qui permettent d’aller au-delà du cadre des
classifieurs linéaires
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 10
Expression duale du problème d’optimisation
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 11
Expression duale Un problème d’optimisation possède une forme duale si on
Passage au Lagrangien évolue dans un espace convexe. Ce qui est le cas. On passe
alors par le Lagrangien.
1 2
min
,0 2
Le problème initial…
s.c. yi ( xiT 0 ) 1, i 1, , n
i yi xiT 0 1
n
LP , 0 ,
…devient sous sa forme 1 2
duale 2
i 1
Où i sont les multiplicateurs de Lagrange
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 12
Expression duale En introduisant les informations issues de l’annulation des dérivées
Optimisation partielles du Lagrangien, on obtient une optimisation ne dépendant que
des multiplicateurs
i 1 2 i 1 i '1 xi , xi ' xij xi ' j
j 1
Sous
i 0, i
n
• i > 0 vont définir les points importants c.à-
i yi 0
contrainte :
d. les points supports
i 1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 13
Exemple numérique Toujours avec le SOLVEUR, essayons de résoudre
notre problème d’optimisation.
Traitements sous Excel
La matrice <xi,xi’> est
Seuls les points supports présentent une
Cellules variables i appelée matrice de Gram
« pondération » i non-nulle (n°2, 5 et 6)
i i ' yi yi ' xi , xi '
n° x1 x2 y alpha y*alpha n° 1 2 3 4 5 6 7 8 9 10
1 1 3 -1 0 0 1 0 0 0 0 0 0 0 0 0 0
2 2 1 -1 0.33333 -0.3333 2 0 0.6 0 0 0.9 -1.6 0 0 0 0
3 4 5 -1 0 0 3 0 0 0 0 0 0 0 0 0 0
4 6 9 -1 0 0 4 0 0 0 0 0 0 0 0 0 0
5 8 7 -1 0.11111 -0.1111 5 0 0.9 0 0 1.4 -2.3 0 0 0 0
6 5 1 1 0.44444 0.44444 6 0 -1.6 0 0 -2.3 5.1 0 0 0 0
7 7 1 1 0 0 7 0 0 0 0 0 0 0 0 0 0
8 9 4 1 0 0 8 0 0 0 0 0 0 0 0 0 0
9 12 7 1 0 0 9 0 0 0 0 0 0 0 0 0 0
10 13 6 1 0 0 10 0 0 0 0 0 0 0 0 0 0
n
i 1
i LD 0.44444 Racine 0.943
i 1 i '1
i y yi ' xi , xi ' 0.889
i' i
n n
Fonction objectif LD()
i 1 i '1
i i' i y yi ' xi , xi ' 0.943
n
y i i 0
N’oublions pas que la 2
i 1
marge est égale à
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 14
Des points supports aux Puisque les expressions primales et duales sont deux
L n n
A partir de la dérivée partielle du Lagrangien i yi xi 0 i yi xi
par rapport à i 1 i 1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 15
Des points supports aux coefficients de l’hyperplan (II)
Exemple numérique
-1.6667
beta.0 -1.6667
-1.6667
1 yi xiT
0
yi
1 ( 1) 0.667 2 ( 0.667) 1 Le résultat est le même quel que soit le
( 1) point support utilisé.
1.6667
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 16
Classement d’un individu
Utilisation des points supports pour le classement des individus.
supplémentaire (I) Cette formulation sera fondamentale pour l’utilisation des
Utilisation des points supports fonctions « noyau ».
f ( x) xT 0
La fonction de classement peut s’écrire en n
i yi xi , x 0
fonction des coefficients ou des i 1 S est l’ensemble des points
multiplicateurs i ' yi ' xi ' , x 0 supports. Ce sont les seuls à avoir
i 'S
un poids i non nul.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 17
Classement d’un individu supplémentaire (II)
Exemple numérique
n° x1 x2 y f(x) prediction
1 1 3 -1 -3.000 -1
2 2 1 -1 -1.000 -1
3 4 5 -1 -2.333 -1
4 6 9 -1 -3.667 -1
5 8 7 -1 -1.000 -1
6 5 1 1 1.000 1
7 7 1 1 2.333 1
8 9 4 1 1.667 1
9 12 7 1 1.667 1
10 13 6 1 3.000 1
Vecteurs de support
n° x1 x2 y alpha
Utilisation des 3 2 2 1 -1 0.333
points supports. 5 8 7 -1 0.111
6 5 1 1 0.444
Beta.0 -1.667
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 18
Formulation duale
Commentaires
2. Elle met mieux en lumière le rôle des points supports avec les pondérations i
3. Elle met en lumière également le rôle fondamental du produit scalaire <xi,xi’> dans les
4. Dans les très grandes dimensionnalités (‘’p’’ très élevé, ‘’n’’ relativement faible –
traitement d’images, text mining), cette écriture rend les calculs plus simples pour les
techniques d’optimisation
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 19
Cas de la séparation imparfaite
SOFT MARGIN
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 20
‘’Slack variables’’ La séparation parfaite est une vue de l’esprit. En pratique, il
Utilisation des variables de relaxation i arrive que des individus soient du mauvais côté de la
frontière.
12
• est un vecteur de taille n
10
• i ≥ 0 matérialise l’erreur de classement pour
8
chaque observation
6 • i = 0, elle est nulle lorsque l’observation est du
bon côté de la droite « marge » associée à sa classe
x2
4
i • i < 1, le point est du bon côté de la frontière, mais
2
déborde de la droite « marge » associée à sa classe
0
0 2 4 6 8 10 12 14 • i > 1, l’individu est mal classé
-2
-4
x1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 21
Reformulation de l’optimisation Il faut pénaliser les erreurs, plus ou moins
fortement selon que l’on veuille plus ou moins
Introduction du paramètre de coût (cost parameter)
« coller » aux données d’apprentissage
(régularisation)
n
1
C i
2
min
, 0 , i 2
i 1
Formulation s.c. La tolérance aux erreurs est plus ou moins
primale yi ( x 0 ) 1 i , i 1, , n
T
i accentuée avec le paramètre C (‘’cost’’
i 0, i parameter)
Formulation s.c.
duale n
y
i 1
i i 0
0 i C , i
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 22
beta.1 beta.2 beta.0
Soft-margin - Un exemple n°
0.333
x1
-0.333
x2
-0.667
y ksi 1-ksi y*f(x)
1 1 1 -1 0.333 0.667 0.667
2 4 5 -1 0 1 1
Formulation primale 3 6 9 -1 0 1 1.667
• Minimisation de la fonction objectif en fonction des 4
5
8
7
7
1
-1
-1
0.667 0.333
2.333 -1.333
0.333
-1.333
et 6 1 3 1 2.333 -1.333 -1.333
7 5 1 1 0.333 0.667 0.667
• C est un paramètre que l’on a fixé à C = 5 8 13 6 1 0 1 1.667
9 9 4 1 0 1 1
Le choix de C constituera un enjeu 10 12 7 1 0 1 1
important en pratique C 5
Fonc.Obj 30.1111
20
8
• i = 0 : Le point est du bon côté de sa droite marge
2
5
6 9 • i ≥ 1 : Le point est du mauvais côté de la frontière
1
(on observe 2 individus mal classés)
5
0
0 2 4
7
6 8 10 12 14 16
• 0 < i < 1 : le point est du bon côté de la frontière,
mais déborde de la droite « marge » associée à sa
-5
x1 classe
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 23
L’astuce du noyau (‘’kernel trick’’)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 24
Changement de représentation En réalisant les transformations de variables adéquates, on
Transformation de variables peut rendre linéairement séparable un problème qui ne l’est
pas dans l’espace initial.
n° x1 x2 y n° z1 z2 y
1 4 7 -1 1 16 28 -1
2 7 8 -1 2 49 56 -1
3 5.5 6 -1 3 30.25 33 -1
4 6 7 -1 4 36 42 -1
z1 x12
5 7.5 6.5 -1 5 56.25 48.75 -1
6 5.5 5 1 6 30.25 27.5 1 z 2 x1 x2
7 4 6 1 7 16 24 1
8 7 5.5 1 8 49 38.5 1
9 8.5 6 1 9 72.25 51 1
10 9 6.5 1 10 81 58.5 1
8.5 63
8 58 Mais démultiplier
53
7.5 « physiquement » les
7 48
43
variables intermédiaires
z2 = x1.x2
6.5
dans la base est coûteux,
x2
38
6
33
5.5
28
sans être sûr d’aboutir à la
5
23 bonne transformation.
4.5 18
4 13
2 4 6 8 10 10 30 50 70 90
x1 z1 = x1^2
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 25
Les fonctions « noyau » Le produit scalaire entre les vecteurs individus tient une
Appliquées aux produits scalaires place importante dans les calculs (formulation duale). Or
elles peuvent tirer profit des fonctions « noyau »
On peut trouver une fonction La principale conséquence est que l’on calcule
K(.), dite fonction noyau, tel simplement le produit scalaire <xi,xi’>, et on ne
que transforme que ce résultat avec la fonction noyau.
K ( xi , xi ' ) ( xi ), ( xi ' )
On ne manipule que les 2 variables initiales pour les calculs. Mais on se
projette bien dans un espace à 3 dimensions !
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 26
Noyau polynomial Produit scalaire entre deux
u (4,7)
individus (vecteurs) u et v dont u , v 4 2 7 5 43
Exemples v (2,5)
voici les valeurs
Transformation (2)
(u ) (1,5.7,9.9,16,49,39.6)
( x) (1, 2 x1 , 2 x2 , x , x , 2 x1 x 2) (u ), (v) 1936
(v) (1,2.8,7.1,4,25,14.1)
2 2
1 2
K 2 (u , v) 1 u , v
Fonction noyau
(1 43) 2 1936
2
correspondante (2)
On se positionne dans un espace à 5 dimensions
dans cette configuration.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 27
Formulation duale
Utilisation des fonctions « noyau » (fonctions de type « noyau »)
n
1 n n
max LD i i i ' yi yi ' K xi , xi '
2 i 1 i '1
i 1
Formulation duale
s.c.
avec « soft margin »
n
y
i 1
i i 0
0 i C , i
PMML)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 28
Quelques fonctions noyau Le paramétrage est le principal enjeu lorsqu’on
souhaite les mettre en œuvre sur nos données.
Les plus usitées dans les logiciels
Sans oublier le ‘’cost parameter’’ C.
(ex. Package Scikit-learn pour Python - SVC)
K (u , v) coef0 u, v
degree coef0 = 0 et degree = 1, nous avons le
Noyau
« noyau linéaire »
polynomial
1
Noyau RBF (radial
K (u , v) exp u v
2 choisissent par défaut (p :
basis function)
nombre de variables) p
Il y a un peu de polysémie dans les paramètres, mais ils ont été popularisés par la fameuse
librairie LIBSVM intégrée dans de nombreux outils de Data Mining (Scikit-Learn pour Python,
e1071 pour R, Tanagra, etc.)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 29
Calcul des probabilités d’appartenance aux classes
Transformer l’output des SVM en probabilités
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 30
Probabilités d’appartenance aux classes
Output des SVM = première version des scores (scores bruts)
(voir « Normalisation des scores »)
-1
la réponse -2
-3
-1 0 1 2 3 4 5 6 7
negative positive
|f(x)| est déjà une indication. Elle permet de Mais dans de nombreux domaines, on a besoin
classer les individus selon leur degré de d’une probabilité d’appartenance (ex.
positivité (ex. scoring) interprétation, utilisation d’une matrice de coûts,
comparaison d’outputs avec d’autres méthodes,
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ etc.) 31
Méthode de Platt
Estimation par le maximum de vraisemblance
1
P(Y 1 / x)
1 exp[ f ( x)]
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 32
Méthode de Platt Revenons sur notre tout
Un exemple premier exemple (Page 9)
1
P(Y 1 / x)
1 exp[(1.32 f ( x) 0.02)]
beta.1 beta.2 beta.0
0.667 -0.667 -1.667
n° x1 x2 y f(x) P(y=1/x)
1 1 3 -1 -3.000 0.019
2 2 1 -1 -1.000 0.214
3 4 5 -1 -2.333 0.045
4 6 9 -1 -3.667 0.008
5 8 7 -1 -1.000 0.214
6 5 1 1 1.000 0.792
7 7 1 1 2.333 0.957 12
8 9 4 1 1.667 0.902
9 12 7 1 1.667 0.902 10 0.008
10 13 6 1 3.000 0.982
8 0.214 0.902
a 1.32
b 0.02 6 0.045
0.982
0.019
x2
4
Les probabilités sont cohérentes avec la 0.902
2
position du point et son degré
0.214
d’éloignement par rapport à la frontière. 0
0.792 6 0.957
0 2 4 8 10 12 14
-2
-4
x1
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 33
Recherche des descripteurs « pertinents »
SÉLECTION DE VARIABLES
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 34
Méthodes externes Techniques de sélection qui ne sont pas en relation directe avec
Filtrage et wrapper la méthode d’apprentissage
sens large.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 35
Méthode interne (intégrée, embedded) 2 axes clés : mesurer la contribution d’une
variable, monter un algorithme autour de ce
Critère de maximisation de la marge
critère [ABE, page 192]
Stratégie de recherche 1. Calculer 0, la marge initiale avec l’ensemble des variables
backward du « meilleur » 2. Trouver j* tel que (j*)||||2 est minimum, la mettre de côté
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 36
Quand la variable cible possède K (K > 2) modalités
PROBLÈMES MULTI-CLASSES
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 37
SVM Multiclasses L’approche SVM est formellement définie pour les
Approche ‘’one-against-rest’’ problèmes à deux classes, comment l’étendre
(simplement) à des problèmes à K classes avec
Y{y1,…,yK} ?
• Construire tour à tour K modèles discriminants avec la modalité yk contre les autres
(Y’{yk=+1,y(k)=-1}). Nous obtenons K fonctions de décision fk(x)
• En classement, prédire la classe présentant le score le plus élevé c.-à-d.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 38
SVM Multiclasses
Approche « one vs. one » (pairwise)
sign f
K
Dk(x) va fournir le ‘’#votes’’ de la modalité yk
Dk ( x) k, j ( x)
Sachant que fj,k(x) = fk,j(x) j k , j 1
• Remarque : en cas d’ex-aequo (2 classes ou plus ont le même nombre de votes), on procède à la
somme des scores fk,j(x) et on prend le max
• Caractéristiques : K(K-1)/2 apprentissages à effectuer, mais avec des ensembles de données de
taille réduite
• Avantages : moins de problème de déséquilibre des classes, les scores sont mieux calibrés
• Inconvénients : temps de calcul quand K augmente
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 39
Logiciels et packages – Paramétrage (Python, R et Tanagra)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 40
Python
scikit-learn – SVC
#importation des données
import pandas
dtrain = pandas.read_table("ionosphere-train.txt",sep="\t",header=0,decimal=".")
print(dtrain.shape)
y_app = dtrain.as_matrix()[:,32]
X_app = dtrain.as_matrix()[:,0:32]
#importation de la classe de calcul
from sklearn.svm import SVC
svm = SVC() #instanciation de l’objet
#affichage des paramètres (paramètres par défaut ici c.-à-d. noyau ‘rbf’)
#pas de standardisation (scale) des données apparemment
print(svm)
#apprentissage – construction du modèle prédictif
svm.fit(X_app,y_app)
#importation des données test
dtest = pandas.read_table("ionosphere-test.txt",sep="\t",header=0,decimal=".")
print(dtest.shape)
y_test = dtest.as_matrix()[:,32]
X_test = dtest.as_matrix()[:,0:32]
#prédiction sur l’échantillon test
y_pred = svm.predict(X_test)
#evaluation : taux d'erreur = 0.07
from sklearn import metrics
err = 1.0 - metrics.accuracy_score(y_test,y_pred)
print(err)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 41
Python Scikit-learn propose un mécanisme de de recherche des
scikit-learn - GridSearchCV paramètres optimaux en validation croisée. L’échantillon test
n’est pas mis à contribution, il garde son statut d’arbitre
#classe grille de recherche
impartial.
from sklearn.grid_search import GridSearchCV
#classifieur à utiliser
svmc = SVC()
#instanciation de la recherche
grille = GridSearchCV(estimator=svmc,param_grid=parametres,scoring="accuracy")
#lancer l'exploration
resultats = grille.fit(X_app,y_app)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 42
R
e1071 – svm() de LIBSVM
#package "e1071"
library(e1071)
#apprentissage
#standardisation automatique des données, cf. paramètre scale
m1 <- svm(class ~ ., data = dtrain)
#affichage
print(m1)
#prediction
y1 <- predict(m1,newdata=dtest)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 43
« e1071 » propose également (comme scikit-learn) un outil
R pour la recherche automatique des meilleurs paramètres
e1071 – tune()
#grille de recherche des meilleurs paramètres en validation croisée « cross »
set.seed(1000) #pour obtenir à chaque lancement le même résultat
obj <- tune(svm, class ~ ., data = dtrain, ranges =
list(kernel=c('linear','polynomial','radial', 'sigmoid'), cost =
c(0.1,0.5,1.0,2.0,10)), tunecontrol = tune.control(sampling="cross"))
#affichage
print(obj)
#affichage
print(m2)
#prédiction
y2 <- predict(m2,newdata=dtest)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 44
Tanagra SVM est une implémentation ad hoc. Sa spécificité est de
produire un modèle explicite lorsqu’on utilise un noyau
SVM
linéaire.
SVM linéaire,
TANAGRA
fournit les j
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 45
Tanagra
C-SVC est importée de la (fameuse) librairie LIBSVM
C-SVC
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 46
Avantages et inconvénients des SVM
BILAN
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 47
SVM - Avantages et inconvénients
Avantages
• Capacité à traiter de grandes dimensionnalités (#variables élevé)
• Robuste même quand le rapport ‘’#observations / #variables’’ est inversé
• Traitement des problèmes non linéaires avec le choix des noyaux
• Non paramétrique
• Robuste par rapport aux points aberrants (contrôlé avec le paramètre C)
• #points supports donne une bonne indication de la complexité du problème traité
• Souvent performant dans les comparaisons avec les autres approches
• Paramétrage permet de la souplesse (ex. résistance au sur-apprentissage avec C)
Inconvénients
• Difficulté à identifier les bonnes valeurs des paramètres (et sensibilité aux paramètres)
• Difficulté à traiter les grandes bases avec #observations très élevé (capacité mémoire avec matrice de Gram – si
implémentation naïve, temps de calcul)
• Problème lorsque les classes sont bruitées (multiplication des points supports)
• Pas de modèle explicite pour les noyaux non linéaires (utilisation des points supports)
• Difficulté d’interprétations (ex. pertinence des variables)
• Le traitement des problèmes multi-classes reste une question ouverte
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 48
SVM - Extensions
Popularisé dans le classement, les SVM peuvent s’appliquer à d’autres
types de problèmes :
Des fonctions « noyau » spécifiques à des domaines sont développées (text mining, image
mining, reconnaissance de la parole,…). Il faut qu’elles soient adaptées à la notion de
similarité entre observations dans le domaine.
L’approche SVM est très proche de la recherche, fertile en nouveautés. Toutes ne sont pas
toujours disponibles dans les outils qui nous sont accessibles.
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 49
Bibliographie, tutoriels
RÉFÉRENCES
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 50
Bibliographie
[ABE] Abe S., « Support Vector Machines for Pattern Classification », Springer, 2010 ; l’ouvrage dans sa totalité, en
particulier les chapitres 2 et 3.
[BLU] Biernat E., Lutz M., « Data Science : fondamentaux et études de cas », Eyrolles, 2015 ; chapitre 13.
[BIS] Bishop C.M., « Pattern Recognition and Machine Learning », Springer, 2006 ; chapitre 7.
[CST] Cristianini N., Shawe-Taylor J., « Support Vector Machines and other kernel-based learning methods »,
Cambridge University Press, 2000.
[HTF] Hastie T., Tibshirani R., Friedman J., « The elements of Statistical Learning - Data Mining, Inference and
Prediction », Springer, 2009 ; chapitres 4 et 12.
… et les très nombreux supports de cours que l’on trouve sur le web…
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 51
Tutoriels
Chang C.-C., Lin C.J., « LIBSVM: a library for support vector machines », in ACM Transactions on Intelligent Systems and
Technology, 2(27), p. 1-27, 2011. La librairie LIBSVM est présente dans de nombreux logiciels, elle fait figure de référence.
Tutoriel Tanagra, « SVM – Comparaison de logiciels », oct. 2008 ; comparaison des solutions proposées par plusieurs logiciels
(Tanagra, Orange, RapidMiner, Weka) sur un fichier à grande dimension (31809 descripteurs).
Tutoriel Tanagra, « Classifieurs linéaires », mai 2013 ; étude du comportement de différents classifieurs linéaires, dont les
SVM. Utilisation des logiciels Tanagra, R, Knime, Orange, Rapidminer et Weka. Les représentations graphiques sont
particulièrement édifiantes.
Tutoriel Tanagra, « La librairie LIBCVM (Core Vector Machine) », mai 2012 ; extension de LIBSVM, adaptée au traitement des
grandes bases de données (en nombre d’observations).
Tutoriel Tanagra, « Le format de fichier ‘’sparse’’ », mai 2012 ; manipulation du format de fichier popularisé par les principales
librairies SVM (libsvm, libcvm, svmlight).
Tutoriel Tanagra, « Support Vector Regression », avril 2009 ; SVM dans le cadre de la régression sous Tanagra et R (e1071).
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 52