Bagging, boost en stacking in machine learning

Wat zijn de overeenkomsten en verschillen tussen deze 3 methoden:

  • Bagging,
  • Boosting,
  • Stacking?

Wat is de beste? En waarom?

Kunt u mij een voorbeeld voor elk?

Opmerkingen

  • voor een referentie in een leerboek raad ik aan: ” Ensemble-methoden: grondslagen en algoritmen ” door Zhou, Zhi-Hua
  • Zie hier een gerelateerde vraag .

Answer

Alle drie zijn zogenaamde “meta-algoritmen”: benaderingen om verschillende machine learning-technieken te combineren in één voorspellend model om de variantie ( bagging ), bias ( boosting ) of het verbeteren van de voorspellende kracht ( stacking alias ensemble ).

Elk algoritme bestaat uit twee stappen:

  1. Een distr ibutatie van eenvoudige ML-modellen op subsets van de originele gegevens.

  2. De distributie combineren tot één “geaggregeerd” model.

Hier is een korte beschrijving van alle drie de methoden:

  1. Bagging (staat voor B ootstrap Agg regat ing ) is een manier om de variantie van uw voorspelling door aanvullende gegevens voor training te genereren uit uw oorspronkelijke gegevensset met behulp van combinaties met herhalingen om multisets te produceren met dezelfde kardinaliteit / grootte als uw oorspronkelijke gegevens. Door de omvang van uw trainingsset te vergroten, kunt u “de voorspellende kracht van het model niet verbeteren, maar gewoon de variantie verkleinen en de voorspelling nauwkeurig afstemmen op het verwachte resultaat.

  2. Boosting is een aanpak in twee stappen, waarbij men eerst subsets van de oorspronkelijke gegevens om een reeks gemiddeld presterende modellen te produceren en vervolgens hun prestaties te verbeteren door ze te combineren met behulp van een bepaalde kostenfunctie (= stemming bij meerderheid). In tegenstelling tot bagging, in de klassieke boosting het creëren van een subset is niet willekeurig en hangt af van de prestaties van de vorige modellen: elke nieuwe subset bevat de elementen die (waarschijnlijk) verkeerd zijn geclassificeerd door eerdere modellen.

  3. Stapelen lijkt op een boost : u past ook verschillende modellen toe op uw oorspronkelijke gegevens. Het verschil hier is, dat je echter niet alleen een empirische formule hebt voor je gewichtsfunctie, maar eerder een metaniveau introduceert en een ander model / benadering gebruikt om de input te schatten, samen met de output van elk model om de gewichten te schatten, of, met andere woorden, om te bepalen welke modellen goed en wat slecht presteren gezien deze invoergegevens.

Hier is een vergelijkingstabel:

Vergelijkende tabel

Zoals u ziet, zijn dit allemaal verschillende benaderingen om verschillende modellen te combineren tot een betere, en er is geen enkele winnaar hier: alles hangt af van uw domein en wat u gaat doen. Je kunt stacking nog steeds behandelen als een soort van meer vooruitgang boosting , maar de moeilijkheid om een goede aanpak voor je metaniveau te vinden, maakt het moeilijk om deze aanpak in de praktijk toe te passen .

Korte voorbeelden van elk:

  1. Afzakken : Ozongegevens .
  2. Boosting : wordt gebruikt om de nauwkeurigheid van optische tekenherkenning (OCR) te verbeteren.
  3. Stapelen : wordt gebruikt in de classificatie van microarrays van kanker in de geneeskunde.

Opmerkingen

  • Het lijkt erop dat uw boosting-definitie anders is dan die in de wiki (waarnaar u een link heeft gelegd) of in dit artikel . Beiden zeggen dat bij het boosten van next classifier resultaten worden gebruikt van eerder getrainde classificaties, maar u ‘ zei dat niet. De methode die u aan de andere kant beschrijft, lijkt op sommige stem- / modelmiddelingstechnieken.
  • @ a-rodin: Bedankt voor het wijzen op dit belangrijke aspect, ik heb deze sectie volledig herschreven om dit beter weer te geven. Wat betreft uw tweede opmerking, ik begrijp dat boosting ook een soort stemmen / middelen is, of heb ik u verkeerd begrepen?
  • @AlexanderGalkin Ik had gradiëntboost in gedachten op het moment van commentaar: dat doet het niet ‘ t lijkt op stemmen, maar eerder als een iteratieve functiebenaderingstechniek. Maar b.v. AdaBoost lijkt meer op stemmen, dus ik heb ‘ gewonnen om er geen ruzie over te maken.
  • In je eerste zin zeg je dat Boost vooringenomenheid vermindert, maar in de vergelijkingstabel zeg je het verhoogt de voorspellende kracht.Zijn deze beide waar?

Antwoord

Bagging :

  1. parallel ensemble: elk model wordt onafhankelijk gebouwd

  2. streven ernaar variantie te verkleinen , not bias

  3. geschikt voor modellen met hoge variantie, lage bias (complexe modellen)

  4. een voorbeeld van een op bomen gebaseerde methode is willekeurig bos , die volgroeide bomen ontwikkelen (merk op dat RF de volwassen procedure wijzigt om de correlatie tussen bomen)

Boosting :

  1. sequentieel ensemble: probeer nieuwe modellen toe te voegen die het goed doen waar eerdere modellen missen

  2. streven ernaar om b ias , not variance

  3. geschikt voor modellen met lage variantie en hoge bias

  4. een voorbeeld van een boomgebaseerde methode is gradiëntverhoging

Opmerkingen

  • Commentaar geven op elk van de punten om te antwoorden waarom is het zo en hoe het wordt bereikt, zou geweldig zijn verbetering van uw antwoord.
  • Kunt u een document / link delen waarin wordt uitgelegd dat het verhogen van de variantie wordt verminderd en hoe dit werkt? Ik wil het gewoon wat meer begrijpen.
  • Bedankt Tim, ik ‘ zal later wat opmerkingen toevoegen. @ML_Pro, vanuit de procedure van boosting (bijv. Pagina 23 van cs.cornell.edu/ourses/cs578/2005fa/… ), is het ‘ begrijpelijk dat boosting bias kan verminderen.

Antwoord

Om het antwoord van Yuqian een beetje uit te werken. Het idee achter bagging is dat wanneer je OVERFIT met een niet-parametrische regressiemethode (meestal regressie- of classificatiebomen, maar dit kan vrijwel elke niet-parametrische methode zijn) hebben de neiging om naar het hoge variantie-, geen (of lage) vooroordeel-deel van de afweging voor bias / variantie te gaan. Dit komt omdat een overfitting-model erg flexibel is (dus een lage bias over veel resamples van dezelfde populatie, als die beschikbaar waren) maar hoge variabiliteit (als ik een steekproef verzamel en deze overtref, en jij verzamelt een steekproef en deze overdrijft, zullen onze resultaten verschillen omdat de niet-parametrische regressie ruis in de gegevens bijhoudt). Wat kunnen we doen? We kunnen veel bootstrapping) , elk overfitting, en gemiddeld ze samen. Dit zou tot dezelfde bias (laag) moeten leiden, maar een deel van de variantie moeten teniet doen, althans in theorie.

Gradient boosting in de kern werkt met UNDERFIT niet-parametrische regressies, die te simpel zijn en dus niet flexibel genoeg om de echte relatie in de gegevens te beschrijven (dwz bevooroordeeld), maar omdat ze niet passen, hebben ze een lage variantie (je zou geneigd zijn om hetzelfde resultaat te krijgen als je nieuwe datasets verzamelt). Hoe corrigeer je dit? Kortom, als je onvoldoende fit bent, bevatten de RESIDUELEN van je model nog steeds een nuttige structuur (informatie over de populatie), dus je vergroot de boom die je hebt (of welke niet-parametrische voorspeller dan ook) met een boom die is gebouwd op de residuen. Dit zou flexibeler moeten zijn dan de originele boom. Je genereert herhaaldelijk meer en meer bomen, elk in stap k aangevuld met een gewogen boom op basis van een boom die is aangepast aan de residuen van stap k-1. Een van deze bomen zou optimaal moeten zijn, dus je eindigt door al deze bomen samen te wegen of door er een te kiezen die het beste lijkt te passen. Het verhogen van de gradiënt is dus een manier om een aantal flexibelere kandidaat-bomen te bouwen.

Zoals alle niet-parametrische regressie- of classificatiebenaderingen, werkt het soms goed oppakken of stimuleren, soms is de ene of de andere benadering middelmatig en soms of de andere benadering (of beide) zal crashen en verbranden.

Beide technieken kunnen ook worden toegepast op andere regressiebenaderingen dan bomen, maar ze worden meestal geassocieerd met bomen, misschien omdat het moeilijk is om parameters in te stellen om onder- of overfitting te voorkomen.

Opmerkingen

  • +1 voor het argument overfit = variance, underfit = bias! Een reden voor het gebruik van beslissingsbomen is dat ze structureel onstabiel zijn en dus meer profiteren van kleine veranderingen in de omstandigheden. ( abbottanalytics.com / assets / pdf / … )

Antwoord

Antwoord

Om kort samen te vatten: Bagging en Boosting wordt normaal gesproken binnen één algoritme gebruikt, terwijl Stacking gewoonlijk is gebruikt om verschillende resultaten van verschillende algoritmen samen te vatten.

  • Bagging : Bootstrap subsets van functies en voorbeelden om verschillende voorspellingen en gemiddelde (of andere manieren) de resultaten, bijvoorbeeld Random Forest, die variantie elimineren en geen overfittingprobleem hebben.
  • Boost : het verschil met Bagging is dat een later model probeert leer de fout van de vorige, bijvoorbeeld GBM en XGBoost, die de variantie elimineren maar een overfittingprobleem hebben.
  • Stapelen : wordt normaal gesproken gebruikt in wedstrijden, wanneer men meerdere algoritmen gebruikt om te trainen op dezelfde dataset en gemiddelde (max, min of andere combinaties) het resultaat om een hogere voorspellingsnauwkeurigheid te krijgen.

Answer

beide zakken en stimuleren van het gebruik van één leeralgoritme voor alle stappen; maar ze gebruiken verschillende methoden voor het omgaan met trainingsmonsters. beide zijn een ensemble-leermethode die beslissingen van meerdere modellen combineert.
Bagging :
1. test trainingsgegevens om M subsets (bootstrapping);
2. traint M classifiers (zelfde algoritme) op basis van M datasets (verschillende samples);
3. final classifier combineert M-outputs door te stemmen;
monsters wegen even zwaar;
classificaties wegen even zwaar;
verminderen fouten door de variantie te verkleinen
Boosting : hier focus op adaboost-algoritme
1. begin met gelijk gewicht voor alle monsters in de eerste ronde;
2. verhoog in de volgende M-1-ronden het gewicht van monsters die in de laatste ronde verkeerd zijn geclassificeerd, verlaag gewichten van steekproeven correct geclassificeerd in laatste ronde
3. door middel van een gewogen stemming combineert de uiteindelijke classificator meerdere classificaties van vorige rondes, en geeft classificatoren grotere gewichten met minder verkeerde classificaties.
stapsgewijze hergewichten van steekproeven; gewichten voor elke ronde op basis van resultaten van de laatste ronde
monsters opnieuw wegen (boosting) in plaats van resampling (bagging).

Answer

Bagging

Bootstrap AGGregatING (Bagging) is een methode voor het genereren van ensembles die variaties van samples gebruikt om basisclassificaties te trainen. Voor elke te genereren classifier selecteert Bagging (met herhaling) N monsters uit de trainingsset met maat N en traint een basisclassificator. Dit wordt herhaald totdat de gewenste grootte van het ensemble is bereikt.

Bagging moet worden gebruikt met onstabiele classificaties, dat wil zeggen classificaties die gevoelig zijn voor variaties in de trainingsset, zoals beslissingsbomen en perceptrons.

Random Subspace is een interessante vergelijkbare benadering die variaties in de features gebruikt in plaats van variaties in de samples, meestal aangegeven op datasets met meerdere dimensies en beperkte feature space.

Boosting

Boosting genereert een ensemble door door classificaties toe te voegen die “moeilijke voorbeelden” correct classificeren . Voor elke iteratie werkt boosting het gewicht van de samples bij, zodat samples die verkeerd zijn geclassificeerd door het ensemble een hoger gewicht kunnen hebben en daardoor een grotere kans om geselecteerd te worden voor het trainen van de nieuwe classifier.

Boosting is een interessante benadering, maar is erg ruisgevoelig en werkt alleen met zwakke classificatoren. Er zijn verschillende variaties van Boosting-technieken AdaBoost, BrownBoost (…), elk heeft zijn eigen regel voor het bijwerken van het gewicht om een aantal specifieke problemen te vermijden (lawaai, klassenonbalans…).

Stapelen

Stapelen is een meta-leeraanpak waarin een ensemble wordt gebruikt om “features te extraheren” die zullen worden gebruikt door een andere laag van het ensemble. De volgende afbeelding (van Kaggle Ensembling Guide ) laat zien hoe dit werkt.

voer de afbeeldingsbeschrijving hier in

Eerst (onder) worden verschillende classificatoren getraind met de trainingsset, en hun resultaten (waarschijnlijkheden) zijn gebruikt om de volgende laag (middelste laag) te trainen, tenslotte worden de outputs (waarschijnlijkheden) van de classificaties in de tweede laag gecombineerd met behulp van het gemiddelde (AVG).

Er zijn verschillende strategieën die kruisvalidatie, blending en andere benaderingen om overfitting te voorkomen. Maar sommige algemene regels zijn om een dergelijke benadering van kleine datasets te vermijden en verschillende classificaties te gebruiken, zodat ze elkaar kunnen “aanvullen”.

Stapelen is gebruikt in verschillende machine learning-wedstrijden zoals Kaggle en Top Coder. Het is absoluut een must-know in machine learning.

Answer

Bagging en boosting gebruiken meestal veel homogene modellen.

Stapelen combineert resultaten van heterogene modeltypes.

Aangezien geen enkel modeltype het best past in een hele distributie, kunt u zien waarom dit de voorspellende kracht kan vergroten.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *