Maître de Conférences en Informatique à l'Université d'Angers
Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.
Cette page fait partie du cours de polytech PeiP1 et 2 Bio
Les SVM (Support Vector Machines) où Machines à Vecteur de Support sont en fait un classifieur linéaire dit à large marge.
On rappelle que le classifieur permet de séparer (classer) des données lorsque l'on connaît déjà les classes existantes. On parle alors de classification Supervisée par opposition à la classification Non Supervisée pour laquelle on ne connaît pas le nombre de classes.
Voici deux liens concernant des éléments théoriques liés aux SVM :
L'utilisation d'un kernel (qui est une fonction) permet de modifier l'espace initial des données et de les transposer dans un espace d'ordre supérieur :

SVM Linéaire sans Kernel

SVM Linéaire avec Kernel $x^2$
Le problème des SVM et qu'elles dépendent de beaucoup de paramètres et que la recherche des meilleurs paramètres (ceux qui donnent la meilleure prédiction) peut demander beaucoup de temps. On pourra, afin de les rechercher, utiliser la classe GridSearchCV du paquet sklearn.model_selection.
On essaye d'appliquer le classifieur SVM aux iris de Fisher afin de prédire, à partir des données des sépales ou pétales, à quelle espèce appartient l'iris : Setosa, Versicolor, Virginica .
Dans le cadre de l'apprentissage, on a tendance à séparer les données en deux sous-ensembles :
On se trouve confronté ici à un dilemme du même type que celui ci:
Tout ceci n'est qu'une affaire de point de vue car dans le cas où on prend la totalité des données, il est évident que de nouvelles données viendront s'ajouter par la suite qui confirmeront ou infirmeront le modèle d'apprentissage.
Pour résoudre notre problèmen on utilise la classe SVC (C-Support Vector Classification) du paquet svm.
Exercice 10.1
Tester la solution précédente avec d'autres kernels comme :
classifier = SVC(C=0.006, kernel='rbf', gamma='scale')
ou
classifier = SVC(C=1.0, kernel='poly', gamma='auto', degree=7)
Qu'obtient-on comme résultat ?
Exercice 10.2
Utiliser le jeu de données breast_cancer de Scikit-Learn et tenter de créer une SVM qui permet de différencier tumeurs malignes des tumeurs bénignes.