Care sunt asemănările și diferențele dintre aceste 3 metode:
- Împachetarea,
- Creșterea,
- Stivuirea?
Care este cea mai bună? Și de ce?
Îmi puteți da un exemplu pentru fiecare?
Comentarii
- pentru o referință de manual, recomand: ” Metode de ansamblu: fundații și algoritmi ” de Zhou, Zhi-Hua
- Vedeți aici o întrebare legată de .
Răspuns
Toate cele trei sunt așa-numitele „meta-algoritmi”: abordări pentru a combina mai multe tehnici de învățare automată într-un singur model predictiv pentru a micșora varianța ( bagging ), bias ( boosting ) sau îmbunătățirea forței predictive ( stacking alias ansamblu ).
Fiecare algoritm constă din doi pași:
-
Producerea unui distr difuzarea modelelor ML simple pe subseturi de date originale.
-
Combinarea distribuției într-un singur model „agregat”.
Iată o scurtă descriere a tuturor celor trei metode:
-
Bagging (înseamnă B ootstrap Agg regat ing ) este o modalitate de a reduce varianța predicției dvs. prin generarea de date suplimentare pentru antrenament din setul de date original folosind combinații cu repetări pentru a produce multisets cu aceeași cardinalitate / dimensiune ca și datele dvs. originale. Prin creșterea dimensiunii setului de antrenament, nu puteți îmbunătăți forța predictivă a modelului, ci doar reduceți varianța, ajustând îndeaproape predicția la rezultatul scontat.
-
Boosting este o abordare în doi pași, în care se folosește mai întâi subseturi de datele originale pentru a produce o serie de modele cu performanțe medii și apoi „mărește” performanța lor, combinându-le împreună folosind o anumită funcție de cost (= vot majoritar). Spre deosebire de bagaj, în boosting clasic crearea subsetului nu este aleatorie și depinde de performanța modelelor anterioare: fiecare subset nou conține elementele care au fost (probabil să fie) clasificate greșit de modelele anterioare.
-
Stacking este similar cu boosting : aplicați, de asemenea, mai multe modele la datele dvs. originale. Diferența aici este, totuși, că nu aveți doar o formulă empirică pentru funcția dvs. de greutate, mai degrabă introduceți un meta-nivel și utilizați un alt model / abordare pentru a estima intrarea împreună cu rezultatele fiecărui model pentru a estima greutățile sau, cu alte cuvinte, pentru a determina ce modele funcționează bine și ce prost au date aceste date de intrare.
Iată un tabel de comparație:
După cum vedeți, toate acestea sunt abordări diferite pentru a combina mai multe modele într-unul mai bun și există niciun câștigător aici: totul depinde de domeniul dvs. și de ceea ce veți face. Puteți trata în continuare stivuirea ca un fel de mai multe progrese boosting , cu toate acestea, dificultatea de a găsi o abordare bună pentru metanivelul dvs. face dificilă aplicarea acestei abordări în practică .
Scurte exemple ale fiecăruia:
- Bagging : Date despre ozon .
- Boosting : este utilizat pentru a îmbunătăți precizia de recunoaștere optică a caracterelor (OCR).
- Stacking : este utilizat în clasificarea microarraysului de cancer în medicină.
Comentarii
- Se pare că definiția dvs. amplificatoare este diferită de cea din wiki (pentru care ați conectat) sau din această lucrare . Amândoi spun că, pentru a crește următorul clasificator, folosește rezultatele celor pregătiți anterior, dar nu ați menționat acest lucru ‘. Metoda pe care o descrieți în altă parte seamănă cu unele dintre tehnicile de votare / medie a modelului.
- @ a-rodin: Vă mulțumim că ați arătat acest aspect important, am rescris complet această secțiune pentru a reflecta mai bine acest lucru. În ceea ce privește cea de-a doua remarcă, înțelegerea mea este că boosting-ul este, de asemenea, un tip de vot / medie sau te-am înțeles greșit?
- @AlexanderGalkin Am avut în minte Gradient boosting în momentul comentarii: nu ‘ t arată ca vot, ci mai degrabă ca o tehnică iterativă de aproximare a funcției. Cu toate acestea, de ex. AdaBoost seamănă mai mult cu votul, așa că am câștigat ‘ să nu argumentez despre asta.
- În prima teză spui că Boosting scade tendința, dar în tabelul de comparație spui crește forța predictivă.Sunt amândouă adevărate?
Răspuns
Bagging :
-
paralel ansamblu: fiecare model este construit independent
-
urmărește să micșora varianța , nu bias
-
potrivit pentru modele cu varianță mare cu bias redus (modele complexe)
-
un exemplu a unei metode bazate pe copaci este pădure aleatorie , care dezvoltă copaci complet crescuți (rețineți că RF modifică procedura crescută pentru a reduce corelația între copaci)
Boosting :
-
ansamblu secvențial : încercați să adăugați noi modele care să funcționeze bine unde modelelor anterioare le lipsește
-
urmărește să să scadă b ias , nu varianță
-
adecvat pentru modele cu varianță mică cu tendințe ridicate
-
un exemplu de metodă bazată pe arbore este boost gradient
Comentarii
- Comentariul fiecărui punct pentru a răspunde de ce este așa și cum este realizat ar fi un lucru extraordinar îmbunătățirea răspunsului dvs.
- Puteți partaja vreun document / link care explică faptul că creșterea reduce varianța și cum o face? Vreau doar să înțeleg mai în profunzime
- Mulțumesc Tim, ‘ voi adăuga câteva comentarii mai târziu. @ML_Pro, din procedura de boosting (de ex. Pagina 23 din cs.cornell.edu/courses/cs578/2005fa/… ), este ‘ de înțeles că creșterea poate reduce prejudecățile.
Răspuns
Doar pentru a elabora puțin răspunsul lui Yuqian. Ideea din spatele insacului este că, atunci când SUPERFAȚI cu o metodă de regresie nonparametrică (de obicei arborii de regresie sau clasificare, dar poate fi aproape orice metodă nonparametrică), tind să meargă la varianța ridicată, nici o parte (sau scăzută) părtinire a compromisului de părtinire / varianță. Acest lucru se datorează faptului că un model de supra-adaptare este foarte flexibil (deci părtinire scăzută asupra multor eșantioane din aceeași populație, dacă acestea erau disponibile), dar are variabilitate ridicată (dacă colectez un eșantion și îl îmbrac, iar tu colectezi un eșantion și îl îmbraci, rezultatele noastre vor diferi deoarece regresia neparametrică urmărește zgomotul din date). Ce putem face? Putem lua multe eșantioane (de la bootstrapping) , fiecare suprasolicitându-le, și mediați-le împreună. Acest lucru ar trebui să conducă la aceeași părtinire (scăzută), dar să anuleze o parte din varianță, cel puțin în teorie. suficient de flexibil pentru a descrie relația reală din date (adică părtinitoare), dar, deoarece acestea sunt necorespunzătoare, au varianță scăzută (ați avea tendința de a obține același rezultat dacă colectați noi seturi de date). Cum corectați acest lucru? Practic, dacă nu vă potriviți, REZIDUUL modelului dvs. conține încă o structură utilă (informații despre populație), astfel încât să măriți arborele pe care îl aveți (sau orice predictor nonparametric) cu un copac construit pe reziduuri. Acest lucru ar trebui să fie mai flexibil decât arborele original. Generați în mod repetat tot mai mulți copaci, fiecare la pasul k mărit de un copac ponderat bazat pe un copac adaptat la reziduurile de la pasul k-1. Unul dintre acești copaci ar trebui să fie optim, așa că fie veți ajunge să cântăriți toți acești copaci împreună, fie să selectați unul care pare a fi cel mai potrivit. Astfel, creșterea gradientului este o modalitate de a construi o grămadă de arbori candidați mai flexibili.
La fel ca toate abordările de regresie sau clasificare nonparametrică, uneori punerea în funcțiune sau amplificarea funcționează excelent, uneori una sau alta abordare este mediocru, iar alteori una sau cealaltă abordare (sau ambele) se va prăbuși și arde.
De asemenea, ambele tehnici pot fi aplicate abordărilor de regresie, altele decât copacii, dar sunt cel mai frecvent asociate cu copacii, poate pentru că este dificil pentru a seta parametrii, astfel încât să evitați potrivirea sau supraadaparea.
Comentarii
- +1 pentru argumentul overfit = varianță, underfit = bias! Un motiv pentru utilizarea arborilor de decizie este că sunt instabili din punct de vedere structural și, prin urmare, beneficiază mai mult de modificări ușoare ale condițiilor. ( abbottanalytics.com / assets / pdf / … )
Răspuns
Răspuns
Pentru a recapitula pe scurt, Bagging și Boosting sunt utilizate în mod normal într-un algoritm, în timp ce Stacking este de obicei folosit pentru a rezuma mai multe rezultate din algoritmi diferiți.
- Bagging : Bootstrap subseturi de caracteristici și eșantioane pentru a obține mai multe predicții și medie (sau alte modalități) rezultatele, de exemplu,
Random Forest
, care elimină varianța și nu are o problemă de overfitting. - Sporirea : Diferența de la Bagging este că modelul ulterior încearcă să aflați eroarea făcută de cea anterioară, de exemplu
GBM
șiXGBoost
, care elimină varianța, dar au o problemă de overfitting. - Stacking : utilizat în mod normal în competiții, atunci când se utilizează mai mulți algoritmi pentru a antrena pe același set de date și medie (max, min sau alte combinații) rezultatul pentru a obține o precizie mai mare a predicției.
Răspuns
ambele pungi și stimularea utilizează un singur algoritm de învățare pentru toți pașii; dar folosesc metode diferite pentru manipularea probelor de antrenament. ambele sunt metode de învățare a ansamblului care combină deciziile din mai multe modele
Bagging :
1. resamplează datele de instruire pentru a obține M subseturi (bootstrapping);
2. antrenează clasificatori M (același algoritm) pe baza seturilor de date M (eșantioane diferite);
3. clasificatorul final combină M rezultatele prin vot;
eșantionează greutatea în mod egal;
clasificatorii au o greutate egală;
scade eroarea prin scăderea varianței
Boosting : aici concentrați-vă pe algoritmul adaboost
1. începeți cu greutatea egală pentru toate eșantioanele din prima rundă;
2. în următoarele runde M-1, măriți greutățile eșantioanelor care sunt clasificate greșit în ultima rundă, micșorați greutățile eșantioanelor clasificate corect în ultima rundă
3. folosind un vot ponderat, clasificatorul final combină mai multe clasificatoare din rundele anterioare și conferă greutăți mai mari clasificatorilor cu mai puține clasificări greșite. greutăți pentru fiecare rundă pe baza rezultatelor din ultima rundă
re-greutarea eșantioanelor (boosting) în loc de eșantionare (împachetare).
Răspuns
Bagging
Bootstrap AGGregatING (Bagging) este un metodă de generare a ansamblului care utilizează variații ale eșantioanelor utilizate pentru instruirea clasificatorilor de bază. Pentru fiecare clasificator care trebuie generat, Bagging selectează (cu repetare) N eșantioane din setul de antrenament cu dimensiunea N și antrenează un clasificator de bază. Acest lucru se repetă până când se atinge dimensiunea dorită a ansamblului.
Bagajul trebuie utilizat cu clasificatori instabili, adică clasificatori care sunt sensibili la variațiile setului de antrenament, cum ar fi Arborii de decizie și Perceptronii.
Subspace aleatoriu este o abordare similară interesantă care folosește variații ale caracteristicilor în loc de variații în eșantioane, de obicei indicate pe seturi de date cu dimensiuni multiple și spațiu de caracteristici redus.
Boosting
Boosting generează un ansamblu de adăugarea clasificatorilor care clasifică corect „eșantioane dificile” . Pentru fiecare iterație, îmbunătățirea actualizează greutățile eșantioanelor, astfel încât eșantioanele care sunt clasificate greșit de ansamblu pot avea o greutate mai mare și, prin urmare, o probabilitate mai mare de a fi selectate pentru antrenarea noului clasificator.
Boosting este o abordare interesantă, dar este foarte sensibil la zgomot și este eficient doar folosind clasificatori slabi. Există mai multe variante ale tehnicilor de stimulare AdaBoost, BrownBoost (…), fiecare are propria regulă de actualizare a greutății pentru a evita unele probleme specifice (zgomot, dezechilibru de clasă …).
Stivuire
Stivuire este un abordare meta-învățare în care un ansamblu este utilizat pentru a „extrage caracteristici” care va fi utilizat de un alt strat al ansamblului. Următoarea imagine (din Kaggle Ensembling Guide ) arată cum funcționează acest lucru.
Mai întâi (jos) sunt instruiți mai mulți clasificatori diferiți cu setul de antrenament, iar ieșirile (probabilitățile) lor sunt folosit pentru a antrena următorul strat (stratul mediu), în final, ieșirile (probabilitățile) clasificatorilor din al doilea strat sunt combinate folosind media (AVG).
Există mai multe strategii care utilizează validarea încrucișată, amestecul și alte abordări pentru a evita stivuirea supraadaptării. Dar unele reguli generale sunt de a evita o astfel de abordare pe seturi de date mici și de a încerca să folosească diverse clasificatoare, astfel încât să se poată „completa” reciproc.
Stivuirea a fost utilizată în mai multe competiții de învățare automată, cum ar fi Kaggle și Top Coder. Este cu siguranță o necesitate în învățarea automată.
Răspuns
Împachetarea și amplificarea tind să folosească multe modele omogene.
Stacking combină rezultatele tipurilor de model heterogen.
Deoarece niciun tip de model unic nu tinde să fie cel mai potrivit pentru orice distribuție întreagă, puteți vedea de ce acest lucru poate crește puterea predictivă.