Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez 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. Data Science avec Microsoft Azure
  3. Support Vector Machine
Extrait - Data Science avec Microsoft Azure Maîtrisez le Machine Learning sur Cortana Intelligence Suite
Extraits du livre
Data Science avec Microsoft Azure Maîtrisez le Machine Learning sur Cortana Intelligence Suite 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 classifieurs linéaires par la maximisation de la marge qui sépare deux classes de données. Justement, 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 et le théorème de Mercer,

  • une réalisation d’expériences Azure ML sur deux exemples. Le premier exemple pour la réalisation d’un modèle pour la détection de fraudes de cartes de crédit...

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 apportée par cet algorithme, cette section donne une explication intuitive en se basant sur des exemples.

Dans la figure 9-1 ci-dessous, deux ensembles, des carrés et des cercles, sont représentés sur quatre repères en deux dimensions.

images/09EPS01.png

Figure 9-1 : exemple de séparateurs des carrés et des cercles

Supposons que les carrés et les cercles vides forment la base d’apprentissage et que les carrés et les cercles noirs (pleins) sont les données futures.

Sans prendre en compte les données futures (les carrés et les cercles pleins), le modèle représenté par la droite images/eq320.PNG dans chacun des 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 pas le même...

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 la classe des exemples négatifs. Une fois que l’hyperplan séparateur est trouvé, pour déterminer la classe d’appartenance d’un point images/eq336.PNG, le SVM utilise le vecteur normal à l’hyperplan images/eq322.PNG et une constante images/eq325.PNG comme suit :
Si images/eq337.PNG alors images/eq336.PNG est positif.
Si images/eq338.PNG alors images/eq336.PNG est négatif.
On remplace images/eq339.PNG et on obtient :
images/eq340.PNG, pour les futurs points images/eq336.PNG positifs
images/eq341.PNG, pour les futurs points images/eq336.PNG négatifs
Avec les deux inéquations précédentes, déterminer la classe d’un point images/eq336.PNG revient à étudier le signe de la quantité images/eq342.PNG. S’il est positif, alors images/eq336.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/eq336.PNG est déterminée par :
images/eq343.PNG
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 est basée sur les deux inconnues images/eq322.PNG et images/eq344.PNG. L’objectif du reste de cette...

Données non linéairement séparables

Jusqu’à présent dans ce chapitre, le SVM tel qu’il a été présenté traite uniquement les données qui sont linéairement séparables. Ainsi, la figure 9-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, une solution existe et elle consiste en l’application d’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 9-5 suivante montre un exemple très simple de données non linéairement séparables. En effet, aucune droite ne pourra séparer correctement les cercles d’un côté et les triangles de l’autre côté.

images/09EPS05.png

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

Les données...

Détecter les fraudes de cartes de crédit

Cet exemple concerne la réalisation d’une expérience Azure ML 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

Un jeu de données issu du site kaggle.com sera utilisé. 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 disponible en téléchargement sur le site : https://www.kaggle.com/eikedehling/exploring-class-imbalance-resampling-and-weights/data

Ce jeu de données est défini par 28 variables anonymes images/eq408.PNG qui sont les résultats d’une ACP réalisée sur les données d’origines, 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 : c’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.

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 ces cas-là, c’est l’utilisation de la courbe Précision/Recall qui sera recommandée.

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

Ce jeu de données...

Détecter la présence d’une maladie

Dans ce deuxième exemple sur les SVM, un jeu de données contenant des informations médicales sur un ensemble de personnes est utilisé. L’expérience réalisée consiste à prédire la présence ou non d’une maladie cardiaque des coronaires à partir de certaines informations sur un patient. Deux SVM sont appliqués et comparés sur ce jeu de données. Un SVM classique et un SVM avec une fonction Kernel.

1. Définition des données médicales

Les données utilisées sont le résultat d’un suivi médical sur sept ans de 609 hommes. Pour chaque homme sont associées 12 variables, une variable à prédire et 11 variables explicatives. Bien sûr, dans ce jeu de données d’apprentissage et de test, la variable à prédire est également renseignée. Voici la définition de ces 12 variables :

  • id : identifiant unique d’un homme.

  • chd : la variable à expliquer. Cette variable prend la valeur 1 pour indiquer que la maladie est présente, sinon, elle prend la valeur 0.

  • cat : si elle vaut 1, alors la catécholamine a été détectée élevée. Sinon elle vaut 0.

  • age : indique l’âge d’un homme.

  • chl : indique le taux de cholestérol.

  • smk : elle vaut 1 si l’individu est fumeur, elle vaut 0 sinon.

  • ecg : si elle vaut 1, alors un électrocardiogramme anormal a été réalisé sur l’individu, elle vaut 0 sinon.

  • dbp : indique la pression artérielle diastolique.

  • sbp : indique la pression artérielle systolique.

  • hpt : elle vaut 1 pour indiquer la présence d’une forte pression sanguine chez l’individu, sinon elle vaut 0.

  • ch : le produit des deux variables images/eq409.PNG. Cette variable vaut 1 si l’individu a présenté un niveau élevé de catécholamine et une forte pression sanguine. Elle vaut 0 si l’individu n’a présenté ni un niveau élevé de catécholamine ni une forte pression sanguine.
  • cc : le produit des deux variables images/eq410.PNG. Cette variable rapporte donc le niveau de cholestérol uniquement pour les hommes ayant présenté un niveau élevé de catécholamine....

Conclusion

L’algorithme de 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 donner au lecteur une compréhension intuitive de l’objectif principal de ces algorithmes. 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. Ce chapitre s’est terminé par deux exemples de SVM mis en œuvre dans Azure ML. Le premier exemple a montré comment utiliser un SVM pour prédire les fraudes de cartes de crédit. Le deuxième exemple quant à lui, a montré comment utiliser un SVM avec une fonction Kernel pour prédire la présence ou non d’une maladie cardiaque des coronaires chez un individu.