Vad är likheterna och skillnaderna mellan dessa 3 metoder:
- Bagging,
- Boosting,
- Stacking?
Vilken är den bästa? Och varför?
Kan du ge mig en exempel för var och en?
Kommentarer
- för en läroböcker, jag rekommenderar: ” Ensemblemetoder: fundament och algoritmer ” av Zhou, Zhi-Hua
- Se här en relaterad fråga .
Svar
Alla tre är så kallade ”meta-algoritmer”: metoder för att kombinera flera maskininlärningstekniker i en prediktiv modell för att minska variansen ( bagging ), bias ( boosting ) eller förbättra den prediktiva kraften ( stacking alias ensemble ).
Varje algoritm består av två steg:
-
Producerar en distr ibution av enkla ML-modeller på underuppsättningar av originaldata.
-
Kombinera distributionen till en ”aggregerad” modell.
Här är en kort beskrivning av alla tre metoderna:
-
Bagging (står för B ootstrap Agg regat ing ) är ett sätt att minska variansen av din förutsägelse genom att generera ytterligare data för träning från din ursprungliga dataset med kombinationer med repetitioner för att producera multisets av samma kardinalitet / storlek som dina ursprungliga data. Genom att öka storleken på din träningsuppsättning kan du inte förbättra modellens förutsägelseskraft, men bara minska variansen och begränsa förutsägelsen till det förväntade resultatet.
-
Boosting är en tvåstegsmetod, där man först använder delmängder av de ursprungliga uppgifterna för att producera en serie med genomsnittligt utförande modeller och sedan ”öka” deras prestanda genom att kombinera dem med hjälp av en viss kostnadsfunktion (= majoritetsröst). Till skillnad från bagging, i klassisk boosting skapandet av delmängder är inte slumpmässigt och beror på prestandan hos de tidigare modellerna: varje ny delmängd innehåller de element som (troligen kommer att) felklassificeras av tidigare modeller.
-
Stapling liknar boosting : du tillämpar också flera modeller på dina originaldata. Skillnaden här är, dock att du inte bara har en empirisk formel för din viktfunktion, snarare introducerar du en metanivå och använder en annan modell / metod för att uppskatta ingången tillsammans med utdata från varje modell för att uppskatta vikterna eller, med andra ord, för att avgöra vilka modeller som fungerar bra och vad som är dåligt givna dessa indata.
Här är en jämförelsetabell:
Som ni ser är alla dessa olika sätt att kombinera flera modeller till en bättre, och det finns ingen enda vinnare här: allt beror på din domän och vad du ska göra. Du kan fortfarande behandla stapling som ett slags fler framsteg boosting men svårigheten att hitta en bra metod för din metanivå gör det svårt att tillämpa detta tillvägagångssätt i praktiken .
Korta exempel på var och en:
- Bagging : Ozondata .
- Boosting : används för att förbättra optisk teckenigenkänning (OCR) noggrannhet.
- Stapling : används i klassificering av cancermikroarrays inom medicin.
Kommentarer
- Det verkar som att din förstärkningsdefinition skiljer sig från den i wiki (som du länkar till) eller i det här papperet . Båda säger att vid förstärkning av nästa klassificerare används resultat av tidigare utbildade, men du nämnde inte ’. Metoden som du beskriver på andra sidan liknar vissa tekniker för omröstning / modellgenomsnitt.
- @ a-rodin: Tack för att du pekade på den här viktiga aspekten, jag skrev helt igenom detta avsnitt för att bättre återspegla detta. När det gäller din andra anmärkning är min uppfattning att boosting också är en typ av omröstning / medelvärde, eller förstod jag dig fel?
- @ AlexanderGalkin Jag tänkte Gradient boosting när jag kommenterade: det gör det inte ’ t ser ut som att rösta utan snarare som en iterativ funktion approximationsteknik. Men t.ex. AdaBoost ser mer ut som att rösta, så jag vann ’ t argumenterar om det.
- I din första mening säger du Boosting minskar bias, men i jämförelsetabellen säger du det ökar förutsägbar kraft.Är dessa båda sanna?
Svar
Bagging :
-
parallell ensemble: varje modell byggs oberoende
-
syftar till att minska varians , inte bias
-
lämplig för modeller med hög varians och låg bias (komplexa modeller)
-
ett exempel av en trädbaserad metod är slumpmässig skog , som utvecklar fullvuxna träd (notera att RF modifierar det odlade förfarandet för att minska korrelationen mellan träd)
Boosting :
-
sekventiell ensemble: försök att lägga till nya modeller som gör det bra där tidigare modeller saknar
-
syfte att minska b ias , inte varians
-
lämplig för modeller med hög förspänning med låg variation
-
ett exempel på en trädbaserad metod är lutningsförstärkning
Kommentarer
- Att kommentera var och en av punkterna för att svara varför är det så och hur det uppnås skulle vara bra förbättring av ditt svar.
- Kan du dela något dokument / länk som förklarar att boosting minskar variansen och hur den gör det? Vill bara förstå mer ingående
- Tack Tim, jag ’ Jag lägger till några kommentarer senare. @ML_Pro, från proceduren för boosting (t.ex. sida 23 i cs.cornell.edu/courses/cs578/2005fa/… ), det ’ är förståeligt att boosting kan minska bias.
Svar
Bara för att utveckla Yuqians svar lite. Idén bakom påsen är att när du ÖVERFÖRER med en icke-parametrisk regressionsmetod (vanligtvis regression eller klassificeringsträd, men kan vara nästan vilken som helst icke-parametrisk metod), tenderar att gå till den höga variansen, ingen (eller låg) bias del av bias / varians avvägningen. Detta beror på att en överanpassningsmodell är mycket flexibel (så låg bias över många prover från samma befolkning, om de fanns tillgängliga) men har hög variabilitet (om jag samlar in ett prov och överdriver det, och du samlar ett prov och överdriver det, kommer våra resultat att skilja sig eftersom den icke-parametriska regressionen spårar brus i data). Vad kan vi göra? Vi kan ta många prover (från bootstrapping) , varje överanpassning, och genomsnittliga dem tillsammans. Detta borde leda till samma förspänning (låg) men ta bort en del av variansen, åtminstone i teorin.
Gradientförstärkning i hjärtat fungerar med UNDERFIT icke-parametriska regressioner, som är för enkla och därmed inte tillräckligt flexibel för att beskriva det verkliga förhållandet i data (dvs. partisk) men eftersom de är under passning har de låg varians (du skulle ofta få samma resultat om du samlar in nya datamängder). Hur korrigerar du för detta? I grund och botten, om du är under passform, innehåller RESIDUALS i din modell fortfarande användbar struktur (information om befolkningen), så att du förstärker trädet du har (eller vilken som helst icke-parametrisk prediktor) med ett träd byggt på resterna. Detta bör vara mer flexibelt än det ursprungliga trädet. Du genererar upprepade gånger fler och fler träd, vart och ett i steg k utökat med ett viktat träd baserat på ett träd som är anpassat till resterna från steg k-1. Ett av dessa träd bör vara optimalt, så du antingen hamnar genom att väga alla dessa träd ihop eller välja ett som verkar passa bäst. Gradientförstärkning är således ett sätt att bygga en massa mer flexibla kandidatträd.
Som alla icke-parametriska regressions- eller klassificeringsmetoder fungerar ibland påsar eller förstärkning bra, ibland är den ena eller andra metoden medioker och ibland en eller den andra metoden (eller båda) kommer att krascha och brinna.
Dessutom kan båda dessa tekniker tillämpas på andra regressionsmetoder än träd, men de är oftast associerade med träd, kanske för att det är svårt för att ställa in parametrar för att undvika under montering eller övermontering.
Kommentarer
- +1 för argumentet overfit = varians, underfit = bias! En anledning till att använda beslutsträd är att de är strukturellt instabila och därmed gynnas mer av små förändringar av förhållandena. ( abbottanalytics.com / assets / pdf / … )
Svar
Svar
För att sammanfatta i korthet, Bagging och Boosting används normalt i en algoritm, medan Stapling är vanligtvis används för att sammanfatta flera resultat från olika algoritmer.
- Bagging : Bootstrap delmängder av funktioner och prover för att få flera förutsägelser och genomsnitt (eller andra sätt) resultaten, till exempel
Random Forest
, som eliminerar varians och inte har problem med överanpassning. - Boosting : Skillnaden från Bagging är att den senare modellen försöker lära sig felet som gjorts av den tidigare, till exempel
GBM
ochXGBoost
, vilket eliminerar variansen men har problem med överanpassning. - Stapling : Normalt används i tävlingar, när man använder flera algoritmer för att träna på samma datamängd och genomsnitt (max, min eller andra kombinationer) resultatet för att få en högre noggrannhet i förutsägelsen.
Svar
båda påsen och boosting använd en enda inlärningsalgoritm för alla steg; men de använder olika metoder för att hantera träningsprover. båda är ensembleinlärningsmetod som kombinerar beslut från flera modeller
Bagging :
1. samplar träningsdata för att få M-underuppsättningar (bootstrapping);
2. utbildar M-klassificerare (samma algoritm) baserat på M-datamängder (olika prover);
3. finalklassificering kombinerar M-utgångar genom att rösta;
samlar vikt lika;
klassare vikt lika;
minskar felet genom att minska variansen
Boosting : här fokusera på adaboost algoritm
1. börja med lika vikt för alla prover i första omgången;
2. i följande M-1 omgångar, öka vikterna på prover som felklassificeras i sista omgången, minska vikter av prover som klassificerats korrekt i sista omgången 3. Med hjälp av en viktad omröstning kombinerar slutklassificering flera klassificeringar från tidigare omgångar och ger större vikter till klassificerare med mindre felklassificeringar. vikter för varje omgång baserat på resultat från förra omgången – återviktningsprover (boosting) istället för omprovtagning (bagging).
Svar
Bagging
Bootstrap AGGregatING (Bagging) är en ensemblegenereringsmetod som använder varianter av sampel som används för att träna basklassificatorer. För varje klassificerare som ska genereras väljer Bagging (med repetition) N-prover från träningssatsen med storlek N och tränar en basklassificerare. Detta upprepas tills den önskade storleken på ensemblen har uppnåtts.
Bagging bör användas med instabila klassificeringsapparater, det vill säga klassificeringsapparater som är känsliga för variationer i träningssatsen som beslutsträd och perseptroner. p>
Slumpmässigt delutrymme är ett intressant liknande tillvägagångssätt som använder variationer i funktionerna istället för variationer i exemplen, vanligtvis indikerade på datamängder med flera dimensioner och glesa funktionsutrymme. ”>
Boosting
Boosting genererar en ensemble av lägga till klassificerare som korrekt klassificerar ”svåra exempel” . För varje iteration uppdaterar boosting vikterna på proverna, så att prover som klassificeras felaktigt av ensemblen kan ha en högre vikt och därför högre sannolikhet att väljas för träning av den nya klassificeringen.
Boosting är ett intressant tillvägagångssätt men är mycket ljudkänsligt och är endast effektivt med svaga klassificeringsapparater. Det finns flera varianter av Boosting-tekniker AdaBoost, BrownBoost (…), var och en har sin egen viktuppdateringsregel för att undvika vissa specifika problem (buller, klassobalans …).
Stapling
Stapling är en meta-learning-tillvägagångssätt där en ensemble används för att “extrahera funktioner” som kommer att användas av ett annat lager av ensemblen. Följande bild (från Kaggle Ensembling Guide ) visar hur detta fungerar.
Först (längst ner) utbildas flera olika klassificerare med träningsuppsättningen, och deras resultat (sannolikheter) är används för att träna nästa lager (mittlager), slutligen kombineras utmatningarna (sannolikheterna) för klassificerare i det andra lagret med hjälp av genomsnittet (AVG).
Det finns flera strategier som använder korsvalidering, blandning och andra tillvägagångssätt för att undvika stapling av överanpassning. Men vissa allmänna regler är att undvika ett sådant tillvägagångssätt på små datauppsättningar och försöka använda olika klassificeringsapparater så att de kan ”komplettera” varandra. Kodare. Det är definitivt ett måste i maskininlärning.
Svar
Bagging och boosting brukar använda många homogena modeller.
Stacking kombinerar resultat från heterogena modelltyper.
Eftersom ingen enskild modelltyp tenderar att passa bäst i en hel distribution kan du se varför detta kan öka den förutsägbara effekten.