Vous êtes sur la page 1sur 44

Techniques ensemblistes pour lanalyse prdictive

Ricco RAKOTOMALALA
Universit Lumire Lyon 2

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 1
Faire cooprer plusieurs modles.
Procdure de vote simple ou pondr
lors du classement.

Construire diffrents types de modles (ex. arbre,


classifieur linaire, etc.) sur les mmes donnes

Construire des modles de mme nature (mme


algorithme dapprentissage) sur diffrentes versions
des donnes

Il faut que les modles se compltent pour tirer bnfice de la


coopration. Sils classent tous exactement de la mme manire,
le gain (par rapport aux modles individuels) est nul !

On se place exclusivement dans le cadre du classement dans ce support.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 2
Donnes artificielles gnres pour illustrer notre propos:
napp = 100 individus pour lapprentissage, ntest = 5000
pour lvaluation ; p = 10 variables prdictives, dont 2
sont pertinentes (x1 et x2) ; problme 2 classes ;
absence de bruit sur la classe.
1.0

1.0
0.8

0.8
0.6
0.6
d$x2

d$x2
0.4
0.4

0.2
0.2

0.0
0.0

0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
d$x1 d$x1

Y = bleu
si (1) x2 > 2 * x1 pour x1 < 0.5
ou (2) x2 > (2 2 * x1) pour x1 0.5
rouge autrement

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 3
On construit un modle partir dun chantillon, que
lon souhaite performant sur la population. Deux
composantes psent sur lerreur de prdiction.

1.0
0.8
0.6
d$x2
0.4
0.2
Traduit lincapacit du modle

0.0
0.0 0.2 0.4 0.6 0.8 1.0
d$x1

traduire le concept (la vraie Un classifieur linaire ne peut pas


fonctionner ici. Impossible de trouver
fonction) reliant Y aux X.
une droite permettant de sparer les
points bleus des rouges.

1.0
0.8
0.6
d$x2
Sensibilit (variabilit par

0.4
0.2
rapport) aux fluctuations

0.0
0.0 0.2 0.4 0.6 0.8 1.0
d$x1

dchantillonnage.
Le faible effectif de lchantillon
dapprentissage ne permet pas de trouver
avec exactitude les bonnes frontires.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 4
Quelques schmas simples.

Taux d'erreur selon la complexit du modle

Les modles simples (ex. linaires, peu de paramtres


( effectif gal)

estimer) prsentent un biais fort, mais une faible variance

Taux d'erreur
Les modles complexes (ex. nombreux paramtres
estimer) prsentent un biais faible, mais une forte variance Complexit Err. Resub. (App.)
Err. "vraie" (Popuplation)

Sans oublier le rle perturbateur que peuvent avoir les variables qui nont aucun
rapport avec le problme tudi (cf. maldiction de la dimensionnalit)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 5
PLAN

1. Arbres de dcision
2. Bagging
3. Random Forest
4. Boosting
5. Logiciels - Outils
6. Bilan
7. Rfrences bibliographiques

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 6
A lorigine taient les arbres de dcision

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 7
Algorithme rcursif de dcoupage de lespace de
reprsentation. Dcoupage forcment parallle aux axes.
Modle linaire par morceaux, non-linaire au final.
Cf. Introduction aux arbres de dcision.

size of tree
1 2 5 6 8

1.4
X-val Relative Error
1.0
0.6
0.2
Inf 0.24 0.078 0.038 0
cp

Un des enjeux de la construction des arbres est de


dtecter la profondeur optimale correspondant
Arbre profond : biais faible, variance forte au meilleur arbitrage entre biais et variance (cf. le
Arbre court : biais fort, variance faible paramtre cp dans rpart de R par ex. Tutoriel
package rpart.)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 8
TRAIN
library(rpart)
(5 feuilles dans
arbre <- rpart(y ~ ., data = d.train)
larbre = 5 zones
n= 100 print(arbre)
sont dfinies)
node), split, n, loss, yval, (yprob)
* denotes terminal node

1) root 100 46 2 (0.46000000 0.54000000)


2) x2>=0.4271354 58 15 1 (0.74137931 0.25862069)
4) x2>=0.733562 27 1 1 (0.96296296 0.03703704) *

1.0
5) x2< 0.733562 31 14 1 (0.54838710 0.45161290)
10) x1>=0.7221232 8 0 1 (1.00000000 0.00000000) *

0.8
11) x1< 0.7221232 23 9 2 (0.39130435 0.60869565)
22) x1< 0.3639227 10 1 1 (0.90000000 0.10000000) *
TEST

0.6
d$x2
23) x1>=0.3639227 13 0 2 (0.00000000 1.00000000) *
3) x2< 0.4271354 42 3 2 (0.07142857 0.92857143) *
= 0.1632

0.4
0.2
La modlisation est contrainte par le nombre

0.0
0.0 0.2 0.4 0.6 0.8 1.0
dobservations disponibles dans TRAIN d$x1

Si on tente de forcer les segmentations, des


mauvaises variables peuvent sinsrer. 1) root 100 46 2 (0.46000000 0.54000000)
2) x2>=0.4271354 58 15 1 (0.74137931 0.25862069)
4) x2>=0.733562 27 1 1 (0.96296296 0.03703704)
8) x4>=0.1231597 26 0 1 (1.00000000 0.00000000) *
9) x4< 0.1231597 1 0 2 (0.00000000 1.00000000) *
5) x2< 0.733562 31 14 1 (0.54838710 0.45161290)
arbre.p <- rpart(y ~ ., data = d.train, 10) x1>=0.7221232 8 0 1 (1.00000000 0.00000000) *
control=list(cp=0,minsplit=2,minbucket=1)) 11) x1< 0.7221232 23 9 2 (0.39130435 0.60869565)
22) x1< 0.3639227 10 1 1 (0.90000000 0.10000000)
print(arbre.p) 44) x4>=0.02095698 9 0 1 (1.00000000 0.00000000) *
45) x4< 0.02095698 1 0 2 (0.00000000 1.00000000) *
23) x1>=0.3639227 13 0 2 (0.00000000 1.00000000) *
3) x2< 0.4271354 42 3 2 (0.07142857 0.92857143)
6) x1< 0.1139017 3 0 1 (1.00000000 0.00000000) *
Ricco Rakotomalala 7) x1>=0.1139017 39 0 2 (0.00000000 1.00000000) *
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 9
Indice de Gini Indice de concentration

K
Mesure dimpuret
S (noeud) pk (1 pk ) Entropie quadratique
k 1 Variance pour variable qualitative

S(N1)=0.4968
46 46 54 54
SCT S ( N1) (1 ) (1 ) 0.4968
100 100 100 100
1
S(N3)=0.3885

40 36 22
S(N2)=0.1327
SCR S ( N 2) S ( N 4) S ( N 5)
2 100 100 100
40 36 22
0.1327 0.4861 0.00 0.2307
100 100 100
S(N4)=0.4861 S(N5)=0.00

Information (variance) SCE SCT SCR 0.4968 0.2307 0.2661


explique par le modle

42 58 42 58
Elle peut tre dcompose 1 S ( N1) S ( N 2) S ( N 3) 0.2187
100 100 100
selon les segmentations dans SCE=1+2
36 22 36 22
larbre 2 S ( N 3) S ( N 4) S ( N 5) 0.0474
100 58 58

Le gain induit par chaque segmentation peut tre replac dans le contexte de la qualit globale du modle
SCE. Limportance diminue mesure quon sloigne de la racine (parce que le poids du sommet est faible).

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 10
Avantages :
connaissances intelligibles -- validation dexpert (si arbre pas trop grand)
traduction directe de larbre vers une base de rgles
slection automatique des variables pertinentes, robuste face aux variables redondantes

non paramtrique
traitement indiffrenci des diffrents types de variables prdictives
robuste face aux donnes aberrantes, solutions pour les donnes manquantes
rapidit et capacit traiter des trs grandes bases

enrichir linterprtation des rgles laide des variables non slectionnes


possibilit pour le praticien dintervenir dans la construction de larbre

Inconvnients :
problme de stabilit sur les petites bases de donnes (feuilles trs petits effectifs)
recherche pas--pas : difficult trouver certaines interactions (ex. xor)
peu adapt au scoring
performances moins bonnes en gnral par rapport aux autres mthodes (en ralit,
performances fortement dpendantes de la taille de la base dapprentissage)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 11
Boostrap Aggregating (Breiman, 1996)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 12
Ide : Faire cooprer (voter) B arbres construits sur des
chantillons bootstrap. B est un paramtre de lalgorithme.

Entre : B nombre de modles, ALGO algorithme dapprentissage,


un ensemble de donnes de taille n avec y cible K modalits, X
avec p prdicteurs.

MODELES = {}
Pour b = 1 B Faire
Tirage avec remise dun chantillon de taille n b
Construire un modle Mb sur b avec ALGO
Ajouter Mb dans MODELES
Fin Pour

Pour un individu i* classer,


Appliquer chaque modle Mb de MODELES y b i *
B
Prdiction bagging y bag i * arg max I y b (i*) yk
k
b1
Ce qui correspond un vote la majorit simple
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 13
Intrt de la coopration. Faire cooprer des modles na dintrt que si les
modles ne classent pas tous de la mme manire (si le vote est systmatiquement
unanime, autant navoir quun seul modle).

Biais et variance. Biais bagging = biais du modle sous-jacent. Bagging rduit


avant tout la variance. Il faut donc que les modles sous-jacents aient un biais faible,
capturant la complexit des relations entre y et les X.

Apprenants faibles. Bagging ne sait pas tirer parti des apprenants faibles (weak
classifier cf. boosting). Il faut que les modles sous-jacents soient de bonne qualit.

Sur-apprentissage (overfitting). Augmenter B naboutit pas au sur-apprentissage.


En pratique, une centaine suffit, mais on peut lajuster ltude.

Arbres de dcision. Bagging peut sappliquer tout type de modle. Mais les
arbres sont particulirement avantageux parce quon peut rduire le biais individuel
en crant des arbres profonds (non lagus), la variance (individuelle de chaque
arbre) est alors compense par le mcanisme de coopration en classement.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 14
La librairie adabag pour R propose le
bagging pour les arbres de dcision (sappuie
sur rpart comme algorithme individuel).
1.0

#100 arbres gnrs par bagging


0.8

model.bagging <- bagging(y ~ ., data = d.train,


0.6

mfinal=100)
d$x2
0.4

= 0.156
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0


d$x1

model.bagging.2 <- bagging(y ~ ., data = d.train,


1.0

mfinal=100,control=list(cp=0,minsplit=2,minbucket=1))
0.8

= 0.1224
0.6
d$x2
0.4

En crant des arbres individuels plus profonds


0.2

(moins biaiss), on amliore la qualit de la


0.0

0.0 0.2 0.4 0.6 0.8 1.0

prdiction du bagging.
d$x1

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 15
Impact de lvolution du nombre de
rplications B sur la qualit du modle.

#bagging et nombre de rplications


B <- c(1,5,10,20,50,100,200,500)
#une session pour un nombre d'arbres gal b
une_session <- function(b){
model.bagging <- bagging(y ~ ., data = d.train, mfinal=b)
p.bagging <- predict(model.bagging,newdata=d.test)
return(erreur(d.test$y,p.bagging$class))
}
#mesurer l'erreur en rptant lopration 20 fois
errors <- replicate(20,sapply(B,une_session))
m.errors <- apply(errors,1,mean)
plot(B,m.errors,xlab="B",ylab="Taux d'erreur",type="b")

Au-del dun certain nombre de


rplications, il ny a plus damliorations
notables. Mais il ny a pas de dgradation
non plus (pas doverfitting).

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 16
Dans le scoring Y {+, - }, on a besoin dune
estimation viable de la quantit P(Y = + / X).

On peut utiliser la frquence des votes pour


estimer cette probabilit a posteriori.
B

I y b
P Y / X b 1
B

Si le modle individuel Mb peut fournir une


estimation de la probabilit dappartenance aux
classes Pb, on peut alors les sommer puis
Mieux en gnral, dautant plus normaliser 1.
que le nombre de rplications
B
B est faible. La solution peut
P Y / X
b
sappliquer avantageusement
P Y / X b 1
au classement. B

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 17
On a une multitude darbres, on na plus un
modle lisible directement. L interprtation
du modle prdictif devient difficile.

M2
M1 M3

M4 M5 M6

On ne peut pas inspecter chaque arbre pour distinguer les variables


qui jouent un rle, et dans quelle mesure elles jouent un rle.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 18
Exploiter la mesure dimportance de la
segmentation dans larbre. Voir diapo.

Additionner les contributions des variables dans les arbres


pour lesquels elles apparaissent.
Remarque : Certains packaqes normalisent 100 (soit la
variable la plus importante, soit la somme des contributions).

#importance des variables


#library(adabag)
importanceplot(model.bagging)
Exemple pour nos donnes o
lon sait que X2 et X1 sont
pertinentes, X3 10 en
revanche non aucun impact
dans la sparabilit des classes.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 19
Estimation de lerreur OOB (out-of-bag error estimation) :
mesurer lerreur directement durant lapprentissage, sans avoir
passer par un chantillon test ou par une technique de type
validation croise.

Pour larbre Mb, certains individus sont tirs plusieurs fois, dautres ne
sont pas inclus dans lchantillon bootstrap (36.8%).
Appliquer larbre Mb sur ces individus pour obtenir une prdiction.

i M1 M2 M3 M4 M5 Y^ Y ERR
0
Prdiction OOB par vote
1 . + . + + +
2 . . . 0
la majorit des

3 + . + 1 modles (dans la ligne).

4 . + + . . + + 0

5 + . . + 1

6 . . . . + + 1
ERROOB = Proportion(ERR)
7 . . . 0

8 + . . + + + 0 ErrOOB est une


Y={+, }
9 . . + . . + + 0 estimation viable de
B = 5 arbres lerreur en prdiction du
10 + . . + . + 1

modle bagging.

. signifie que lindividu a t utilis pour la construction de larbre Mb


Ricco Rakotomalala
+ ou est la prdiction
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/
de larbre Mb pour lindividu i qui est OOB 20
La marge correspond lcart entre la proportion de vote pour la
bonne classe et le maximum de vote pour une autre classe. Dans
un problme binaire {+ , - }, cest lcart entre la probabilit
dappartenance la bonne classe moins le complmentaire 1.

B
B
I
y b (i ) k * b I
y (i ) k
Pour un individu Y(i)=yk* m b 1
max b 1

B k k *
B

La marge peut tre ngative c.--d.


lindividu est mal class.

Augmenter la marge signifie obtenir une dcision plus tranche (plus


sre, plus stable) pour le classement. Plus stable = moindre variance.

Les techniques ensemblistes contribuent amliorer (agrandir) la marge.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 21
Les forts alatoires (Breiman, 2001)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 22
Bagging est, de manire gnrale, domin par le boosting (cf.
plus loin). Cest apparemment trs difficile vivre pour Breiman
(qui avait entre-temps dvelopp ARCING pour contrer boosting
et lide dun vote pondr en classement). Il dveloppe en 2001
Random Forest qui savre aussi bon en gnral que le boosting.

Pour que le bagging soit efficace, il faut :


1. Que les arbres soient individuellement performants
2. De grande profondeur (biais faible) Taille min. des feuilles = 1
3. Et surtout, trs fortement diffrents les uns des autres pour quelles
puissent se complter. Notion de dcorrlation des arbres.

Introduire une perturbation alatoire dans la construction des


arbres, en jouant sur le mcanisme de slection de variable de
segmentation sur les nuds.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 23
Entre : B nombre de modles, ALGO algorithme dapprentissage darbre, un
ensemble de donnes de taille n avec y cible K modalits, X avec p prdicteurs,
m nombre de variables traiter sur chaque nud avec, par dfaut, m p

MODELES = {}
Pour b = 1 B Faire
Tirage avec remise dun chantillon de taille n b
Construire un arbre Mb sur b avec ALGO
Pour chaque segmentation :
Choisir m variables au hasard parmi p
Segmenter avec la meilleure variable parmi m
Ajouter Mb dans MODELES
Fin Pour

Pour un individu i* classer,


Appliquer chaque modle Mb de MODELES y b i *
B
Prdiction Random Forest y rf i * arg max I y b (i*) yk
k
b 1
Ce qui correspond un vote la majorit simple

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 24
La librairie randomForest pour R.

#random forest - B = 200 arbres


library(randomForest) Une variable
model.rf <- randomForest(y ~ ., data = d.train, ntree = 200) peut apparatre
plusieurs fois
#liste des variables utilises dans un arbre.
barplot(varUsed(model.rf),names.arg=paste("x",1:10,sep=""))

#importance des variables


varImpPlot(model.rf) Une autre piste
base sur les
#matrice de confusion OOB OOB existe
print(mc <- model.rf$confusion) pour estimer
limportance.
#taux d'erreur OOB
print((mc[2,1]+mc[1,2])/sum(mc[1:2,1:2])) # (7+8)/100 = 0.15

#prdiction sur chantillon test


p.rf <- predict(model.rf,newdata = d.test,type="class")

#taux d'erreur
print(erreur(d.test$y,p.rf)) # 0.149

#reprsentation des frontires dans (x1,x2)


nuage(d.test,p.rf)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 25
left daughter right daughter split var split point status prediction
1 2 3 1 0.7333904 1 0
2 4 5 7 0.5242057 1 0
3 6 7 8 0.6437400 1 0
4 8 9 3 0.3753580 1 0 #accs un arbre individuel (ex. 4e)
5 10 11 7 0.7430234 1 0 print(getTree(model.rf,k=4))
6 12 13 5 0.8513703 1 0
7 0 0 0 0.0000000 -1 1*
8 14 15 1 0.1846170 1 0
Larbre a 15 feuilles.
9 16 17 6 0.4151308 1 0
10 0 0 0 0.0000000 -1 2* La variable de segmentation
11 18 19 6 0.4038910 1 0 la racine est x1
12 0 0 0 0.0000000 -1 1* Une variable peut apparatre
13 0 0 0 0.0000000 -1 2*
plusieurs fois (par ex. x2, x6,
14 0 0 0 0.0000000 -1 1*
15 0 0 0 0.0000000 -1 2* etc.)
16 20 21 10 0.4015341 1 0 Des variables non
17 22 23 10 0.1524530 1 0
pertinentes peuvent tre
18 24 25 2 0.6465817 1 0
19 26 27 2 0.6180417 1 0
intgres (par ex. x7, x8, x3,
20 28 29 3 0.9030539 1 0 x5, x6, etc.)
21 0 0 0 0.0000000 -1 2*
22 0 0 0 0.0000000 -1 2*
23 0 0 0 0.0000000 -1 1*
24 0 0 0 0.0000000 -1 2*
25 0 0 0 0.0000000 -1 1*
26 0 0 0 0.0000000 -1 2*
27 0 0 0 0.0000000 -1 1*
28 0 0 0 0.0000000 -1 1*
29 Ricco Rakotomalala
0 0 0 0.0000000 -1 2*
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 26
Bonnes performances en prdiction
Paramtrage simple (B et m)
Pas de problme doverfitting (on peut augmenter B)
Mesure de limportance des variables
Evaluation de lerreur intgre (OOB)
Possibilit de programmation parallle

Problme si nombre de variables Parce que les


arbres individuels
pertinentes trs faibles, dans labsolu et risquent de ne pas
relativement au nombre total de variables tre performants.

Dploiement dun tel modle reste Surtout si on doit

compliqu. Cf. format PMML pour IRIS. limplmenter soi-mme dans


le systme dinformation.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 27
Freund & Schapire - ADABOOST (1996)

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 28
Toujours apprendre sur diffrentes versions des donnes.
Mais mieux diriger lapprentissage en se focalisant sur les
individus mal classs ltape prcdente.

Apprenants faibles (weak learner). Modle qui fait juste un peu mieux que le hasard.

Boosting. Combiner des weak learner de manire approprie permet de produire une modle
performant, nettement meilleur que chaque modle pris individuellement.

Pondration des individus. A ltape (b+1), lide est de donner une pondration plus leve aux
individus mal classs par Mb. La construction des modles est squentielle.

Pondration des modles. Systme de vote pondr (selon la performance) en classement.

Biais et variance. En orientation lapprentissage chaque tape, boosting agit sur le biais ; en les
combinant, il agit sur la variance.

Sur-apprentissage (overfitting). Augmenter B naboutit pas au sur-apprentissage (cf. bilan).

Arbres de dcision. Boosting peut sappliquer tout type de modle. Mais les arbres sont avantageux
parce quon peut moduler les proprits du modle (plus ou moins de profondeur ex. decision stump)
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 29
Un algorithme avant tout dfinir pour les problmes binaires
Y = {+, -} mais qui peut sappliquer aux problmes multi-
classes sous certaines restrictions.

Entre : B nombre de modles, ALGO algorithme dapprentissage, un ensemble de


donnes de taille n avec y cible K modalits, X avec p prdicteurs.

MODELES = {}
Les individus sont uniformment pondrs 1i = 1/n
Pour b = 1 B Faire
Construire un modle Mb sur (b) avec ALGO (b pondration ltape b)
Ajouter Mb dans MODELES n
Calculer le taux derreur pondr pour Mb : b b
i I yi y i
i 1
Si b > 0.5 ou b = 0, arrt de lalgorithme
Sinon
1 b
Calculer b ln
b
Les poids sont remis jour ib1 ib exp b . I yi yi
Et normaliss pour que la somme fasse 1
Fin Pour

Remarque : Si (b > 0.5), on passe des poids ngatifs, do larrt. Cette condition,
naturelle dans un cadre binaire (K = 2), devient trs restrictive en multi-classes (K > 2).
Lapprenant doit faire largement mieux que weak .
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 30
Passer par un vote pondr en classement.

Pour un individu i* classer,


Appliquer chaque modle Mb de MODELES y b i *
B
Prdiction boosting y M 1 i * arg max b . I y b (i*) yk
k
b1
Ce qui correspond un vote pondr

Remarque : Plus le modle est performant (b petit), plus son poids sera
lev (b grand), plus il psera dans le processus de dcision.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 31
La condition (b < 0.5) pour pouvoir poursuivre est trs
(trop) restrictive quand (K > 2). Comment dpasser cela ?

Dcomposer la modlisation en un ensemble de problmes binaires :

Stratgie 1 contre les autres, il y a K apprentissages effectuer


en prdiction, on choisit la conclusion qui a le score le plus lev

Stratgie 1 contre 1, il y a K(K-1)/2 apprentissages effectuer


en prdiction, on choisit la classe qui prsente le plus de victoires

1 b
Modifier le calcul de b ln ln K 1
b Vraie gnralisation.
Lorsque K = 2, on
1
SAMME
Ce qui a pour effet b 1 retrouve
dallger la contrainte K ADABOOST.M1.
(Zhu & al., 2009)

Dautres approches existent, mais elles sont peu diffuses, peu prsentes dans les logiciels.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 32
La librairie adabag pour R.

library(adabag)

#boosting avec 100 arbres


model.boosting <- boosting(y ~ ., data = d.train, mfinal=100)

#importance des variables :


#somme des contributions des variables dans chaque arbre
#pondre par limportance de larbre b
importanceplot(model.boosting)

#prdiction sur chatillon test


p.boosting <- predict(model.boosting,newdata=d.test)

#taux d'erreur
print(erreur(d.test$y,p.boosting$class)) # 0.1242

#frontires dans le plan


nuage(d.test,factor(p.boosting$class))

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 33
Boosting agit sur le biais. On peut se limiter des modles trs
simples comme les decision stump (arbre une seule
segmentation) qui ont un fort biais mais une trs faible variance.

library(adabag)

#paramtres de construction de l'arbre


parametres = list(cp=0,maxdepth=1,minbucket=1)

#boosting avec 100 decision stump


stump.boosting <- boosting(y ~ ., data = d.train,
mfinal=100, control=parametres)

(1) On ne tient pas compte des interactions dans le modle de base,


pourtant le boosting amliore les performances parce ce que les
variables apparaissent tour tour dans les diffrents arbres, et = 0.1398
quavec les seuils de dcoupage diffrents, il induit une sorte de
frontire floue .
(2) Avec un arbre 2 niveaux, on tiendrait compte des interactions
dordre 2 entre les variables. Etc. Mais ce moindre biais peut faire
perdre en variance.
(3) Si tous les descripteurs sont binaires, boosting decision stump
correspond une combinaison linaire des indicatrices

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 34
Un exemple didactique (Shapire & Freund, 2012)
Cf. Cheng Li A gentle introduction to gradient boosting

+
+ +
Un arbre un niveau ne saura pas
+
discerner parfaitement les + des
+

Mais une combinaison de 3 arbres un niveau saura le faire !!!

+ +
+ + + + +
+
+
H = signe (0.42 x + + 0.65 x +
+ 0.92 x
)
+
+ +
+

+
La combinaison produit un + +

modle qui, lui, sait discerner +

parfaitement les classes +

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 35
Bonnes performances en prdiction
Paramtrage simple (B)
Importance des variables
Joue sur le biais et la variance
Ne ncessite pas des grands arbres
On peut jouer sur la profondeur pour tenir compte des
interactions (nombre de splits - ex. decision stump).

Pas de paralllisation possible


Problme si Mb trop simple : underfitting
Problme si Mb trop complexe : overfitting
Problme si points aberrants ou bruits, poids exagrs
Dploiement dun tel modle reste compliqu.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 36
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 37
R et Python intgrent des packages performants pour les mthodes
ensemblistes. R avec randomForest , adabag , etc. (vu dans ce
support) ; Python avec le module scikit-learn .

Lavantage de R et Python est que lon


dispose dun langage de programmation
performant pour dfinir des enchanements
de traitements sophistiqus.
Linconvnient est que matriser ces
langages ncessite un apprentissage.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 38
Dans Tanagra, les
mthodes
ensemblistes peuvent
tre combines avec
tout type de modle
de base (ici arbre de
type C4.5).

La combinaison
BAGGING + RND TREE
correspond au
Random Forest.

Tutoriel Tanagra, Random Forests , mars 2008.


Tutoriel Tanagra, Analyse discriminante PLS Etude comparative , mai 2008, page 19.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 39
Matrice de confusion
sur les 268 obs.

Fichier PIMA,
dcoupage 500
app., 268 test.

Lenchanement semble complexe mais, bien y


regarder, nous distinguons les principales tapes.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 40
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 41
Les mthodes ensemblistes qui appliquent rptitivement une
mthode dapprentissage sur des versions diffrentes des
donnes (r-chantillonnage, repondration) sont maintenant
bien connues, les gains en performances sont reconnues.

Le seul vritable frein est le manque de lisibilit du mta-modle,


malgr lindicateur importance des variables , qui empche
une interprtation sophistique des relations de causes effet,
ncessaire dans certains domaines.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 42
Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 43
Articles de rfrence

Breiman L., Bagging Predictors , Machine Learning, 26, p. 123-140, 1996.

Breiman L., Random Forests , Machine Learning, 45, p. 5-32, 2001.

Freund Y., Schapire R., Experiments with the new boosting algorithm ,
International Conference on Machine Learning, p. 148-156, 1996.

Hastie T., Tibshirani R., Friedman J., The elements of Statistical Learning - Data
Mining, Inference and Prediction , Springer, 2009.

Zhu J., Zou H., Rosset S., Hastie T., Multi-class AdaBoost , Statistics and Its
Interface, 2, p. 349-360, 2009.

Ricco Rakotomalala
Tutoriels Tanagra - http://tutoriels-data-mining.blogspot.fr/ 44