Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Le Machine Learning avec Python
  3. Support Vector Machine
Extrait - Le Machine Learning avec Python De la théorie à la pratique
Extraits du livre
Le Machine Learning avec Python De la théorie à la pratique
7 avis
Revenir à la page d'achat du livre

Support Vector Machine

Objectif du chapitre

L’algorithme SVM fut introduit par Vapnik en 1995 et il est basé sur la théorie de Vapnik-Chervonenkis. Théoriquement, les SVM sont une généralisation des modèles de classification linéaires. Les SVM ont été appliqués avec beaucoup de succès dans divers domaines et spécialement dans le domaine de la reconnaissance de formes à partir d’images et le domaine de la bio-informatique.

Dans la littérature francophone, l’algorithme SVM est le plus souvent nommé « algorithme séparateur à vaste marge ». En effet, les algorithmes SVM se distinguent de la plupart des autres algorithmes par la maximisation de la marge qui sépare deux classes de données. Ce chapitre tente d’expliquer les SVM d’un point de vue intuitif, mais aussi analytique, tout en mettant l’accent sur cet aspect de maximisation de la marge séparatrice.

À la fin de ce chapitre, le lecteur aura abordé :

  • une compréhension intuitive de l’algorithme SVM,

  • les SVM du point de vue théorique et analytique,

  • la notion de fonction noyau,

  • le théorème de Mercer,

  • l’application de l’algorithme SVM pour la réalisation d’un modèle de détection de fraudes de cartes de crédit à partir d’un jeu de données...

Le SVM du point de vue géométrique

Les SVM sont des algorithmes supervisés qui, au début, ont été développés pour résoudre des problèmes de classification binaire. Ils ont été généralisés pour prédire des variables quantitatives.

Dans le cas de la classification binaire, les SVM recherchent un hyperplan discriminant de marge optimale entre deux classes. Pour comprendre l’idée véhiculée par cet algorithme, cette section donne une explication intuitive basée sur des illustrations.

Dans la figure ci-dessous, deux ensembles sont représentés sur quatre graphiques à deux dimensions : le premier est composé de neuf carrés vides et le deuxième ensemble est composé de neuf cercles vides.

images/11EPS01.PNG

Figure11-1 : exemples de modèles linéaires

Supposons que ces carrés et ces cercles vides forment la base de données d’apprentissage et que les carrés et les cercles noirs (pleins) sont les données futures, des données encore inconnues au moment de la phase d’apprentissage.

Sans prendre en compte ces données futures, le modèle représenté par la droite (A) dans chacun des quatre repères sépare toutes les données d’apprentissage de façon correcte. Cependant, des différences existent entre ces quatre modèles. En effet, bien qu’ils soient égaux vis-à-vis des données d’apprentissage, ils n’ont...

Le SVM du point de vue analytique

L’objectif de l’algorithme SVM est de trouver l’hyperplan qui sépare en deux classes avec la marge maximale les données de la base d’apprentissage. Cette section montre la démarche analytique pour atteindre cet objectif.

Supposons que les deux classes à séparer sont la classe des exemples positifs et celle des exemples négatifs. Nous avons vu qu’une fois l’hyperplan séparateur trouvé, pour déterminer la classe d’appartenance d’un point images/06eq06a.PNG, le SVM utilise une constante C et le vecteur images/11eq01.PNG, qui est un vecteur normal à l’hyperplan, comme suit :
Si images/11eq04.PNG , alors images/11eq09a.PNG est positif.
Si images/11eq04a.PNG , alors images/11eq09a.PNG est négatif.

Si nous remplaçons B par -b, nous obtenons :

images/11eq05.PNG, pour les futurs points images/11eq09a.PNG positifs
images/11eq05a.PNG, pour les futurs points images/11eq09a.PNG négatifs
Avec les deux inéquations précédentes, déterminer la classe d’un point images/11eq09a.PNG revient à étudier le signe de la quantité images/11eq06.PNG. S’il est positif, alors images/11eq09a.PNG appartient à la classe des points positifs, sinon il appartient à la classe des points négatifs. En résumé, la classe d’un point images/11eq09a.PNG est déterminée par :

images/11eq07.PNG (1)

L’équation (1) constitue donc la règle de décision que le SVM utilise pour la prédiction de la classe d’appartenance des futurs points. Cette règle...

Données non linéairement séparables

Jusqu’à présent, dans ce chapitre, l’algorithme SVM tel qu’il a été présenté traite uniquement des données linéairement séparables. Ainsi, la figure 11-2 a montré que pour trouver la classe d’appartenance d’un nouveau point, le modèle SVM procède à la projection de ce point sur l’axe portant le vecteur normal de l’hyperplan qui sépare linéairement les données de la base d’entraînement.

Dans la plupart des problèmes posés dans la vraie vie, les données sont rarement linéairement séparables. Pour contourner ce problème, il existe une solution consistant à appliquer une transformation sur les données.

L’idée de cette transformation est de passer par un espace intermédiaire dans lequel les données sont linéairement séparables et dans lequel le SVM peut être appliqué exactement comme l’ont montré les sections précédentes, puis restituer les résultats dans l’espace d’origine.

La figure suivante donne un exemple très simple de données non linéairement séparables. En effet, aucune droite ne peut séparer correctement les cercles d’un côté et les triangles de l’autre côté.

images/11EPS05.png

Figure 11-5 : exemple de données non linéairement séparables

Les données de cet exemple sont définies dans un espace à...

Détecter les fraudes de cartes de crédit

Cet exemple concerne la réalisation d’un modèle pour détecter les fraudes de cartes de crédit. Il s’agit d’entraîner un modèle sur un ensemble de données contenant des transactions saines et des transactions frauduleuses.

1. Les données des transactions de cartes de crédit

Nous allons utiliser un jeu de données issu du site kaggle.com. Il s’agit d’un dataset du monde réel contenant 284 807 transactions par carte de crédit. Parmi ces transactions, 492 représentent des fraudes. Vous trouverez ce jeu de données dans le fichier creditcard.csv sur le site https://www.kaggle.com/mlg-ulb/creditcardfraud.

Ce jeu de données est défini par vingt-huit variables anonymes V1,V2,…,V28 qui sont les résultats d’une ACP réalisée sur les données d’origine, plus trois autres variables Time, Amount et Class définies comme suit :

  • Time : représente le temps en secondes passé depuis la première transaction du dataset.

  • Amount : indique la somme d’argent concernée par la transaction.

  • Class : est la variable binaire à expliquer. Elle indique si la transaction est frauduleuse ou pas. Elle vaut 0 si la transaction est normale, sinon elle vaut 1 si la transaction est frauduleuse.

ACP est l’acronyme de l’Analyse en Composantes Principales, qui est une méthode permettant de résumer un ensemble de données. Le chapitre Les réseaux de neurones est entièrement consacré à cette méthode.

Pour des raisons de confidentialité, les données à l’origine de l’ACP ne sont pas divulguées sur le site kaggle.com.

Il faut noter d’ores et déjà que la variable Class est très mal équilibrée, car le taux des transactions frauduleuses est très faible, il est égal à 0.172 %.

Par conséquent, l’utilisation de l’indicateur AUC pour évaluer un quelconque modèle sur ce jeu de données ne sera pas appropriée. Dans ce cas, c’est l’utilisation de la courbe Précision/Recall qui sera recommandée.

Ce jeu de données a été publié dans : Andrea...

Conclusion

L’algorithme SVM est l’un des algorithmes les plus sophistiqués parmi les algorithmes d’apprentissage automatique. Les deux premières sections ont abordé les SVM par des illustrations géométriques pour fournir au lecteur une compréhension intuitive de ces algorithmes SVM. La troisième section a introduit les notions mathématiques pour expliquer le problème d’optimisation sous-jacent aux SVM. La quatrième section a abordé les aspects théoriques relatifs à la fonction noyau utilisée dans le cadre des SVM pour traiter les cas où les données ne sont pas linéairement séparables. Nous avons terminé ce chapitre avec des exemples permettant de montrer d’une part comment appliquer les SVM sur un problème en utilisant Scikit-learn, et d’autre part comment manipuler les données et régler les paramètres des SVM afin d’améliorer les performances des modèles.