site de Fabien Torre, université de Lille


Productions et combinaisons d'hypothèses en apprentissage automatique

Notes de cours sur les techniques de combinaison de classifieurs (boosting, bagging, ensemble methods, leveraging, etc.).

Supports 2009-2010 (slides en PDF, 1 ou 4 ou 8 slides par page) : (1on1)(4on1)(8on1)

Technique de bagging (Léo Breiman, 1996)

Compromis biais-variance

L'erreur en généralisation peut être décomposée en deux termes : biais et variance.

Ces deux types d'erreur sont liées au langage choisi.

  • Soit celui-ci est trop pauvre pour contenir le concept cible et, dans ce cas, l'apprentissage revient à chercher la meilleure approximation de la cible dans le langage. L'erreur de l'approximation finalement trouvée sera due au biais (de langage).
  • Soit le concept cible peut être représenté dans le langage des hypothèses mais, cette fois, la richesse du langage fait qu'il est probable que d'autres hypothèses aient le même comportement que la cible sur les données disponibles. L'algorithme d'apprentissage doit choisir parmi ces candidats équivalents, au hasard. L'erreur en généralisation de l'hypothèse choisie sera due à la variance.

Ces deux objectifs, réduire la variance et réduire le biais, sont naturellement incompatibles et c'est le meilleur compromis qui doit être trouvé.

Algorithmes de base

Cette technique concerne les apprenants dont l'erreur est due en plus grande partie à la variance, c'est-à-dire des apprenants qui réagissent à de petites modifications de l'ensemble d'apprentissage en produisant des hypothèses différentes à chaque fois.

La solution proposée est justement d'utiliser plusieurs fois l'appenant pour obtenir autant d''hypothèses et les combiner au sein d'un vote. Pour obtenir des hypothèses différentes, le bagging propose de construire de nouveaux échantillons à partir des données initiales.

Échantillonnage

  • Entrée : $A$ un ensemble des données d'apprentissage contenant $n$ exemples ;
  • Sortie : $A'$ un nouvel ensemble de données de même taille ;
  • Tirer avec remise $n$ exemples de $A$ et les placer dans $A'$.

Bagging

  • Entrées : un ensemble d'exemples $A = \{ (x_{i},y_{i}) \}$, un nombre d'itérations $T$ à effectuer, un apprenant $L$ ;
  • Sortie : $H$ le classifieur final ;
  • Pour $t$ allant de 1 à $T$
    • $A_{t} = $Échantillonnage($A$)
    • $h_{t} = L(A_{t})$
  • retourner $H(x) = \mbox{sign} \left( \sum_{t=1}^{T} h_{t}(x) \right)$

La technique a été pensée pour les apprenants instables mais il est ensuite naturel de vouloir l'utiliser pour les apprenants dont nous disposons. Si ces algoritmes sont naturellement stables, on les rend instables, le plus souvent en ajoutant du stochastique !

Bagging d'arbres

Léo Breiman a ensuite proposé du bagging d'arbres de décision. Les méthodes comme C4.5 étant plutôt stables, il faut ajouter du stochastique dans la construction de l'arbre.

Il y a plusieurs manières de faire cela. Celle retenue ici est de ne considérer qu'un sous-ensemble des attributs à chaque nœud de l'arbre. Ces sous-ensembles sont construits par un tirage aléatoire uniforme de $m$ attributs parmi tous ceux disponibles. Le test choisi a un nœud est le meilleur selon un critère entropique classique parmi tous les tests que l'on peut contruire sur les $m$ variables sélectionnées.

Cette méthode nécessite donc le règlage du paramètre $m$.

Adaboost

Introduction

On a vu que l'algorithme adaboost nous venait du cadre PAC.

Adaboost

  • Entrées : $m$ exemples $x_{i}$ et leurs classes $y_{i} \in \{-1,+1\}$ ; $T$ un nombre d'itérations à effectuer ; $A$ un apprenant faible acceptant en entrée un échantillon d'exemples étiquetés et pondérés.
  • Sortie : $H$ le classifieur final.
  • Pour $i=1$ à $m$: $w_{i} = 1/m$ initialisation des poids des exemples
  • Pour $t=1$ à $T$
    • $\displaystyle h_{t} = A(\{ (x_{i},y_{i},w_{i}) \})$
    • $\epsilon_{t} = \sum_{i:h_{t}(x_{i})\not=y_{i}} w_{i}$
    • $\displaystyle\alpha_{t} = \frac{1}{2} \mbox{log}\left(\frac{1-\epsilon_{t}}{\epsilon_{t}}\right)$
    • $\displaystyle Z_{t} = \sum_{i=1}^{m} \left[ w_{i}.\mbox{exp}(-\alpha_{t} y_{i} h_{t}(x_{i})) \right]$
    • Pour $i=1$ à $m$: $\displaystyle w_{i} = \frac{w_{i}.\mbox{exp}(-\alpha_{t} y_{i} h_{t}(x_{i}))}{Z_{t}}$
  • return $\displaystyle H(x) = \mbox{sign} \left( \sum_{t=1}^{T} \alpha_{t} h_{t}(x) \right)$

Voir l'applet de Yoav Freund montrant le comportement d'AdaBoost.

Dans le cadre PAC, des conditions ont été définies pour que Adaboost produise un boosting effectif et dans la pratique nous devons donc nous interroger sur les points suivants :

  • dispose-t-on d'assez d'exemples ?
  • le nombre d'itérations dans Adaboost est-il suffisant ?
  • l'apprenant utilisé est-il réellement faible au sens du modèle PAC, c'est-à-dire est-il meilleur qu'un classifieur aléatoire quelle que soit la distribution ?

A priori, on ne peut pas intervenir sur le premier point : il faut faire avec les exemples dont nous disposons, difficile d'en inventer d'autres. Le nombre d'itérations peut être augmenté si l'on a du temps et avec le risque d'un sur-apprentissage. Enfin, il est difficile de montrer qu'un apprenant fournit toujours des hypothèses meilleures que le hasard mais les candidats sont nombreux : arbres de décision limités à un niveau (decision stumps), arbres de décision, réseaux de neurones, classifieurs naïfs, etc.

Malgré ces inconnues, les résultats rapportés pour Adaboost sont très bons. Des propositions ont donc été émises pour expliquer ces bons résultats et tenter de les améliorer encore.

Compromis biais/variance

Léo Breiman a essayé de reprendre l'explication des performances du bagging pour justifier celles du boosting, à savoir la diminution de l'erreur due à la variance. Il considère que ces deux méthodes appartiennent à une même famille, les arcing classifiers (Adaptively Resample and Combine).

Il est cependant apparu que le boosting faisant plus que diminuer l'erreur due à la variance et qu'expérimentalement le boosting obtenait de meilleurs résultats que le bagging.

Minimiser l'erreur empirique

On a l'inégalité suivante :

\begin{displaymath}
\frac{1}{m} \left\vert i : h(x_{i}) \not= y_{i} \right\vert \leq \prod_{t=1}^{T} Z_{t}
\end{displaymath}

Une stratégie possible est alors d'essayer de minimiser chacun des $Z_{t}$. Cette piste conduit à :

  • contraindre l'apprenant à fournir à chaque étape $t$ l'hypothèse qui minimise $Z_{t}$ ;
  • définir $\alpha_{t}$ comme suit :
    \begin{displaymath}
\alpha_{t} = \frac{1}{2} \mbox{log}\left( \frac{1+r_{t}}{1-r_{t}} \right)
\end{displaymath}
    avec
    \begin{displaymath}
r_{t} = \sum_{i=1}^{n} w_{i}.y_{i}.h_{t}(x_{i})
\end{displaymath}

Prise en compte des marges

Une observation est souvent rapportée au sujet d'Adaboost : l'erreur en généralisation continue à chuter alors que l'erreur empirique ne varie plus (parfois elle est simplement nulle). La première leçon de cette observation est que la stabilisation de l'erreur empirique n'est pas un bon critère d'arrêt.

Une explication possible à cette observation passe par les marges. La marge d'un exemple est défini par :

\begin{displaymath}
f(x) = \frac{\sum_{t=1}^{T} \alpha_{t}.h_{t}(x)}{\sum_{t=1}^{T} \alpha_{t}}
\end{displaymath}

Autrement dit, il s'agit de la somme des votes exprimés sur cet exemple par les hypothèses produites, chacune votant avec son poids normalisé.

Un exemple pour lequel toutes les hypothèses s'accorderaient sur la même classe aurait donc une marge de 1. Intuitivement, on aurait plus confiance dans cette classification que dans le même prédiction avec une marge de seulement 0.1.

Il existe une inégalité qui confirme cette intuition et que voici dans une forme simplifiée : pour tout $\theta$, on a

\begin{displaymath}
\mbox{erreur}(H) = P[y_{i}.f(x_{i}) \leq 0] \leq P[y_{i}.m(x...
...left( \sqrt\frac{log \vert{\cal C}\vert}{m.\theta^{2}} \right)
\end{displaymath}

Expérimentalement, on constate effectivement que Adaboost fait croître les marges, même après que l'erreur empirique ne baisse plus, ce qui explique le phénomène observé.

Cependant, on peut vérifier qu'AdaBoost ne produit pas les marges maximales, ce qui semble laisser la porte ouverte à une éventuelle optimisation.

À nouveau les résultats sont négatifs :

  • les modifications d'Adaboost visant à optimiser explicitement la marge n'entraînent pas d'amélioration sur les prédictions ;
  • Michael Harries démontre qu'un algoritme qui fait voter des arbres parfaits (tous les exemples d'apprentissage ont donc une marge maximale de 1) n'a pas de meilleurs résultats que Adaboost.

Productions stochastiques d'hypothèses

Tom Dietterich comparent systématiquement les performances d'arbres de décision appris par bagging, boosting, ou produits de manière stochastique.

Pour la production stochastique, la stratégie suivante est adoptée : à chaque nœud, tous les tests possibles sont considérés, évalués et classés, puis le test associé au nœud est choisi parmi les 20 meilleurs.

Les hypothèses produites par les trois méthodes sont comparées suivant deux critères : leur taux d'erreur et leur diversité. Il apparaît alors que le bagging et la production stochastique fournissent des hypothèses assez semblables et de faible erreur. Par contre, Adaboost produit des hypothèses beaucoup plus diverses, dont certaines avec des taux d'erreur élevés.

Les expérimentations menées par Tom Dietterich amènent aux conclusions suivantes :

  • le bagging nécessite beaucoup d'exemples ;
  • en l'absence de bruit : adaboost > stochastique > bagging ;
  • en présence de bruit : bagging > stochastique > adaboost.

Lectures

Autour de AdaBoost

Yoav Freund and Robert E. Schapire
Experiments with a New Boosting Algorithm
ICML 1996, pages 148-156.
page CiteSeer ]

Autres techniques

Leo Breiman
Bagging Predictors
Machine Learning Journal, 24:2, pages 123-140, 1996.
page CiteSeer ]
Thomas G. Dietterich
An Experimental Comparison of Three Methods for Constructing Ensembles of Decision Trees: Bagging, Boosting, and Randomization
Machine Learning Journal, 40:2, pages 139--158, 2000.
page CiteSeer ][ postscript gzippé ]
Thomas G. Dietterich
Ensemble Methods in Machine Learning
First International Workshop on Multiple Classifier Systems, LNCS 1857, pages 1-15, 2000.
page CiteSeer ][ postscript gzippé ]

Explications théoriques

Roberto Esposito et Lorenza Saitta
Monte Carlo Theory as an Explanation of Bagging and Boosting
IJCAI 2003, pages = 499-504.
version PDF ]
Fabien Torre Valid HTML5! Valid CSS!
Accueil > Enseignement > Cours > Intelligence Artificielle > Apprentissage automatique > Combinaisons
(contenu mis à jour )
site de Fabien Torre, université de Lille

Description

Survoler un lien de navigation pour lire sa description ici...