Bagging, boosting og stacking i maskinlæring

Hva er likhetene og forskjellene mellom disse 3 metodene:

  • Bagging,
  • Boosting,
  • Stacking?

Hvilken er den beste? Og hvorfor?

Kan du gi meg en eksempel for hver?

Kommentarer

  • for en lærebokreferanse, jeg anbefaler: » Ensemblemetoder: grunnlag og algoritmer » av Zhou, Zhi-Hua
  • Se her et relatert spørsmål .

Svar

Alle tre er såkalte «meta-algoritmer»: tilnærminger for å kombinere flere maskinlæringsteknikker inn i en prediktiv modell for å redusere variansen ( bagging ), bias ( boosting ) eller forbedre den prediktive kraften ( stacking alias ensemble ).

Hver algoritme består av to trinn:

  1. Å produsere en distr ibution av enkle ML-modeller på delmengder av de opprinnelige dataene.

  2. Kombinere distribusjonen i en «aggregert» modell.

Her er en kort beskrivelse av alle tre metodene:

  1. Bagging (står for B ootstrap Agg regat ing ) er en måte å redusere avviket fra prediksjonen din ved å generere tilleggsdata for trening fra det opprinnelige datasettet ved hjelp av kombinasjoner med repetisjoner for å produsere multisett av samme kardinalitet / størrelse som de opprinnelige dataene dine. Ved å øke størrelsen på treningssettet ditt kan du ikke forbedre den prediktive kraften, men bare redusere variansen, og avstemme spådommen til forventet resultat.

  2. Boosting er en to-trinns tilnærming, der man først bruker delmengder av de originale dataene for å produsere en serie med gjennomsnittlig utførende modeller og deretter «øke» ytelsen ved å kombinere dem sammen ved hjelp av en bestemt kostnadsfunksjon (= flertallstemme). I motsetning til bagging, i klassisk boosting delsettingen er ikke tilfeldig og avhenger av ytelsen til de forrige modellene: hvert nye delsett inneholder elementene som (sannsynligvis vil bli) feilklassifisert av tidligere modeller.

  3. Stacking ligner på boosting : du bruker også flere modeller på originaldataene. Forskjellen her er, imidlertid at du ikke bare har en empirisk formel for vektfunksjonen, snarere introduserer du et metanivå og bruker en annen modell / tilnærming til å estimere inngangen sammen med utgangene til hver modell for å estimere vektene, eller med andre ord, for å bestemme hvilke modeller som fungerer bra og hva som er dårlig gitt disse inndataene.

Her er en sammenligningstabell:

Sammenligningstabell

Som du ser, er alt dette forskjellige tilnærminger for å kombinere flere modeller til en bedre, og det er ingen eneste vinner her: alt avhenger av domenet ditt og hva du skal gjøre. Du kan fortsatt behandle stabling som en slags flere fremskritt boosting , men vanskeligheten med å finne en god tilnærming for metanivået gjør det vanskelig å bruke denne tilnærmingen i praksis .

Korte eksempler på hver:

  1. Bagging : Ozondata .
  2. Boosting : brukes til å forbedre optisk tegngjenkjenning (OCR) nøyaktighet.
  3. Stacking : brukes i klassifisering av kreftmikroarrays i medisin.

Kommentarer

  • Det virker som om din boosting-definisjon er forskjellig fra definisjonen i wiki (som du lenket til) eller i dette papiret . Begge to sier at ved å øke neste klassifiseringsprogram bruker man resultater av tidligere trente, men du nevnte ikke ‘ t. Metoden du beskriver på annen måte ligner noen av teknikker for stemmegivning / modellgjennomsnitt.
  • @ a-rodin: Takk for at du pekte på dette viktige aspektet, jeg skrev om denne delen fullstendig for å gjenspeile dette bedre. Når det gjelder den andre merknaden din, er min forståelse at boosting også er en type stemme / gjennomsnitt, eller forsto jeg deg feil?
  • @ AlexanderGalkin Jeg hadde i tankene Gradient boosting på tidspunktet for kommentaren: det gjør ikke ‘ t ser ut som å stemme, men snarere som en iterativ tilnærmingsteknikk for funksjoner. Imidlertid f.eks. AdaBoost ser mer ut som å stemme, så jeg vant ‘ t kranglet om det.
  • I din første setning sier du Boosting reduserer bias, men i sammenligningstabellen sier du det øker prediktiv kraft.Er disse begge sanne?

Svar

Bagging :

  1. parallell ensemble: hver modell er bygd uavhengig

  2. sikte på å redusere varians , ikke bias

  3. egnet for modeller med høy varians og lav bias (komplekse modeller)

  4. et eksempel av en trebasert metode er tilfeldig skog , som utvikler fullvoksne trær (merk at RF modifiserer den dyrkede prosedyren for å redusere korrelasjonen mellom trær)

Boosting :

  1. sekvensiell ensemble: prøv å legge til nye modeller som gjør det bra der tidligere modeller mangler

  2. sikte på å redusere b ias , ikke varians

  3. egnet for modeller med høy forspenning med lav variasjon

  4. et eksempel på en trebasert metode er gradientforsterkende

Kommentarer

  • Å kommentere hvert av punktene for å svare hvorfor er det slik, og hvordan det oppnås, vil være flott forbedring i svaret ditt.
  • Kan du dele noe dokument / lenke som forklarer at boosting reduserer avvik og hvordan det gjør det? Vil bare forstå mer detaljert
  • Takk Tim, jeg ‘ Jeg vil legge til noen kommentarer senere. @ML_Pro, fra prosedyren for boosting (f.eks. Side 23 i cs.cornell.edu/courses/cs578/2005fa/… ), det er ‘ forståelig at boosting kan redusere skjevhet.

Svar

Bare for å utdype Yuqians svar litt. Tanken bak bagging er at når du OVERFITTERER med en ikke-parametrisk regresjonsmetode (vanligvis regresjon eller klassifiseringstrær, men kan være omtrent hvilken som helst ikke-parametrisk metode) har en tendens til å gå til den høye variansen, ingen (eller lav) bias-delen av bias / varians-kompromisset. Dette er fordi en overmonteringsmodell er veldig fleksibel (så lav bias over mange prøver fra samme befolkning, hvis de var tilgjengelige), men har høy variabilitet (hvis jeg samler et utvalg og overdriver det, og du samler et utvalg og overdriver det, vil resultatene våre variere fordi den ikke-parametriske regresjonen sporer støy i dataene.) Hva kan vi gjøre? Vi kan ta mange prøver (fra bootstrapping) , hver overmontering, og gjennomsnitt dem sammen. Dette burde føre til den samme skjevheten (lav), men avbryte noe av variansen, i det minste teoretisk.

Gradientforsterkning i sitt hjerte fungerer med UNDERFIT ikke-parametriske regresjoner, som er for enkle og som derfor ikke er fleksibel nok til å beskrive det virkelige forholdet i dataene (dvs. partisk), men fordi de er under tilpasning, har de lave varianser (du vil gjerne ha det samme resultatet hvis du samler inn nye datasett). Hvordan korrigerer du for dette? I utgangspunktet, hvis du er under passform, inneholder RESIDUALS i modellen din fortsatt nyttig struktur (informasjon om befolkningen), slik at du utvider treet du har (eller hvilken som helst ikke-parametrisk prediktor) med et tre bygget på restene. Dette bør være mer fleksibelt enn det originale treet. Du genererer gjentatte ganger flere og flere trær, hver i trinn k forsterket av et vektet tre basert på et tre som er montert på restene fra trinn k-1. Ett av disse trærne skal være optimale, så du ender opp ved å veie alle disse trærne sammen eller velge en som ser ut til å passe best. Gradientforsterkning er således en måte å bygge en haug med mer fleksible kandidatrær. eller den andre tilnærmingen (eller begge deler) vil krasje og brenne.

Begge disse teknikkene kan også brukes på andre regresjonsmetoder enn trær, men de er ofte forbundet med trær, kanskje fordi det er vanskelig for å angi parametere for å unngå under tilpasning eller overmontering.

Kommentarer

  • +1 for argumentet overfit = varians, underfit = bias! En grunn til å bruke beslutningstrær er at de er strukturelt ustabile, og har derfor større fordel av små endringer i forholdene. ( abbottanalytics.no / assets / pdf / … )

Svar

Svar

For å oppsummere i korthet, Bagging og Boosting brukes vanligvis i en algoritme, mens Stablering er vanligvis brukes til å oppsummere flere resultater fra forskjellige algoritmer.

  • Bagging : Bootstrap delmengder av funksjoner og eksempler for å få flere spådommer og gjennomsnitt (eller andre måter) resultatene, for eksempel, Random Forest, som eliminerer avvik og ikke har problemer med overmontering.
  • Boosting : Forskjellen fra Bagging er at senere modell prøver å lær feilen som er gjort av forrige, for eksempel GBM og XGBoost, som eliminerer variansen, men har problemer med overmontering.
  • Stacking : Normalt brukt i konkurranser, når man bruker flere algoritmer for å trene på samme datasett og gjennomsnitt (maks, min eller andre kombinasjoner) resultatet for å få en høyere nøyaktighet i prediksjonen.

Svar

begge bagging og boosting bruke en enkelt læringsalgoritme for alle trinn; men de bruker forskjellige metoder for å håndtere opplæringsprøver. begge er ensemble-læringsmetode som kombinerer avgjørelser fra flere modeller
Bagging :
1. sampler treningsdata for å få M delmengder (bootstrapping);
2. trener M-klassifikatorer (samme algoritme) basert på M datasett (forskjellige eksempler);
3. final classifier kombinerer M-utganger ved å stemme;
prøver vekt like;
klassifiserer vekt like;
reduserer feil ved å redusere variansen
Boosting : her fokus på adaboost algoritme
1. start med like vekt for alle prøver i første runde;
2. i de følgende M-1 rundene, øk vektene av prøvene som er feilklassifisert i siste runde, reduser vekter av prøver korrekt klassifisert i forrige runde
3. Ved hjelp av en vektet stemmegivning kombinerer den endelige klassifisereren flere klassifikatorer fra forrige runde, og gir større vekter til klassifikatorer med mindre feilklassifiseringer. vekter for hver runde basert på resultater fra forrige runde
omvektprøver (boosting) i stedet for resampling (bagging).

Svar

Bagging

Bootstrap AGGregatING (Bagging) er ensemblegenereringsmetode som bruker varianter av eksempler som brukes til å trene baseklassifiserere. For hver klassifikator som skal genereres, velger Bagging (med repetisjon) N-prøver fra treningssettet med størrelse N og trener en basisklassifikator. Dette gjentas til ønsket størrelse på ensemblet er nådd.

Bagging skal brukes med ustabile klassifiseringsmaskiner, det vil si klassifiseringsmidler som er følsomme for variasjoner i treningssettet som Beslutningstrær og Perceptrons. p>

Tilfeldig underområde er en interessant lignende tilnærming som bruker variasjoner i funksjonene i stedet for variasjoner i prøvene, vanligvis angitt på datasett med flere dimensjoner og sparsom funksjonsplass.

Boosting

Boosting genererer et ensemble av legge til klassifiserere som klassifiserer riktig «vanskelige eksempler» . For hver iterasjon øker boosting vektene til prøvene, slik at prøver som er feilklassifisert av ensemblet kan ha høyere vekt, og derfor større sannsynlighet for å bli valgt for å trene den nye klassifisereren.

Boosting er en interessant tilnærming, men er veldig støysensitiv og er bare effektiv ved bruk av svake klassifikatorer. Det er flere varianter av Boosting-teknikker AdaBoost, BrownBoost (…), hver og en har sin egen vektoppdateringsregel for å unngå noen spesifikke problemer (støy, klasse ubalanse …).

Stacking

Stacking er en meta-learning-tilnærming der et ensemble brukes til å “trekke ut funksjoner” som skal brukes av et annet lag av ensemblet. Følgende bilde (fra Kaggle Ensembling Guide ) viser hvordan dette fungerer.

skriv inn bildebeskrivelse her

Først (nederst) blir flere forskjellige klassifikatorer trent med treningssettet, og deres utganger (sannsynligheter) er brukes til å trene neste lag (mellomlag), til slutt kombineres utgangene (sannsynlighetene) til klassifiseringsmidlene i det andre laget ved bruk av gjennomsnittet (AVG).

Det er flere strategier som bruker kryssvalidering, blanding og andre tilnærminger for å unngå stabling av overmontering. Men noen generelle regler er å unngå en slik tilnærming på små datasett og prøve å bruke forskjellige klassifikatorer slik at de kan «utfylle» hverandre.

Stabling har blitt brukt i flere maskinlæringskonkurranser som Kaggle og Top Koder. Det er absolutt et must-know innen maskinlæring.

Svar

Bagging og boosting pleier å bruke mange homogene modeller.

Stacking kombinerer resultater fra heterogene modeller.

Ettersom ingen enkelt modelltyper pleier å være best mulig å passe i hele distribusjonen, kan du se hvorfor dette kan øke den prediktive effekten.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *