Hvad er lighederne og forskellene mellem disse 3 metoder:
- Bagging,
- Boosting,
- Stacking?
Hvilken er den bedste? Og hvorfor?
Kan du give mig en eksempel for hver?
Kommentarer
- til en læreboghenvisning, jeg anbefaler: ” Ensemblemetoder: fundamenter og algoritmer ” af Zhou, Zhi-Hua
- Se her et relateret spørgsmål .
Svar
Alle tre er såkaldte “meta-algoritmer”: metoder til at kombinere flere maskinlæringsteknikker ind i en forudsigende model for at mindske variansen ( bagging ), bias ( boosting ) eller forbedre den forudsigelige kraft ( stabling alias ensemble ).
Hver algoritme består af to trin:
-
Producerer en distr ibution af enkle ML-modeller på undersæt af de originale data.
-
Kombination af distributionen i en “aggregeret” model.
Her er en kort beskrivelse af alle tre metoder:
-
Bagging (står for B ootstrap Agg regat ing ) er en måde at reducere variansen af din forudsigelse ved at generere yderligere data til træning fra dit originale datasæt ved hjælp af kombinationer med gentagelser for at producere multisæt af samme kardinalitet / størrelse som dine originale data. Ved at øge størrelsen på dit træningssæt kan du ikke forbedre modelens forudsigelige kraft, men bare mindske variansen ved at afstemme forudsigelsen til det forventede resultat.
-
Boosting er en totrins tilgang, hvor man først bruger delmængder af de originale data til at producere en række modeller med gennemsnitligt udførelse og derefter “øger” deres præstation ved at kombinere dem sammen ved hjælp af en bestemt omkostningsfunktion (= flertalsstemme). I modsætning til bagging i klassisk boost oprettelsen af delmængde er ikke tilfældig og afhænger af præstationen af de tidligere modeller: hver nye delmængde indeholder de elementer, der (sandsynligvis vil blive) fejlagtigt klassificeret af tidligere modeller.
-
Stacking svarer til boosting : du anvender også flere modeller på dine originale data. Forskellen her er, dog at du ikke kun har en empirisk formel til din vægtfunktion, snarere introducerer du et metaniveau og bruger en anden model / tilgang til at estimere input sammen med output fra hver model til at estimere vægten eller med andre ord for at bestemme, hvilke modeller der fungerer godt, og hvad der er dårligt givet disse inputdata.
Her er en sammenligningstabel:
Som du ser, er alle disse forskellige tilgange for at kombinere flere modeller til en bedre, og der er ingen enkelt vinder her: alt afhænger af dit domæne og hvad du vil gøre. Du kan stadig behandle stabling som en slags flere fremskridt boosting men vanskeligheden ved at finde en god tilgang til dit metaniveau gør det vanskeligt at anvende denne tilgang i praksis .
Korte eksempler på hver:
- Bagging : Ozondata .
- Boosting : bruges til at forbedre optisk tegngenkendelse (OCR) nøjagtighed.
- Stacking : bruges i klassificering af kræftmikroarrays i medicin.
Kommentarer
- Det ser ud til, at din boosting-definition er forskellig fra den i wiki (som du linkede til) eller i dette papir . Begge siger, at ved boosting af den næste klassifikator bruges resultater af tidligere uddannede, men du nævner det ikke ‘. Den metode, du beskriver på anden hånd, ligner nogle af afstemning / model-gennemsnitsteknikker.
- @ a-rodin: Tak fordi du pegede på dette vigtige aspekt, jeg skrev dette afsnit fuldstændigt om for bedre at afspejle dette. Med hensyn til din anden bemærkning er min forståelse, at boosting også er en type afstemning / gennemsnit, eller forstod jeg dig forkert?
- @ AlexanderGalkin Jeg havde i tankerne Gradient boosting på tidspunktet for kommentaren: det gør ikke ‘ t ligner at stemme, men snarere som en iterativ funktionstilnærmelsesmetode. Dog f.eks. AdaBoost ser mere ud som at stemme, så jeg vandt ‘ t skændes om det.
- I din første sætning siger du Boosting mindsker bias, men i sammenligningstabellen siger du det øger forudsigelig kraft.Er disse begge rigtige?
Svar
Bagging :
-
parallel ensemble: hver model er bygget uafhængigt
-
sigter mod at mindske varians , ikke bias
-
egnet til modeller med høj varians lav bias (komplekse modeller)
-
et eksempel af en træbaseret metode er tilfældig skov , som udvikler fuldvoksne træer (bemærk, at RF ændrer den dyrkede procedure for at reducere korrelationen mellem træer)
Boosting :
-
sekventielt ensemble: prøv at tilføje nye modeller, der klarer sig godt, hvor tidligere modeller mangler
-
sigter mod fald b ias , ikke varians
-
egnet til modeller med høj forspænding med høj variation
-
et eksempel på en træbaseret metode er gradientforøgelse
Kommentarer
- At kommentere hvert af punkterne for at svare hvorfor er det sådan, og hvordan det opnås, ville være en stor kommentar forbedring af dit svar.
- Kan du dele ethvert dokument / link, der forklarer, at boosting reducerer varians, og hvordan det gør det? Vil bare forstå mere detaljeret
- Tak Tim, jeg ‘ Jeg tilføjer nogle kommentarer senere. @ML_Pro, fra proceduren til boosting (f.eks. Side 23 i cs.cornell.edu/courses/cs578/2005fa/… ), det er ‘ forståeligt, at boosting kan reducere bias.
Svar
Bare for at uddybe Yuqians svar lidt. Ideen bag bagging er, at når du OVERFITERER med en ikke-parametrisk regressionsmetode (normalt regression eller klassificeringstræ, men kan være næsten enhver ikke-parametrisk metode), har tendens til at gå til den høje varians, ingen (eller lav) bias del af bias / varians kompromis. Dette skyldes, at en model med overmontering er meget fleksibel (så lav bias over mange prøver fra den samme befolkning, hvis de var tilgængelige), men har høj variabilitet (hvis jeg indsamler en prøve og overfit den, og du indsamler en prøve og overfit den, vil vores resultater variere, fordi den ikke-parametriske regression sporer støj i dataene). Hvad kan vi gøre? Vi kan tage mange prøver (fra bootstrapping) , hver overmontering, og gennemsnit dem sammen. Dette burde føre til den samme bias (lav), men annullere noget af variansen, i det mindste i teorien.
Gradientforstærkning i hjertet fungerer med UNDERFIT ikke-parametriske regressioner, der er for enkle og derfor ikke fleksibel nok til at beskrive det virkelige forhold i dataene (dvs. forudindtaget), men fordi de er under tilpasning, har de lave varianser (du har tendens til at få det samme resultat, hvis du indsamler nye datasæt). Hvordan korrigerer du for dette? Dybest set, hvis du er under fit, indeholder RESIDUALS i din model stadig brugbar struktur (information om befolkningen), så du udvider det træ, du har (eller hvilken som helst ikke-parametrisk forudsigelse) med et træ bygget på resterne. Dette skal være mere fleksibelt end det originale træ. Du genererer gentagne gange flere og flere træer, hver i trin k forstærket af et vægtet træ baseret på et træ, der er monteret på resterne fra trin k-1. Et af disse træer skal være optimalt, så du ender enten ved at veje alle disse træer sammen eller vælge en, der ser ud til at være den bedste pasform. Gradientforøgelse er således en måde at opbygge en masse mere fleksible kandidatræer på.
Som alle andre ikke-parametriske regressions- eller klassifikationsmetoder fungerer undertiden bagging eller boosting godt, nogle gange er den ene eller den anden tilgang middelmådig og undertiden en eller den anden tilgang (eller begge dele) går ned og brænder.
Begge disse teknikker kan også anvendes til andre regressionsmetoder end træer, men de er oftest forbundet med træer, måske fordi det er vanskeligt for at indstille parametre for at undgå under montering eller overmontering.
Kommentarer
- +1 for argumentet overfit = varians, underfit = bias! En af grundene til at bruge beslutningstræer er, at de er strukturelt ustabile og derfor har større fordel af mindre ændringer i forholdene. ( abbottanalytics.com / assets / pdf / … )
Svar
Svar
For at resumere kort, Bagging og Boosting bruges normalt inden for en algoritme, mens Stacking er normalt brugt til at opsummere flere resultater fra forskellige algoritmer.
- Bagging : Bootstrap undergrupper af funktioner og prøver for at få flere forudsigelser og gennemsnit (eller andre måder) resultaterne, for eksempel
Random Forest
, som eliminerer varians og ikke har et problem med overmontering. - Boosting : Forskellen fra Bagging er, at senere model forsøger at lær fejlen fra den foregående, for eksempel
GBM
ogXGBoost
, som eliminerer variansen, men har et problem med overmontering. - Stacking : Normalt brugt i konkurrencer, når man bruger flere algoritmer til at træne på det samme datasæt og gennemsnit (max, min. eller andre kombinationer) resultatet for at få en højere forudsigelsesnøjagtighed.
Svar
begge bagging og boosting brug en enkelt læringsalgoritme til alle trin; men de bruger forskellige metoder til håndtering af træningsprøver. begge er ensembleindlæringsmetode, der kombinerer beslutninger fra flere modeller
Bagging :
1. genprøver træningsdata for at få M undersæt (bootstrapping);
2. træner M-klassifikatorer (samme algoritme) baseret på M-datasæt (forskellige prøver);
3. endelig klassifikator kombinerer M-output ved at stemme;
prøver vægt ligeligt;
klassifikatorer vægt ligeligt;
reducerer fejl ved at mindske variansen
Boosting : her fokus på adaboost algoritme
1. start med lige vægt for alle prøver i første runde;
2. i de følgende M-1 runder, øg vægten af prøver, der er klassificeret forkert i sidste runde, fald vægte af prøver korrekt klassificeret i sidste runde
3. Ved hjælp af en vægtet afstemning kombinerer den endelige klassifikator flere klassifikatorer fra tidligere runder, og giver større vægte til klassifikatorer med mindre forkert klassificering.
trinvis omvejer prøver; vægte for hver runde baseret på resultater fra sidste runde
genvægtprøver (boosting) i stedet for resampling (bagging).
Svar
Bagging
Bootstrap AGGregatING (Bagging) er en ensemblegenereringsmetode, der bruger variationer af prøver , der bruges til at træne basisklassifikatorer. For hver klassifikator, der skal genereres, vælger Bagging (med gentagelse) N-prøver fra træningssættet med størrelse N og træner en basisklassifikator. Dette gentages, indtil ensembleens ønskede størrelse er nået.
Bagging skal bruges med ustabile klassifikatorer, det vil sige klassifikatorer, der er følsomme over for variationer i træningssættet såsom beslutningstræer og perseptroner.
Tilfældigt underrum er en interessant lignende tilgang, der bruger variationer i funktionerne i stedet for variationer i eksemplerne, normalt angivet på datasæt med flere dimensioner og sparsomt funktionsrum.
Boosting
Boosting genererer et ensemble af tilføje klassifikatorer der korrekt klassificerer “vanskelige prøver” . For hver iteration opdaterer boosting vægten af prøverne, så prøver, der klassificeres forkert af ensemblet, kan have en højere vægt og derfor større sandsynlighed for at blive valgt til træning af den nye klassifikator.
Boosting er en interessant tilgang, men er meget støjfølsom og er kun effektiv ved brug af svage klassifikatorer. Der er flere variationer af Boosting-teknikker AdaBoost, BrownBoost (…), hver har sin egen vægtopdateringsregel for at undgå nogle specifikke problemer (støj, klasse ubalance …).
Stacking
Stacking er en meta-learning tilgang hvor et ensemble bruges til at “udtrække funktioner” , der vil blive brugt af et andet lag af ensemblet. Det følgende billede (fra Kaggle Ensembling Guide ) viser, hvordan dette fungerer.
Først (nederst) trænes flere forskellige klassifikatorer med træningssættet, og deres output (sandsynligheder) er bruges til at træne det næste lag (mellemlag), til sidst kombineres output (sandsynligheder) for klassifikatorerne i det andet lag ved hjælp af gennemsnittet (AVG).
Der er flere strategier, der bruger krydsvalidering, blanding og andre tilgange for at undgå stabling af overmontering. Men nogle generelle regler er at undgå en sådan tilgang på små datasæt og forsøge at bruge forskellige klassifikatorer, så de kan “komplementere” hinanden.
Stacking er blevet brugt i flere maskinlæringskonkurrencer som Kaggle og Top Koder. Det er bestemt et must-know inden for maskinindlæring.
Svar
Bagging og boosting har tendens til at bruge mange homogene modeller.
Stacking kombinerer resultater fra heterogene modeltyper.
Da ingen enkelt model har tendens til at være den bedste pasform på tværs af en hel distribution, kan du se, hvorfor dette kan øge den forudsigelige effekt.