Bagging, boost et stacking en machine learning

Quelles sont les similitudes et les différences entre ces 3 méthodes:

  • Bagging,
  • Boosting,
  • Stacking?

Laquelle est la meilleure? Et pourquoi?

Pouvez-vous me donner une exemple pour chacun?

Commentaires

  • pour une référence de manuel, je recommande:  » Méthodes densemble: fondations et algorithmes  » par Zhou, Zhi-Hua
  • Voir ici une question relative .

Réponse

Tous les trois sont des « méta-algorithmes »: approches pour combiner plusieurs techniques dapprentissage automatique en un seul modèle prédictif afin de diminuer la variance ( bagging ), le biais ( boosting ) ou améliorer la force prédictive ( stacking alias ensemble ).

Chaque algorithme se compose de deux étapes:

  1. Produire une distr ibution de modèles ML simples sur des sous-ensembles de données dorigine.

  2. Combinaison de la distribution en un seul modèle « agrégé ».

Voici une brève description des trois méthodes:

  1. Bagging (signifie B ootstrap Agg regat ing ) est un moyen de diminuer la variance de votre prédiction en générant des données supplémentaires pour lentraînement à partir de votre ensemble de données dorigine à laide de combinaisons avec des répétitions pour produire des multisets de la même cardinalité / taille que vos données dorigine. En augmentant la taille de votre ensemble dentraînement, vous ne pouvez pas améliorer la force prédictive du modèle, mais simplement réduire la variance, en ajustant étroitement la prédiction au résultat attendu.

  2. Boosting est une approche en deux étapes, où lon utilise dabord des sous-ensembles de les données dorigine pour produire une série de modèles moyennement performants, puis « booste » leurs performances en les combinant à laide dune fonction de coût particulière (= vote majoritaire). Contrairement à lensachage, dans le boosting classique la création du sous-ensemble nest pas aléatoire et dépend des performances des modèles précédents: chaque nouveau sous-ensemble contient les éléments qui étaient (susceptibles dêtre) mal classés par les modèles précédents.

  3. Stacking est similaire au boosting : vous appliquez également plusieurs modèles à vos données dorigine. La différence ici est, cependant, que vous n’avez pas simplement une formule empirique pour votre fonction de pondération, introduisez plutôt un méta-niveau et utilisez un autre modèle / approche pour estimer l’entrée ainsi que les sorties de chaque modèle pour estimer les poids ou, en d’autres termes, pour déterminer quels modèles fonctionnent bien et ce qui est mal vu ces données dentrée.

Voici un tableau de comparaison:

Tableau comparatif

Comme vous le voyez, ce sont toutes des approches différentes pour combiner plusieurs modèles en un meilleur, et il y a pas de gagnant unique ici: tout dépend de votre domaine et de ce que vous allez faire. Vous pouvez toujours considérer l stacking comme une sorte de boosting davancées supplémentaires, cependant, la difficulté de trouver une bonne approche pour votre méta-niveau rend difficile lapplication de cette approche dans la pratique .

De brefs exemples de chacun:

  1. Ensachage : Données sur lozone .
  2. Boosting : est utilisé pour améliorer la précision de la reconnaissance optique de caractères (OCR).
  3. Empilement : est utilisé dans la classification des puces à ADN du cancer en médecine.

Commentaires

  • Il semble que votre définition de boosting soit différente de celle du wiki (pour laquelle vous avez lié) ou de cet article . Les deux disent que pour booster le prochain classificateur utilise les résultats de ceux déjà entraînés, mais vous navez ‘ pas mentionné cela. La méthode que vous décrivez dautre part ressemble à certaines techniques de vote / calcul de moyenne.
  • @ a-rodin: Merci davoir souligné cet aspect important, jai complètement réécrit cette section pour mieux refléter cela. En ce qui concerne votre deuxième remarque, je crois comprendre que le boosting est aussi un type de vote / moyenne, ou vous ai-je mal compris?
  • @AlexanderGalkin Javais en tête le boosting de gradient au moment du commentaire: ça ne ‘ t ressemble à un vote mais plutôt à une technique dapproximation de fonction itérative. Cependant, par ex. AdaBoost ressemble plus à un vote, donc jai gagné ‘ t discuter à ce sujet.
  • Dans votre première phrase, vous dites que Boosting diminue les biais, mais dans le tableau de comparaison, vous dites il augmente la force prédictive.Ces deux éléments sont-ils vrais?

Réponse

Ensachage :

  1. parallel ensemble: chaque modèle est construit indépendamment

  2. vise à diminuer la variance , pas de biais

  3. convient aux modèles à faible biais à variance élevée (modèles complexes)

  4. un exemple dune méthode basée sur un arbre est random forest , qui développe des arbres pleinement développés (notez que RF modifie la procédure développée pour réduire la corrélation entre les arbres)

Boosting :

  1. séquentiel ensemble: essayez dajouter de nouveaux modèles qui fonctionnent bien là où les modèles précédents manquent

  2. visent à diminuer b ias , pas de variance

  3. convient aux modèles à faible variance à biais élevé

  4. un exemple de méthode basée sur un arbre est gradient boosting

Commentaires

  • Commenter chacun des points pour répondre pourquoi est-il ainsi et comment y parvenir serait un excellent amélioration de votre réponse.
  • Pouvez-vous partager un document / lien expliquant que le renforcement réduit la variance et comment cela fonctionne-t-il? Je veux juste comprendre plus en profondeur
  • Merci Tim, je ‘ ajouterai quelques commentaires plus tard. @ML_Pro, de la procédure de boosting (par exemple page 23 de cs.cornell.edu/courses/cs578/2005fa/… ), il ‘ est compréhensible que le boosting puisse réduire les biais.

Réponse

Juste pour développer un peu la réponse de Yuqian. Lidée derrière lensachage est que lorsque vous OVERFIT avec une méthode de régression non paramétrique (généralement des arbres de régression ou de classification, mais peut être à peu près nimporte quelle méthode non paramétrique), vous tendent à aller vers la partie variance élevée, pas (ou faible) biais du compromis biais / variance. En effet, un modèle de surajustement est très flexible (biais donc faible sur de nombreux rééchantillons de la même population, si ceux-ci étaient disponibles) mais haute variabilité (si je collecte un échantillon et le sur-ajustement, et que vous collectez un échantillon et le surajoutez, nos résultats seront différents car la régression non paramétrique suit le bruit dans les données). Que pouvons-nous faire? Nous pouvons prendre de nombreux rééchantillons (à partir de bootstrap) , chaque surajustement, et les moyenne ensemble. Cela devrait conduire au même biais (faible) mais annuler une partie de la variance, du moins en théorie.

Lamplification du gradient en son cœur fonctionne avec les régressions non paramétriques UNDERFIT, qui sont trop simples et ne sont donc pas suffisamment flexibles pour décrire la relation réelle dans les données (cest-à-dire biaisées) mais, parce quelles sont sous-ajustées, elles ont une faible variance (vous auriez tendance à obtenir le même résultat si vous collectez de nouveaux ensembles de données). Comment corrigez-vous cela? Fondamentalement, si vous sous-ajustement, les RÉSIDUELS de votre modèle contiennent toujours une structure utile (informations sur la population), vous augmentez donc larbre que vous avez (ou tout autre prédicteur non paramétrique) avec un arbre construit sur les résidus. Cela devrait être plus flexible que larbre dorigine. Vous générez à plusieurs reprises de plus en plus darbres, chacun à létape k augmenté dun arbre pondéré basé sur un arbre ajusté aux résidus de létape k-1. Lun de ces arbres doit être optimal, vous finissez donc par pondérer tous ces arbres ensemble ou en sélectionnant celui qui semble être le mieux adapté. Ainsi, le renforcement du gradient est un moyen de créer un groupe darbres candidats plus flexibles.

Comme toutes les approches de régression ou de classification non paramétriques, parfois le bagging ou le boosting fonctionne très bien, parfois lune ou lautre approche est médiocre, et parfois une ou lautre approche (ou les deux) va planter et brûler.

De plus, ces deux techniques peuvent être appliquées à des approches de régression autres que les arbres, mais elles sont le plus souvent associées aux arbres, peut-être parce que cest difficile pour définir les paramètres afin déviter un sous-ajustement ou un surajustement.

Commentaires

  • +1 pour largument overfit = variance, underfit = biais! Une des raisons dutiliser les arbres de décision est quils sont structurellement instables et bénéficient donc davantage de légers changements de conditions. ( abbottanalytics.com / assets / pdf / … )

Réponse

Réponse

Pour récapituler en bref, Bagging et Boosting sont normalement utilisés dans un algorithme, tandis que Stacking est généralement utilisé pour résumer plusieurs résultats issus dalgorithmes différents.

  • Bagging : Bootstrap sous-ensembles de fonctionnalités et déchantillons pour obtenir plusieurs prédictions et moyennes (ou autres moyens) les résultats, par exemple, Random Forest, qui éliminent la variance et nont pas de problème de surajustement.
  • Boosting : la différence avec Bagging est que le modèle plus récent essaie de découvrez lerreur commise par la précédente, par exemple GBM et XGBoost, qui éliminent la variance mais présentent un problème de surajustement.
  • Stacking : Normalement utilisé dans les compétitions, quand on utilise plusieurs algorithmes pour sentraîner sur le même ensemble de données et la même moyenne (max, min ou dautres combinaisons) le résultat afin dobtenir une plus grande précision de prédiction.

Réponse

les deux ensachage et le boosting utilisent un seul algorithme dapprentissage pour toutes les étapes; mais ils utilisent des méthodes différentes pour manipuler les échantillons dapprentissage. les deux sont une méthode dapprentissage densemble qui combine les décisions de plusieurs modèles
Bagging :
1. rééchantillonne les données dentraînement pour obtenir M sous-ensembles (bootstrap);
2. entraîne M classificateurs (même algorithme) basés sur M ensembles de données (échantillons différents);
3. classificateur final combine M sorties par vote;
les échantillons ont le même poids;
les classificateurs ont le même poids;
réduit lerreur en diminuant la variance
Boosting : ici se concentrer sur lalgorithme adaboost
1. commencer avec le même poids pour tous les échantillons du premier tour;
2. dans les tours M-1 suivants, augmenter le poids des échantillons mal classés au dernier tour, diminuer poids des échantillons correctement classés au dernier tour
3. en utilisant un vote pondéré, le classificateur final combine plusieurs classificateurs des tours précédents, et donne des poids plus importants aux classificateurs avec moins derreurs de classification.
repoids pas à pas les échantillons; pondération pour chaque tour en fonction des résultats du dernier tour
repesage des échantillons (boosting) au lieu de rééchantillonnage (ensachage).

Réponse

Bagging

Bootstrap AGGregatING (Bagging) est un méthode de génération densemble qui utilise des variations déchantillons utilisées pour entraîner les classificateurs de base. Pour chaque classificateur à générer, lensachage sélectionne (avec répétition) N échantillons de lensemble dapprentissage de taille N et entraîne un classificateur de base. Ceci est répété jusquà ce que la taille souhaitée de lensemble soit atteinte.

Lensachage doit être utilisé avec des classificateurs instables, cest-à-dire des classificateurs qui sont sensibles aux variations de lensemble dapprentissage comme les arbres de décision et les perceptrons.

Le sous-espace aléatoire est une approche similaire intéressante qui utilise des variations dans les entités au lieu de variations dans les échantillons, généralement indiquées sur des ensembles de données avec plusieurs dimensions et un espace dentités clairsemé.

Boosting

Boosting génère un ensemble de lajout de classificateurs qui classent correctement les «échantillons difficiles» . Pour chaque itération, lamplification met à jour les poids des échantillons, de sorte que les échantillons mal classés par lensemble puissent avoir un poids plus élevé, et donc une probabilité plus élevée dêtre sélectionnés pour entraîner le nouveau classificateur.

est une approche intéressante mais très sensible au bruit et nest efficace quavec des classificateurs faibles. Il existe plusieurs variantes des techniques de Boosting AdaBoost, BrownBoost (…), chacune ayant sa propre règle de mise à jour de poids afin déviter certains problèmes spécifiques (bruit, déséquilibre de classe…).

Lempilement

Lempilement est un approche de méta-apprentissage dans laquelle un ensemble est utilisé pour « extraire des caractéristiques » qui seront utilisées par une autre couche de lensemble. Limage suivante (tirée du Kaggle Ensembling Guide ) montre comment cela fonctionne.

entrez la description de limage ici

Premièrement (en bas) plusieurs classificateurs différents sont entraînés avec lensemble dapprentissage, et leurs résultats (probabilités) sont utilisé pour entraîner la couche suivante (couche intermédiaire), enfin, les sorties (probabilités) des classificateurs de la deuxième couche sont combinées en utilisant la moyenne (AVG).

Il existe plusieurs stratégies utilisant validation croisée, mélange et autres approches pour éviter le surajustement de lempilement. Mais certaines règles générales sont déviter une telle approche sur de petits ensembles de données et dessayer dutiliser divers classificateurs afin quils puissent se «compléter» les uns les autres.

Lempilement a été utilisé dans plusieurs compétitions dapprentissage automatique telles que Kaggle et Top Codeur. Cest définitivement un incontournable de lapprentissage automatique.

Réponse

Lensachage et le boosting ont tendance à utiliser de nombreux modèles homogènes.

Lempilement combine les résultats de types de modèles hétérogènes.

Comme aucun type de modèle na tendance à être le mieux adapté à toute distribution, vous pouvez voir pourquoi cela peut augmenter la puissance prédictive.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *