Apprentissage supervis´ e et non supervis´ e TP3 : Support Vector Machines (R´ egression)
M2 SISE - Universit´e Lyon 2 - 2017/2018
Responsable : Julien Ah-Pine
1 Pr´ esentation de l’´ etude de cas
L’´etude de cas est celui des biscuits vu lors du TP1. Ce sont des donn´ees de grande dimension p > n et il s’agit d’un probl`eme de r´egression. Nous avons `a notre disposition 40 observations pour lesquelles nous savons la teneur en sucre et ´egalement les donn´ees du signal. Il faut pr´edire la teneur en sucre `a partir du signal. L’objectif est de tester le mod`ele svm sur ces donn´ees.
2 Lecture et decription des donn´ ees
1. Charger les donn´ees contenues dans le fichiercookie.RData `a l’aide de la commandeload.
3 R´ egression par SVM
Nous allons utiliser la librairiee1071qui donne une interfaceR`a libsvm, une performante librairie pour les svm d´evelopp´ee en C++. Rappelons que le probl`eme d’optimisation du svm pour la r´egression se formalise de la fa¸con suivante :
min
a0,a∈Rp,ξ+,ξ−∈Rn 1
2kak2+cPn
i=1(ξ+i +ξi−) slc ∀i, yi−(a0+a>xi)≤+ξi+
∀i,(a0+a>xi)−yi ≤+ξi−
∀i, ξi+, ξi−≥0
o`u cest une constante positive tel un coefficient de p´enalit´e, permettant de contrˆoler l’´equilibre entre la maximisation de la marge et les erreurs.
2. Installez puis chargez la librairie e1071.
3. Entrez, ex´ecutez et commentez les commandes suivantes :
s v m _ f i t = svm ( s u c r e s ~. , d a t a = D , t y p e =" eps - r e g r e s s i o n " , k e r n e l =" l i n e a r
")
s v m _ f i t $ r e s i d u a l s
D $ s u c r e s - p r e d i c t ( svm_fit , D )
sum ( s v m _ f i t $ r e s i d u a l s ^2) / l e n g t h ( s v m _ f i t $ r e s i d u a l s ) 4. En ´etudiantsvm fit, identifiez les vecteurs supports et leur coefficient.
5. Quelles sont les valeurs par d´efaut des hyper-param`etresetc?
6. Stockez dans la variable c seq la s´equence de valeurs 1,2,10,50,100. Ecrire un programme permettant de stocker dans la variable mse c le crit`ere mse pour chaque valeur dans c seq.
Etudiez et commentez les mse obtenus pour chaque valeur dec.
1
4 Validation crois´ ee
Les r´esultats pr´ec´edents ne permettent pas d’appr´ecier l’erreur en g´en´eralisation. Nous allons pour cela utiliser la validation crois´ee d´ej`a impl´ement´ee dans la commande svm.
7. Entrez, ex´ecutez et commentez les commandes suivantes :
s v m _ f i t = svm ( s u c r e s ~. , d a t a = D , t y p e =" eps - r e g r e s s i o n " , k e r n e l =" l i n e a r
" , c r o s s =5) s v m _ f i t $ M S E
m e a n ( s v m _ f i t $ M S E )
8. Ecrire un programme permettant de stocker dans la variablemse cvl’estimation de l’erreur en g´en´eralisation selon le crit`ere mse pour chaque valeur dansc seq. Comparez mse cet mse cv et commentez.
5 Utilisation de plusieurs noyaux
L’objectif est d’´etudier les r´esultats du svm avec l’utilisation de noyaux non lin´eaires. Le noyau rbf ou gaussien est obtenu en utilisant radial `a la place de linearet le noyau polynomial en utilisant poly.
9. Pour chaque noyau pr´e-cit´e quels sont les param`etres par d´efaut utilis´es par la commandesvm? 10. Utilisez les commandes des section pr´ec´edentes afin d’´ecrire un programme permettant de d´eterminer les variables mse c et mse cv avec un noyau rbf. Comparez mse c et mse cv et commentez.
11. Mˆeme question mais avec un noyau polynomial.
6 Optimisation des hyper-param` etres
Pour contrˆoler les performances du svm, nous avons vu pr´ec´edemment que nous pouvions “jouer”
avec les valeurs de l’hyper-param`etre c et avec le type de noyau utilis´e. Il existe un autre hyper- param`etre dans le cas de la r´egression qui est la tol´erance utilis´ee dans la fonction objectif. Le but ici est de d´eterminer les meilleures couples (, c) parmi une grille de recherche (le noyau ´etant cette fois-ci fix´e).
12. Entrez, ex´ecutez et commentez les commandes suivantes : c _ s e q = c (1 ,10 ,50)
e p s _ s e q = c ( 0 . 0 5 , 0 . 1 , 0 . 5 )
s v m _ g r i d _ s e a r c h = t u n e ( m e t h o d = svm , k e r n e l = " l i n e a r " , s u c r e s ~. , d a t a = D , r a n g e s = l i s t ( e p s i l o n = eps_seq , c o s t = c _ s e q ) )
p r i n t ( s v m _ g r i d _ s e a r c h ) p l o t ( s v m _ g r i d _ s e a r c h )
13. Diff´erentes valeurs d’un noyau param´etrique peuvent ´egalement ˆetre donn´ees en entr´ee de la commande tune. Ecrivez un programme permettant d’´etudier un noyau polynomial avec les valeurs du param`etre d(le degr´e) appartenant `a la s´equence 1,2,3,4.
2