Classification dans des bases de données par des méthodes de

publicité
Classification dans des bases de données par des
méthodes de datamining
Yawo Eli Amesefe
Guillaume Cernier
Christophe Labrousse
Introduction
L’utilisation généralisée de l’informatique ces dernières dizaines d’années a
conduit à la constitution d’énormes bases de données, les informations étant toujours
plus précises, et facilement maintenables. C’est dans ce contexte que se sont
développées les techniques de fouilles de données, traduction française du terme
anglais datamining.
Au croisement des statistiques et de l’intelligence artificielle, ce terme
générique se compose d’outils théoriques complexes, puissants, et extrêmement
diversifiés ; et au travers d’un véritable processus de traitement, il extrait des mégabases de données des informations surprenantes, des associations insoupçonnées, des
modèles prédictifs… .
Appliquée depuis longtemps dans les banques pour prédire les clients à risque,
la fouille de donnée s’est échappée de ce carcan rigide pour envahir des domaines
aussi différents que la grande distribution ou la pharmaceutique. Elle est devenue une
des technologies, ou plutôt un des recueils de technologies, qui allie le mieux la
recherche de pointe, un fort retour sur investissement, et une grande efficacité dans le
domaine de l’aide à la décision.
Nous commencerons par étudier dans ce document, les trois méthodes les plus
utilisées actuellement à savoir les méthodes des arbres de décision, les machines à
support de vecteurs et la régression logistique.
Présentation théorique des méthodes
Les arbres de décision
Présentation
La méthode des arbres de décision consiste à réaliser la classification d’un objet selon
un ensemble de classes prédéfinies, en effectuant une suite de tests sur les attributs
décrivant cet objet. Il s’agit d’un apprentissage supervisé puisque les classes sont
connues à l’avance.
Les tests sont organisés de façon à ce que la réponse à l’un d’eux indique à quel
prochain test on doit soumettre l’objet. Ils sont donc organisés sous forme d’un arbre
dont chaque nœud correspond à un test portant sur un ou plusieurs des attributs de
l’objet, et chaque feuille de cet arbre correspond à une des classes prédéfinies.
Cette technique nécessite donc la construction d’un arbre de décision, à partir d’un
ensemble d’apprentissage S de m exemples, et d’un ensemble de classes prédéfinies
Il faut aussi trouver une mesure pour choisir, à chaque pas de test, le meilleur attribut
à tester à chaque nœud de l’arbre de décision. Ce choix est un critère central pour la
technique des arbres de décision, car il faut choisir l’attribut qui permet discrimine le
mieux les exemples d’apprentissage. Quelques mesures utilisées dans les algorithmes
d’arbres de décision sont décrites dans la section suivante.
Construction d’un arbre de décision
Formalisation du problème
Nous disposons d’un ensemble d’apprentissage S de m exemples ou objets.
On note
un de ces exemples. Cet exemple ou objet est décrit par d attributs
et appartient à une classe
Mesures pour la sélection du meilleur attribut
La mesure servant à sélectionner le meilleur attribut à tester à un nœud test doit nous
permettre de rechercher parmi les différents attributs des objets d’un ensemble
d’apprentissage, celui qui possède la plus grande corrélation avec la répartition en
classes. Nous présenterons par la suite trois mesures permettant de choisir le meilleur
attribut, il s’agit de :
•
L’entropie croisée
•
•
•
La métrique de Gini
Le critère du
Le critère de Lerman
Construction récursive de l’arbre de décision
En possession de ces outils, il faut commencer par chercher le meilleur attribut, selon
une mesure fixée, afin de construire le nœud test racine de l’arbre de décision. Une
fois cet attribut identifié, les m objets de l’ensemble d’apprentissage sont projetés
selon les valeurs prises par cet attribut.
Cette projection est représentée dans l’arbre par les branches partant du nœud test vers
les nœuds fils. Le processus est ensuite répété sur chacun des sous ensembles issus de
la projection de l’étape précédente : un meilleur attribut selon la même mesure que
précédemment est recherché parmi les attributs n’ayant pas encore servi à faire un
test.
Le processus s’arrête lorsque tous les objets d’un sous ensemble issu d’une projection
appartiennent à une même classe, ou lorsqu’un de ces sous ensembles est vide (ce qui
signifie qu’aucun objet ne prend la valeur de projection de l’attribut).
D’autre part, s’il ne reste plus d’attribut à tester, le processus s’arrête et les objets
issus de la projection sont considérés comme appartenant à la classe majoritairement
représentée.
Elagage d’un arbre trop précis
L’élagage d’un arbre de décision consiste à chercher une valeur optimale du nombre
de nœuds tests dans l’arbre afin de réduire sa complexité. En effet, une application de
l’algorithme de construction récursive de l’arbre de décision jusqu’à son terme
fabrique un arbre dont les feuilles sont pures dans le meilleur cas, avec un grand
nombre de nœuds tests et une faible cardinalité des ensembles d’objets constituant ces
feuilles.
Pour simplifier cet arbre, une technique consiste à construire complètement l’arbre de
décision puis à l’élaguer progressivement en remontant des feuilles vers la racine. On
élimine en quelques sortes les tests les moins pertinents pour faire le classement des
données, puisque les tests sont effectués à la suite sur les attributs par ordre de
pertinence, l’élagage des feuilles vers la racine se justifie. Pour arrêter l’élagage, on
utilise une mesure de qualité qui exprimera l’erreur commise après élagage de l’arbre
de décision et une mesure de sa complexité. Un exemple d’une telle mesure sera
étudiant dans les sections suivantes.
D’autre part, certains problèmes inhérents à la construction d’arbres de décision se
posent:
Jusqu’à quelle profondeur construire l’arbre ? Comment gérer les attributs à valeurs
continue (pouvant prendre un nombre infini de valeur)? Quelle mesure choisir pour la
sélection des attributs ? Comment gérer des objets possédant des valeurs nulles pour
certains attributs ?
L’algorithme C4.5
L’algorithme C4.5 est une extension de l’algorithme de construction d’arbres de
décision de base [2].
Cet algorithme utilise comme mesure de sélection du meilleur attribut, l’entropie
croisée. Etant donné une classe , et un attribut a, puis
et , les ensembles finis
des valeurs qu’elles peuvent prendre. L’entropie croisée de ! et a est donné par la
formule :
Cette formule nous vient de la théorie de l’information et peut encore s’écrire sous la
forme d’une différence d’entropies :
Avec
,
l’entropie
de ! ,
et
, l’entropie de
sachant a. C’est cette
quantité qui est la plus pertinente car elle permet de voir la probabilité conditionnelle
par rapport à la valeur de la classe.
signifie Probabilité
. Dans la pratique, ces probabilités sont
estimées par des pourcentages calculés à partir de l’ensemble d’apprentissage.
L’algorithme d’élagage consiste à construire une séquence d’arbres par suppression
successive des nœuds tests en remontant des feuilles vers la racine ; on élimine ainsi
les tests les moins pertinents pour effectuer la classification.
Notons cette séquence
.
est l’arbre constitué d’une
seule feuille avec tous les objets de l’ensemble d’apprentissage. Pour passer d’un
arbre Tk à Tk +1 , il faut supprimer un nœud test et fusionner toutes les feuilles filles de
ce nœud. Le critère choisi pour supprimer un nœud consiste à choisir le nœud ! qui
minimise sur l’ensemble des nœuds Tk la valeur suivante :
Où :
est le nombre d’objets de l’ensemble d’apprentissage mal classés par le
de dans l’arbre élagué à .
est le nombre d’objets mal classés dans l’arbre non élagué.
est le nombre de feuille de .
est le nombre de feuilles du sous-arbre de situés sous le nœud .
nœud
On obtiendra donc que la séquence
possède un élément
qui donne un bon
compromis entre la taille de l’arbre et la bonne classification des objets de l’ensemble
d’apprentissage.
Les Machines à Vecteur de Support (SVM)
Présentation
L’algorithme SVM est une technique d’apprentissage permettant de classer un
ensemble d’éléments dans deux classes distinctes. Cette méthode diffère de celle vue
précédemment car elle procède au classement des éléments, non pas en recherchant
des attributs discriminants, mais en recherchant un hyperplan séparateur dans l’espace
de représentation de ces éléments, qui servira de frontière entre ces deux classes.
Nous disposons toujours d’un ensemble d’apprentissage
, où chaque
exemple ou objet est décrit par d attributs
et appartient à une classe
. Etant donné que l’on utilisera un produit scalaire pour mesurer la
similitude entre deux éléments [1], ces éléments seront représentés dans un espace
Hilbertien (ceci implique un travail de prétraitement des données qualitatives dont
nous reparlerons plus loin).
Recherche d’un séparateur linéaire
Supposons dans un premier temps que l’ensemble d’apprentissage est séparable,
c'est-à-dire qu’il existe un hyperplan, séparateur linéaire, permettant de distinguer les
exemples positifs des exemples négatifs. La recherche d’un tel hyperplan dans un
espace Hilbertien de dimension d consiste à trouver une fonction
qui correspond à l’équation de l’hyperplan tel que :
De plus, grâce à l’hypothèse de séparabilité de l’ensemble d’apprentissage, nous
avons la relation :
Notons qu’il existe en générale une infinité d’hyperplans séparateurs. Le critère
d’optimalité retenu pour choisir un hyperplan parmi cette infinité est la suivante : On
choisi parmi les hyperplans, celle qui maximise la distance minimale aux exemples
d’apprentissage. Cet hyperplan optimal est défini par :
Figure 1: Recherche de l'hyperplan optimal dans un espace à deux dimensions.
Il s’agit de l’hyperplan qui sépare les éléments tout en se donnant la plus grande
marge possible afin de toujours pouvoir bien classer les futurs objets soumis à la
classification. Au vu de ce critère, certains ouvrages tels que [1] préfèrent le terme de
Séparateurs à Vastes Marges à celui de machines à vecteurs de support, qui est la
traduction littérale des Support Vector Machines (SVM).
Figure 2: Hyperplan optimal maximisant la marge
L’hyperplan optimal est perpendiculaire au segment de droite le plus court joignant
un exemple d’apprentissage à cet hyperplan. Ce segment à pour longueur
(rappelons que la distance d’un point y à un hyperplan d’équation
est :
. Lorsque l’on normalise cette distance minimale en prenant, par
exemple,
. On obtient ainsi une marge qui vaut
. Pour maximiser cette
marge, il faut donc minimiser
.Voir [1] et [3].
Les éléments se trouvant sur les bords de la marge sont appelés vecteurs de support.
Trouver l’hyperplan optimal reviens dons à résoudre le problème d’optimisation
suivant :
On ne peut envisager de résoudre tel quel cette première écriture appelée formulation
primale du problème d’optimisation, lorsque la dimension de l’espace devient grande
[1]. Le problème d’optimisation est donc résolu en introduisant les multiplicateurs de
Lagrange. Nous obtenons ainsi une formulation duale du problème, équivalente à la
première, et beaucoup plus simple et rapide à résoudre :
L’hyperplan solution est donné par:
Où les
sont solution du problème dual.
Remarque :
Il est intéressant de constater que, le problème d’optimisation primal est constitué
d’une fonction objective strictement convexe et de contraintes affines, donc convexes.
D’après la théorie de l’optimisation, ce problème admet une solution globale qui se
traduit dans notre cas par l’unicité de l’hyperplan optimal. Ce résultat n’a été possible
que parce qu’au préalable, nous nous sommes intéressés à des séparateurs linéaires.
D’autres types de séparateurs non linéaires auraient certes pu fournir une bonne
séparation des deux classes, mais auraient menés à des problèmes d’optimisation
beaucoup plus complexes et ne possédant pas forcément une formulation duale
traitable en temps raisonnable dans la pratique. Cette unicité est l’un des avantages
majeurs des SVM. Nous verrons dans les sections suivantes comment trouver des
séparateurs linéaires même si il n’y en a pas dans l’espace de représentation des
données.
Cette remarque montre l’importance de rechercher une séparation appartenant à la
classe des séparateurs linéaires.
Il est d’autre part montré que seuls les vecteurs de support jouent un rôle dans le
calcul de l’hyperplan optimal (conditions de Karush-Kuhn-Tucker – les vecteurs de
support sont les points dont les multiplicateurs de Lagrange sont non nuls) [1]. Cette
remarque est intuitive puisque ce sont uniquement les éléments les plus « ambigus »,
les plus difficiles à classer qui permettront de définir une frontière entre les deux
classes.
Cas des ensembles d’apprentissage non linéairement séparables
La méthode des SVM peut être modifiée pour traiter les cas où l’ensemble
d’apprentissage S n’est pas linéairement séparable. Pour ce faire, on utilise une
technique dite des variables ressort (slack variables). Elle consiste à accorder un
relâchement
à chaque élément
de l’ensemble d’apprentissage S. Ces
éléments seront désormais soumis aux contraintes assouplies suivantes :
On minimise dans ce cas, la fonction :
Où
est une pondération sur la somme totale des variables de relâchement .
Elle est à fixer par l’utilisateur, et aura une valeur d’autant plus élevée que
l’ensemble d’apprentissage tendra à être séparable (Le cas limite parfait étant un
ensemble S séparable, dans ce cas tous les vaudraient 0).
Recherche d’un séparateur linéaire par passage dans un espace
de redescription.
Il arrive souvent que l’on n’ait pas une séparation linéaire des données dans l’espace
de représentation des données. La technique utilisée dans la méthode des SVM
consiste à appliquer une transformation non linéaire de l’espace d’entrée X en un
espace de redescription
. En effet, plus la dimension de l’espace de description
est grande, plus la probabilité de pouvoir trouver un hyperplan séparateur entre les
deux classes est élevée. En transformant l’espace d’origine en un espace de
redescription de grande dimension, on pourra à nouveau appliquer la méthode des
SVM.
Figure 3: Passage d'un espace de description de dimension 2 à un espace de redescription de dimension 3
permettant une séparation linéaire.
Le problème d’optimisation conduit au résultat analogue suivant pour l’équation de
l’hyperplan :
Il y a cependant deux inconvénients majeurs dans le passage à des dimensions très
grandes :
• Le premier est d’ordre pratique. En effet, le calcul de ces produits scalaires
devient rapidement impossible dans des espaces à très grande dimension, ceci
d’autant plus que l’on utilise une transformation non linéaire.
• Le second est que le passage dans des grandes dimensions rend l’espace
d’hypothèses trop riche. On peut aboutir à un lissage trop important des
données. Cet aspect ne sera pas étudié dans ce document, mais on pourra
consulter [4] qui traite du problème.
Les fonctions noyau
Le premier inconvénient est heureusement contourné grâce à l’utilisation de fonctions
noyau. Ces fonctions, plus faciles à calculer, et dont on montre qu’elles correspondent
à un produit scalaire
dans un espace de dimension supérieure (Théorème
de Mercer voir [1] et [4]), permettent de trouver l’hyperplan optimal sans même avoir
à chercher de façon explicite la fonction de transformation . Ce « court-circuitage »
constitue une autre particularité intéressante des méthodes de séparateurs à vastes
marges.
L’hyperplan séparateur à ainsi pour équation :
Où K est la fonction noyau.
Il n’est cependant pas facile de trouver de façon implicite, la fonction noyau qui
permet la meilleure séparation des données. En pratique, on effectue des tests avec
des fonctions noyau connues puis on règle ensuite les paramètres correspondants. Les
fonctions noyau les plus connues sont : Le noyau polynomial, à base radiale et
sigmoïdale. De plus, il est possible de construire ses propres fonctions noyau en
effectuant certaines combinaisons entre des fonctions noyau connues.
Toutes les équations de l’hyperplan optimal trouvées ci-dessus ne font apparaitre les
données que dans les produits scalaires. De plus, remarquons que lors de la résolution
de la forme duale, seuls les vecteurs de support ont des multiplicateurs de Lagrange
différents de zéro. Ceci a une justification intuitive car pour classer un nouvel
élément, l’algorithme SVM se contente de calculer la similitude du nouvel élément
avec les vecteurs de support, éléments définissant la frontière entre les deux classes.
Cette similitude est calculée grâce au produit scalaire (rappelons qu’un produit
scalaire entre deux vecteurs d’un espace vectoriel consiste, sous de bonnes contraintes
de normalisation de ces vecteurs, au calcul du cosinus de l’angle entre ces deux
vecteurs ; ce cosinus tend vers 1 si ces deux vecteurs sont très proches, et vers 0 si ils
sont perpendiculaires), et le classement du nouvel élément est fait en conséquence.
Régression logistique
La méthode de régression logistique peut être vue comme une généralisation de la
méthode de régression linéaire simple. La différence réside cependant dans le fait que
l’on souhaite analyser une variable dépendante qualitative, souvent binaire, en
fonction d’une ou plusieurs variables explicatives quantitatives.
Dans ce document, nous étudierons essentiellement le cas où la variable à expliquer,
notée Y, est binaire. Une observation de la variable à expliquer peut donc être vue
comme un succès ou un échec, que l’on représente par
si il ya succès et
si
il y a échec. Cette variable peut donc être modélisée comme suivant une loi de
Bernoulli de paramètre p. Lorsque la variable dépendante peut prendre un nombre de
valeurs dénombrable et supérieur à deux, on peut la modéliser par une distribution
multinomiale.
Modélisation d’une variable dépendante binaire
Cas pratique :
Afin d’illustrer les différences fondamentales entre une variable dépendante
qualitative et une variable dépendante quantitative, observons un cas pratique. Nous
considérons d’abord le cas d’une seule variable explicative quantitative.
Cet exemple concerne un échantillon de 100 personnes pour lesquels la présence ou
l’absence d’une maladie a été observée. On souhaite étudier la relation entre cette
variable et l’âge des personnes. La figure 5 (sur laquelle la variable Y est notée CHD –
maladie cardiovasculaire) montre que lorsque la variable dépendante est qualitative,
elle n’admet pas d’échelle de mesure naturelle. En effet, ce diagramme ne nous
permet pas de prédire selon l’âge si une personne à ou non la maladie.
Figure 4: Relation inexploitable entre l'âge et la maladie.
Nous pouvons cependant décrire la relation entre la probabilité d’avoir la maladie et
l’âge. Il s’agit de la représentation de la probabilité conditionnelle
.
Pour ce faire, on regroupe les données selon l’âge en catégories, puis on calcule le
pourcentage cumulé de personnes atteintes par la maladie dans chaque catégorie. On
obtient le diagramme de la figure 5.
Figure 5: Pourcentage de personnes ayant la maladie selon l'âge.
Il s’agit d’une fonction de répartition.
Il faut maintenant formaliser la relation entre la variable explicative AGE et CHD
(que nous noterons respectivement X et Y).
Nous désirons modéliser
par une fonction des variables explicatives
. Puisqu’il s’agit d’une fonction de probabilité, cette fonction doit être bornée par
0 et 1. On ne peut donc pas modéliser cette probabilité conditionnelle par une fonction
linéaire. Cette relation est donc non linéaire. La figure 5 nous suggère une courbe
sigmoïdale pour représenter cette fonction.
Pour la méthode de régression logistique, nous utiliserons le modèle :
. Il s’agit d’un modèle linéaire généralisé (Generalized
Linear Model – GLM), qui s’écrit encore
, et par lequel, on
souhaite prédire la probabilité conditionnelle de Y sachant X. La fonction utilisée est
la fonction de répartition de la distribution logistique, qui s’écrit :
Et
Ce modèle peut facilement être étendu l’analyse d’une variable Y par un vecteur
aléatoire
. La relation s’écrit :
Ou plus souvent :
Où
.
C’est donc ce modèle que l’on appelle modèle logit ou logistique.
En pratique, les composantes du vecteur
sont déterminées par des méthodes
numériques (surtout si les données sont représentées dans un espace de grande
dimension) à partir des données par la méthode du maximum de vraisemblance (voir
conditions) qui donne en général un estimateur à faible variance suivant une loi
normale.
Il est à noter que le poids d’une composante influe directement sur l’importance de
l’attribut
dans la régression. Ainsi, une valeur de
proche de zéro implique que
l’attribut
n’est pas utile pour la régression. Pour bien régler les valeurs des , ces
estimations sont souvent associées à des tests d’hypothèses du type :
Avec
Ces tests sont très importants en pratique et servent à éliminer certains attributs qui ne
sont pas utiles pour expliquer la probabilité conditionnelle de succès de Y, sachant les
autres attributs de X, ce qui simplifie les calculs.
Prétraitement des données
Importance du prétraitement
Lorsqu’on travaille sur un grand nombre de données, leur prétraitement est
essentiel, les calculs inutiles pouvant augmenter exponentiellement le temps
d’exécution de l’algorithme ; les « petites » erreurs de biais se répercutant
démesurément sur le modèle final. La connaissance de l’algorithme permet une
réflexion théorique avancée sur le formatage des données ; de même un peu de sens
pratique peut se révéler très utile.
Méthodologie
Tout d’abord, il faut analyser les données avec bon sens. Il s’agit d’éliminer la
redondance d’informations au sein des données mêmes. Dans un exemple étudié, un
attribut décrit le nombre d’année d’étude des clients ; un autre attribut décrit de
manière qualitative le titre du dernier diplôme obtenu. Ces deux attributs
correspondent exactement, sont en bijection ; l’un des deux doit être éliminé pour
éviter la redondance qui pondérerait la même information d’un poids injustement
doublé.
De même, toujours dans ce même exemple, les clients sont décrits selon leur
genre ; or, au sein d’un autre attribut, le statut de personne mariée est divisée en deux
valeurs : « mari » et « femme ». Cette distinction implique une redondance qui peut
être éliminé en remplaçant ces deux valeurs par la même valeur « marié ».
Une fois les données nettoyées de leurs redondances, de tous leurs défauts
corrigibles avec un peu de sens pratique, on s’attache à la théorie pour réfléchir à
l’adéquation du formatage des données avec l’algorithme. On utilise ici l’algorithme
SVM (Support Vector Machine), qui partage à l’aide d’un hyperplan les données
projetées dans un espace où chaque attribut est une coordonnée. Comment gérer dans
ce cas les coordonnées manquantes ? Leur choisir une valeur arbitraire serait rajouter
de l’information et fausserait le modèle ; il vaut donc mieux les éliminer
systématiquement.
Une fois ces « nettoyages » des données réalisés, il faut approfondir la
réflexion.
Traitement des données qualitatives
Problème
L’algorithme utilisé, des séparateurs à vastes marges (SVM, de l’anglais
Support Vector Machine), nécessite exclusivement des données numériques. Les
données qualitatives doivent donc être transformées, mais sous quelles formes ?
Plusieurs solutions sont envisageables, mais il faut veiller à respecter le principe de
l’algorithme, qui est de séparer les points de données entre eux.
Il faut également préserver l’information. Une conversion directe utilisant la
convention d’un nombre par valeur qualitative possible ne satisfait pas cette
contrainte ; en effet la conversion « rajoute » de l’information aux données,
arbitrairement et sans justification. Notamment, les nombres peuvent être ordonnés ;
et il existe une distance entre eux. Ces deux informations seront prises en compte par
l’algorithme, alors qu’elle ne corresponde pas à de la véritable information, mais à des
choix arbitraires ; biaisant ainsi le résultat final.
Solution mise en œuvre
La conversion choisie consiste à « éclater » chaque dimension qualitative en n
dimensions, n étant le nombre des valeurs possibles qu’elle peut prendre. Chaque
dimension correspond donc à une de ses valeurs. Pour une donnée particulière, la
dimension correspondant à la valeur prise par cette donnée contiendra la valeur
numérique un, et toutes les autres contiendront le chiffre zéro.
Traitement des données quantitatives
Problème
Lors de la projection dans un espace à d dimensions, d étant le nombre
d’attributs des données, les données numériques deviennent des coordonnées dans
l’espace. Ces valeurs peuvent ne pas être à la même échelle, mais disproportionnées ;
tant au niveau de leur ordre de grandeur en lui-même, qu’au niveau de l’ordre de
grandeur des écarts entre les différentes valeurs.
Ce problème complexifie lourdement le calcul, pour des résultats imprécis. Il
implique une pondération liée aux différences d’ordre de grandeur, favorisant les
données les plus grandes et les plus dispersées ; cette préférence ne correspond pas à
une importance moindre des données les plus « petites », ou les plus « groupées ».
Une normalisation s’impose alors afin de contourner ce problème en ramenant toutes
les données numériques à une même échelle.
Solution mise en œuvre
La normalisation choisie consiste à, dans un premier temps, calculer la
variance d’un attribut sur les données d’apprentissage ; puis dans un deuxième temps
de diviser chaque attribut par la variance trouvée.
Une fois la « fonction » de transformation des attributs numériques calculée, à
partir des données d’apprentissage, cette fonction est sauvegardée afin de l’appliquer
à une nouvelle donnée dont on voudrait prévoir la classe.
Justifications théoriques
Lorsqu'un nouvel exemple est soumis au modèle calculé à partir des données
d'apprentissage, celui ci est d'abord normalisé: les valeurs de chacun de ses attribut
soumis à la même normalisation.
Cette méthode est valide formellement si l'on vérifie que l'ensemble d'apprentissage
est représentatif de la population étudiée, c'est à dire qu'on a la même proportion de
chaque classe.
On considèrera donc que la variance et la moyenne calculées pour effectuer la
normalisation sont des estimateurs sans biais de variances minimales de ces
paramètres, ont peut ainsi les utiliser pour normaliser d'autres exemples.
Mise en application
Arbres de décision
La première méthode de classification de données étudiée est celle des arbres
de décision. L’avantage de cette méthode est qu'elle n'impose pas de prétraitement des
données.
Plusieurs algorithmes étaient à notre disposition pour générer des arbres de
décisions dont ceux que nous avons choisi :
• l'algorithme C4.5 (lui-même amélioration de l'algorithme ID3 qui
n'effectue aucun élagage de l'arbre) dont une implémentation nous était
fournie.
•
l'algorithme CART (Classification And Regression Trees) que l'on pouvait
tester sous R.
Algorithme C4.5
Nous allons maintenant appliquer l’algorithme C4.5 pour construire un arbre
de décision à partir d’un grand nombre de données, environ 30 000 exemples. Nous
allons utiliser un programme informatique, nommé C4.5, qui dispose de différentes
options. Nous allons essayer chacune d’entre elles, afin de déterminer quelles sont les
plus pertinentes à utiliser dans cet exemple et pourquoi.
Observons tout d’abord le résultat de l’algorithme sans utiliser d’options.
L’arbre construit est très complexe : c’est parfaitement normal sur un jeu de 32 561
exemples, chacun caractérisé par 14 attributs. L’arbre est composé de 7 808 nœuds
avant élagage, et 653 après l’élagage. Un grand nombre de nœuds est donc éliminé, de
l’ordre de 11 nœuds éliminés sur 12. Le pourcentage d’exemples mal classés
n’augmente pourtant que de 3% ; il était de 9% avant l’élagage, et de 12,2% après.
L’algorithme C4.5 autorise plusieurs branches pour chaque nœud ; lorsque le
nœud correspond au test sur un type énuméré, toutes les valeurs possibles de la
réponse vont correspondre à une branche. Dans le cas de grand nombre de données,
parfois il n’est pas pertinent de considérer toutes les valeurs ; dans ce cas il faut en
regrouper certaines en sous-ensembles, ce qui simplifie considérablement la
complexité de l’arbre.
On peut obliger le programme à regrouper en sous-ensembles grâce à une
option : -s. L’arbre est bien sûr beaucoup moins complexe avant élagage, avec
seulement 5 083 nœuds. Par contre, après élagage, il reste 822 nœuds, contre
seulement 653 sans regroupement en sous-ensembles ! On obtient donc un arbre plus
complexe, mais contenant également moins d’erreurs, avec seulement 10,7%
d’erreurs après élagage.
Pour les attributs dont le type est continu, ils peuvent être considérés comme
des attributs de type énuméré : en effet, leurs valeurs sont limités aux valeurs prises
par les exemples. Cependant, ces valeurs appartiennent à un ensemble ordonné ; on
peut donc, au lieu de faire des sous-ensembles, déterminer un seuil, et tester si la
valeur est supérieure ou inférieure à ce seuil. Ceci est réalisé de façon automatique par
l’algorithme, ou peut être forcé par l’option –p.
Il est important de pouvoir tester l’arbre que l’on construit. C’est pourquoi il
est conseillé de séparer les données en deux parties, une partie servant à construire
l’arbre et l’autre à le tester. On obtient ainsi des mesures de probabilité d’erreurs plus
précises, et plus sûres.
Séparons les données dont nous disposons en deux parties, arbitrairement : un
jeu d’exemples d’apprentissage, et jeu de 10 001 tests. L’arbre obtenu est
sensiblement différent en terme de complexité, ce qui paraît normal ; par contre, il est
équivalent en terme de proportion du nombre d’erreurs sur le nombre total.
Le jeu de test nous permet alors de s’apercevoir que l’estimation globale de la
probabilité de commettre une erreur, à savoir : 0,143 est plutôt bonne ; en effet, la
probabilité déduite des tests est de 0,138, sur l’arbre élagué.
Si on groupe en sous-ensembles les types énumérés, on obtient des estimations
de probabilité plus faible : la probabilité de mal classer une donnée est estimé à
0,131 ; alors qu’elle est de 0,137 lorsqu’on la déduit des tests, c'est-à-dire la même
valeur que celle précédemment trouvée.
Sur les deux résultats, on peut constater que les erreurs se situent
principalement dans la classification d’une des deux classes, où 896 données sont mal
classés pour 1565 bien classés, dans le cas regroupé ; et sensiblement les mêmes
valeurs dans l’autre cas ; alors que seulement 473 données sont mal classés sur 7 067
bien classés dans l’autre classe.
La probabilité d’erreur dépend donc très fortement de la classe trouvée par
l’algorithme :
Sans -s
Avec –s
Probabilité d’erreur lorsque l’algorithme classe >50K
0,239
0,232
Probabilité d’erreur lorsque l’algorithme classe <=50K
0,11
0,112
Évaluation de l'arbre sur les données d'apprentissage (22560 individus) qui ont permis
de construire l'arbre :
Avant élagage
Après élagage
Taille de l'arbre
3804
612
Erreurs
1779 (7.9%)
2441 (13.1%)
Évaluation de l'arbre sur les données de test (10001 individus):
Avant élagage
Après élagage
Taille de l'arbre
3804
612
Erreurs
1571 (15.7%)
1369 (13.7%)
Algorithme CART
Rappelons les spécificités de l’algorithme CART (Classification And Regression
Tree) :
- Il génère 2 nœuds fils par nœud parent.
- Il accepte tout type de variables.
- La mesure servant à sélectionner le meilleur attribut à tester est ici la
métrique de Gini :
où a est : un attribut binaire
oméga est : une classe
L'avantage de l'implémentation sous R de cet algorithme était la possibilité de
pouvoir afficher un aperçu de l'arbre généré, ce qui en permet une lecture plus aisée.
Voici l'arbre que l'on a obtenu (complété en rouge par la pureté de chacun des
noeuds de l'arbre) :
pureté d'un noeud : proportion d'individus appartenant à la classe majoritaire
au sein d'un même noeud.
taux d'erreur = 1 – pureté de noeud (feuille de l'arbre)
On peut remarquer que globalement, plus l'on s'approche des feuilles, plus la
pureté des noeuds augmente.
Certaines feuilles dépassent même les 95%.
Mais il est plus probant d'observer les résultats (pourcentages d'erreur) sur les
données d'apprentissage et de test (adult-test).
Voici ce que l'on obtient :
Données d'apprentissage
(réel) >50K
(réel) <=50K
précisions
(prédiction) >50K
a=4025
b=1247
a/(a+b)=79.35%
(prédiction) <=50K
c=3816
d=23473
d/(c+d)=86.01%
rappels
a/(a+c)=51.33% d/(b+d)=94.95% (a+d)/(a+b+c+d)=84.45%
Données de test
(réel) >50K
(réel) <=50K
précisions
(prédiction) >50K
a=1945
b=630
a/(a+b)=75.53%
(prédiction) <=50K
c=1901
d=11805
d/(c+d)=86.13%
rappels
a/(a+c)=50.57% d/(b+d)=94.93% (a+d)/(a+b+c+d)=84.45%
précision : probabilité que le modèle ne se trompe pas sachant la réponse qu'il
renvoie.
(ex : ici, si le modèle prédit qu'un individu est de la classe « >50K », on
pourra en être sur à 79.35%)
rappel : probabilité que le modèle ne se trompe pas sachant la classe réelle de
l'individu qu'il tente de classifier.
(ex : ici, on peut voir que le modèle sait classifier beaucoup mieux les
individus qui sont réellement de la classe « <=50K » (rappel de 94.95%) que ceux qui
sont réellement de la classe « >50K » (rappel de 51.33%))
On peut remarquer que les précisions (globales ou propres à une classe) ainsi
que les rappels sont sensiblement identiques pour les données d'apprentissage et pour
les données de test, ce qui laisse à penser que le modèle obtenu était de qualité dans le
sens où il n'y avait ni « sur-apprentissage » (i.e. que le modèle collait trop aux
données d'apprentissage mais inadapté à de nouvelles données) ni « sousapprentissage » (le modèle donne des résultats aléatoirement différents sur différents
jeux de données).
Conclusions sur les arbres de décision :
Au vu des résultats obtenus sur nos jeux de données, l'algorithme C4.5
(83.7% de précision) semble meilleur que l'algorithme CART (84.45% de précision).
Séparateurs à Vastes Marges (SVM)
Introduction, choix du noyau
Méthodologie
Les données initiales adult ont été découpées selon un partage 2/3 (pour
l’apprentissage) – 1/3 (pour la validation) tandis que les données adult-test ont été
réservées aux tests.
La méthode employée pour établir une classification optimale :
•
•
•
On construit plusieurs modèles (différents noyaux, différents paramètres
pour chaque noyau) à l’aide des données d’apprentissage.
On sélectionne parmi ces différents modèles celui qui donne le meilleur
résultat sur les données de validation.
On effectue une prédiction à l’aide de ce modèle sur les données de tests.
Choix du noyau
Après un premier survol des différents noyaux utilisés par SVMLight et R dont
on rappelle la liste :
• Noyau gaussien
• Noyau linéaire
• Noyau polynomial
• Noyau sigmoïdale
, il est apparu que sur le jeu de données qui nous étaient fournis (données d’une
banque adult et adult-test) le noyau gaussien était le plus adapté.
Par exemple, si l’on se base sur les options par défaut (i.e. sans spécifier les valeurs
de gamma, ou autres paramètres de noyau …) de la fonction svm du paquetage
‘e1071’ de R, les résultats obtenus étaient :
Type de noyau
Gaussien
Linéaire
Polynomial (degré
3)
Polynomial (degré
5)
Sigmoïde
Précision
(données
d’apprentissage)
84.04%
76.32%
83.91%
Précision
(données de
v alidation)
82.93%
75.70%
81.84%
Précision
(données de
test)
83.20%
76.30%
82.08%
80.15%
77.45%
77.83%
53.92%
53.70%
54.17%
Une première étape de la validation a donc consisté à se limiter au noyau gaussien.
Le reste de la validation était donc réduit à la recherche du paramètre gamma optimal,
quoique SVMLight permettait également de moduler les paramètres c (constantes
majorant les variables ressort) et j (paramètre permettant de pondérer une des deux
classes (ici la classe correspondant à -1) d’autant qu’elle est sous-représentée dans le
jeu de données).
Le noyau qui s'est avéré être le meilleur sur nos jeux de données (adult et adulttest) dès le début est le noyau gaussien. Cela est très certainement dû au fait que de
nombreux phénomènes mis en jeu dans ces données font apparaître des phénomènes
suivant des lois normales (âge, niveau d'études, revenus, etc ...).
Noyau gaussien :
K_
u,v_
=e_ ___u_ v_
2
Résultats donnés par SVMLight
Voici les graphiques que les utilitaires svm_learn et svm_classify ont permis
d’établir :
c=1000 & j=3
80
70
60
50
40
30
20
10
0
0,05
0,1
0,15
10
10
Le paramètre C est le même que celui introduit lors de l’étude des variables ressort.
Sa valeur augmente si l’on possède un ensemble d’apprentissage quasiment séparable
linéairement. Cette valeur à été fixée à 1000, pour amplifier le poids des variables
ressort.
Le paramètre j quant à lui permet d’équilibrer en proportion, la quantité d’exemples
dans les deux classes. Cette valeur est mise à 3 car il y a trois fois plus de variables
négatives dans l’échantillon d’apprentissage.
v ariation
gamma
0,86
de
0,83
0,81
0,8
0,79
0,78
0,77
0
0,01 0,02 0,04 0,06 0,08 0,1
0,2
1
2
5
10
100 1000
Ces deux graphiques montrent déjà une première tendance sur l’influence de
gamma. En faisant varier gamma, qui correspond à l’inverse de la variance dans le
noyau gaussien, nous constatons qu’une valeur de gamma inférieure à 1 semble
donner les meilleurs résultats tandis qu’au-delà, la précision semble décroître
sensiblement.
Résultats donnés par R
Influence de gamme (noyau gaussien)
1,2
1
précision
0,8
Données d'apprentissage
0,6
Données de validation
Données de test
0,4
0,2
0
0,005 0,011
0,02
0,04
0,1
0,2
0,5
1
10
20
50
100
ga m m a
On peut remarquer que :
• Plus on augmente le paramètre gamma, plus la classification des données
initiales s’améliore, le modèle « collant » à ces données d’apprentissage.
• Mais cela ne signifie pas pour autant que le modèle est d’autant meilleur que
gamma est grand.
• En effet, le modèle, « collant » trop aux données d’apprentissage devient
biaisé dès lors que l’on lui applique d’autres données (validation ou test)
Si l’on devait choisir un modèle de classification pour un client souhaitant
analyser de futures données, on retiendrait le modèle optimal pour les données de
validation. Il correspond ici à une valeur de gamma = 0,04.
Classification polytomique des données d'astrophysique par SVM
(text mining) :
Après de nombreux pré-traitements, voici les résultats que nous avons obtenus
avec SVMLight grâce à un calcul de 7 modèles (1 modèle par prédiction de classe), sur
la classification des thèmes d'articles selon les mots qui les composent :
Classes
Précisions
de la
classificatio
n
Vie extraterrestre
Eclipses
Planètes
extrasolaires
Analyse
Numérique
Mécanique
quantique
Physique
mathématiq
ue
Rhéologie
86.30%
94.52%
98.63%
98.63%
60.27%
75.34%
94.52%
On peut remarquer que plusieurs classes ont des précisions au delà de la valeur
que l'on pouvait avoir concernant de simples prédictions (2 classes) qui n'était que de
85%.
Régression logistique
Voici les résultats que la classification des données adult par régression
logistique nous a donnés :
Données de test
(réel) >50K
(réel) <=50K
précisions
(prédiction) >50K
a=6805
b=95
a/(a+b)=98.62%
(prédiction) <=50K
c=1550
d=808
d/(c+d)=34.26%
rappels
a/(a+c)=81.44% d/(b+d)=89.48% (a+d)/(a+b+c+d)=82.23%
Ces résultats montrent que cette méthode est la moins précise des trois (arbres
de décision, SVMs, régression logistique).
Des idées pour aller plus loin
Afin d’améliorer les performances, une idée serait de combiner certaines méthodes
entre elles. Par exemple, pour des données de faible dimension (un nombre réduit
d’attributs), la méthode des arbres de décision permet d’avoir de très bons résultats.
De plus cette méthode, contrairement à la régression linéaire et aux SVM, fourni une
« explication » claire de la répartition des exemples. Elle permet, en effet, d’exhiber
les attributs les plus discriminants, et, par là de comprendre les causes de la
répartition. Cette méthode devient cependant moins performante lorsque l’on analyse
des données de grande dimension (cas du text mining avec des dimensions de l’ordre
du cardinal du vocabulaire utilisé).
D’un autre coté, la méthode du SVM permet de traiter des exemples de très grande
dimension. Le principal problème consiste souvent à pondérer convenablement les
attributs des éléments, ou a complètement en supprimer certains qui sont insignifiants
dans le but d’alléger les calculs.
Une technique pourrait consister à combiner ces deux méthodes en construisant
d’abord un arbre de décision jusqu’à une certaine profondeur afin d’obtenir les
attributs ou axes les plus discriminants, puis à effectuer une SVM uniquement sur ces
attributs.
On peut aussi préalablement traiter les données avec des méthodes d’analyse
statistique multidimensionnelle telles que les ACP pour dégager les axes principaux
de l’analyse.
Conclusion
Ce projet nous a amené à expérimenter la fouille de données dans tous ses
aspects, à la fois divers et complémentaires. Nous avons ainsi pu dérouler plusieurs
cycles de traitement, allant de la lecture pure et simple des données afin de se les
approprier, jusqu’à la production de grandeurs statistiques pour estimer les modèles
construits, en passant par le prétraitement des données et le réglage des paramètres de
construction du modèle.
D’un autre côté, l’exploration théorique des techniques déployées nous a
conduit à travers des notions extrêmement différentes, de la théorie de l’information
jusqu’aux fonctions logistiques, en passant par des espaces à très grandes dimensions.
Le lien entre la mise en pratique et la théorie était très fort ; et les questions de l’unes
trouvant souvent une réponse dans l’autre.
Nous avons ainsi pu découvrir un travail pratique et efficace, nécessitant
complémentairement du sens pratique et une profonde compréhension abstraite. A la
fois processus industriel et secteur de recherche, le data mining dans son ensemble
nous est apparu comme un domaine extrêmement vivant, répondant à une forte
attente, maximisant les ressources disponibles, tout en combinant des technologies de
pointe.
Références
[1] A. Cornuejols et L. Miclet. Apprentissage Artificiel : Concepts et Algorithmes.
Eyrolles, 2002.
[2] T. Mitchell, Machine Learning, McGraw Hill, 1997.
[3] B. Schölkopf. Statistical Learning And Kernel Methods. MSR-TR 2000-23,
Microsoft Research, 2000.
[4] V. Vapnik. The Nature Of Statistical Learning Theory. Springer, N.Y., 1995.
Téléchargement