Bagging, boosting e stacking nel machine learning

Quali sono le somiglianze e le differenze tra questi 3 metodi:

  • Bagging,
  • Boosting,
  • Stacking?

Qual è il migliore? E perché?

Puoi darmi un esempio per ciascuno?

Commenti

  • per un riferimento a un libro di testo, consiglio: ” metodi Ensemble: fondamenti e algoritmi ” di Zhou, Zhi-Hua
  • Vedi qui una domanda correlata .

Risposta

Tutti e tre sono i cosiddetti “meta-algoritmi”: approcci per combinare diverse tecniche di apprendimento automatico in un modello predittivo al fine di diminuire la varianza ( bagging ), il bias ( boosting ) o migliorare la forza predittiva ( stacking alias insieme ).

Ogni algoritmo consiste di due passaggi:

  1. Produzione di un distr ibuzione di semplici modelli ML su sottoinsiemi dei dati originali.

  2. Combinazione della distribuzione in un modello “aggregato”.

Ecco una breve descrizione di tutti e tre i metodi:

  1. Bagging (sta per B ootstrap Agg regat ing ) è un modo per diminuire la variazione della previsione generando dati aggiuntivi per laddestramento dal set di dati originale utilizzando combinazioni con ripetizioni per produrre multiset della stessa cardinalità / dimensione dei dati originali. Aumentando le dimensioni del tuo set di addestramento non puoi migliorare la forza predittiva del modello, ma semplicemente diminuire la varianza, sintonizzando in modo restrittivo la previsione sul risultato atteso.

  2. Boosting è un approccio in due fasi, in cui si utilizzano prima sottoinsiemi di i dati originali per produrre una serie di modelli con prestazioni medie e poi “incrementare” le loro prestazioni combinandoli insieme utilizzando una particolare funzione di costo (= voto di maggioranza). A differenza del bagging, nel boosting classico la creazione del sottoinsieme non è casuale e dipende dalle prestazioni dei modelli precedenti: ogni nuovo sottoinsieme contiene gli elementi che erano (probabilmente) classificati erroneamente dai modelli precedenti.

  3. Stacking è simile al boost : applichi anche diversi modelli ai tuoi dati originali. La differenza qui è, tuttavia, non hai solo una formula empirica per la tua funzione di peso, piuttosto introduci un meta-livello e usi un altro modello / approccio per stimare linput insieme agli output di ogni modello per stimare i pesi o, in altre parole, per determinare quali modelli si comportano bene e quali male dati questi dati di input.

Ecco una tabella di confronto:

Tabella comparativa

Come vedi, questi sono tutti approcci diversi per combinare diversi modelli in uno migliore, e cè nessun vincitore qui: tutto dipende dal tuo dominio e da cosa intendi fare. Puoi ancora trattare lo stacking come una sorta di ulteriore progresso boost , tuttavia, la difficoltà di trovare un buon approccio per il tuo meta-livello rende difficile applicare questo approccio nella pratica .

Brevi esempi di ciascuno:

  1. Bagging : Dati sullozono .
  2. Boosting : viene utilizzato per migliorare la precisione del riconoscimento ottico dei caratteri (OCR).
  3. Stacking : è utilizzato nella classificazione dei microarray del cancro in medicina.

Commenti

  • Sembra che la tua definizione di boosting sia diversa da quella nel wiki (per il quale ti sei collegato) o in questo documento . Entrambi dicono che per potenziare il prossimo classificatore si utilizzano i risultati di quelli precedentemente addestrati, ma ‘ non lo hai menzionato. Il metodo che descrivi, daltra parte, assomiglia ad alcune tecniche di voto / media del modello.
  • @ a-rodin: Grazie per aver indicato questo aspetto importante, ho riscritto completamente questa sezione per rispecchiarlo meglio. Per quanto riguarda la tua seconda osservazione, ho capito che il potenziamento è anche un tipo di voto / media, o ti ho capito male?
  • @AlexanderGalkin Avevo in mente il potenziamento del gradiente al momento del commento: non ‘ sembra una votazione ma piuttosto una tecnica di approssimazione iterativa di funzioni. Tuttavia, ad es. AdaBoost sembra più un voto, quindi non ho ‘ discuterne.
  • Nella tua prima frase dici che il potenziamento diminuisce la distorsione, ma nella tabella di confronto dici aumenta la forza predittiva.Sono entrambe vere?

Risposta

Bagging :

  1. parallel insieme: ogni modello è costruito in modo indipendente

  2. mira a diminuire la varianza , non bias

  3. adatto per modelli a bassa polarizzazione ad alta varianza (modelli complessi)

  4. un esempio di un metodo basato su albero è foresta casuale , che sviluppa alberi completamente cresciuti (si noti che RF modifica la procedura di crescita per ridurre la correlazione tra gli alberi)

Potenziamento :

  1. sequential ensemble: prova ad aggiungere nuovi modelli che vanno bene dove i modelli precedenti mancano

  2. mirano a diminuire b ias , non varianza

  3. adatto per modelli a bassa varianza ad alta polarizzazione

  4. un esempio di un metodo basato su albero è aumento gradiente

Commenti

  • Commentare ciascuno dei punti per rispondere al perché è così e come si ottiene sarebbe fantastico miglioramento della tua risposta.
  • Puoi condividere qualsiasi documento / collegamento che spieghi che laumento riduce la varianza e come lo fa? Voglio solo capire in modo più approfondito
  • Grazie Tim, ‘ aggiungerò alcuni commenti in seguito. @ML_Pro, dalla procedura di boosting (ad es. Pagina 23 di cs.cornell.edu/courses/cs578/2005fa/… ), è ‘ comprensibile che il potenziamento possa ridurre la distorsione.

Risposta

Giusto per elaborare un po la risposta di Yuqian. Lidea alla base del bagging è che quando si SOVRAPPONE con un metodo di regressione non parametrica (di solito regressione o alberi di classificazione, ma può essere praticamente qualsiasi metodo non parametrico) tendono ad andare alla varianza alta, nessuna (o bassa) parte di bias del compromesso bias / varianza. Questo perché un modello di overfitting è molto flessibile (quindi bias basso su molti ricampionamenti dalla stessa popolazione, se quelli erano disponibili) ma ha alta variabilità (se raccolgo un campione e lo overfit, e tu raccogli un campione e lo overfit, i nostri risultati saranno diversi perché la regressione non parametrica tiene traccia del rumore nei dati). Cosa possiamo fare? Possiamo prendere molti ricampionamenti (da bootstrap) , ogni overfitting e mediateli insieme. Questo dovrebbe portare allo stesso bias (basso) ma annullare parte della varianza, almeno in teoria.

Laumento del gradiente nel suo cuore funziona con le regressioni non parametriche UNDERFIT, che sono troppo semplici e quindi non sono “t abbastanza flessibili da descrivere la relazione reale nei dati (cioè distorti) ma, poiché sono poco adatti, hanno una bassa varianza (si tende a ottenere lo stesso risultato se si raccolgono nuovi set di dati). Come lo correggete? Fondamentalmente, se sei sotto fit, i RESIDUI del tuo modello contengono ancora una struttura utile (informazioni sulla popolazione), quindi aumenti lalbero che hai (o qualsiasi predittore non parametrico) con un albero costruito sui residui. Questo dovrebbe essere più flessibile dellalbero originale. Si generano ripetutamente sempre più alberi, ciascuno al passaggio k aumentato da un albero ponderato basato su un albero adattato ai residui del passaggio k-1. Uno di questi alberi dovrebbe essere ottimale, quindi finisci per pesare tutti questi alberi insieme o selezionarne uno che sembra essere la soluzione migliore. Pertanto, il boosting del gradiente è un modo per costruire una serie di alberi candidati più flessibili.

Come tutti gli approcci di regressione o classificazione non parametrici, a volte il bagging o il boosting funziona alla grande, a volte luno o laltro approccio è mediocre, a volte o laltro approccio (o entrambi) andrà in crash e brucerà.

Inoltre, entrambe queste tecniche possono essere applicate ad approcci di regressione diversi dagli alberi, ma sono più comunemente associati agli alberi, forse perché è difficile per impostare i parametri in modo da evitare un adattamento insufficiente o eccessivo.

Commenti

  • +1 per largomento overfit = variance, underfit = bias! Uno dei motivi per utilizzare gli alberi decisionali è che sono strutturalmente instabili, quindi beneficiano maggiormente di lievi modifiche delle condizioni. ( abbottanalytics.it / assets / pdf / … )

Risposta

Risposta

Per ricapitolare in breve, Bagging e I vengono normalmente utilizzati allinterno di un algoritmo, mentre i Limpilamento è solitamente utilizzato per riepilogare diversi risultati da diversi algoritmi.

  • Bagging : Bootstrap sottoinsiemi di funzionalità ed esempi per ottenere diverse previsioni e medie (o altri modi) i risultati, ad esempio, Random Forest, che elimina la varianza e non presenta problemi di overfitting.
  • Boosting : la differenza con Bagging è che il modello successivo sta provando a conoscere lerrore commesso dal precedente, ad esempio GBM e XGBoost, che eliminano la varianza ma presentano un problema di overfitting.
  • Stacking : normalmente utilizzato nelle competizioni, quando si utilizzano più algoritmi per allenarsi sullo stesso set di dati e sulla media (max, min o altre combinazioni) il risultato al fine di ottenere una maggiore precisione di previsione.

Rispondi

entrambi i bagging e il potenziamento utilizza un unico algoritmo di apprendimento per tutti i passaggi; ma usano metodi diversi per gestire i campioni di addestramento. entrambi sono un metodo di apprendimento di insieme che combina decisioni da più modelli
Bagging :
1. ricampiona i dati di addestramento per ottenere Sottoinsiemi M (bootstrap);
2. forma classificatori M (stesso algoritmo) sulla base di M dataset (campioni differenti);
3. Il classificatore finale combina M output votando;
campiona il peso allo stesso modo;
classifica il peso allo stesso modo;
riduce lerrore diminuendo la varianza
Incrementando : qui concentrati sullalgoritmo adaboost
1. inizia con lo stesso peso per tutti i campioni nel primo round;
2. nei seguenti round M-1, aumenta i pesi dei campioni che sono classificati erroneamente nellultimo round, diminuisci pesi dei campioni classificati correttamente nellultimo round
3. utilizzando una votazione ponderata, il classificatore finale combina più classificatori dei round precedenti e assegna pesi maggiori ai classificatori con meno classificazioni errate.
reweights graduale dei campioni; pesi per ogni round in base ai risultati dellultimo round
campioni di ripesatura (boosting) invece del ricampionamento (bagging).

Answer

Bagging

Bootstrap AGGregatING (Bagging) è un metodo di generazione dellinsieme che utilizza varianti di campioni utilizzati per addestrare i classificatori di base. Per ogni classificatore da generare, Bagging seleziona (con ripetizione) N campioni dal training set con dimensione N e addestra un classificatore di base. Questo viene ripetuto fino a raggiungere la dimensione desiderata dellinsieme.

Il bagging dovrebbe essere utilizzato con classificatori instabili, ovvero classificatori sensibili alle variazioni nel set di addestramento come Decision Trees e Perceptrons.

Random Subspace è un approccio simile interessante che utilizza variazioni nelle caratteristiche invece di variazioni nei campioni, solitamente indicato su set di dati con dimensioni multiple e spazio di caratteristiche sparse.

Il potenziamento del

Il potenziamento genera un insieme di aggiunta di classificatori che classificano correttamente “campioni difficili” . Per ogni iterazione, il potenziamento aggiorna i pesi dei campioni, in modo che i campioni classificati erroneamente dallinsieme possano avere un peso maggiore e quindi una maggiore probabilità di essere selezionati per laddestramento del nuovo classificatore.

Potenziamento è un approccio interessante ma è molto sensibile al rumore ed è efficace solo se si utilizzano classificatori deboli. Esistono diverse varianti delle tecniche di Boosting AdaBoost, BrownBoost (…), ognuna ha una propria regola di aggiornamento del peso per evitare alcuni problemi specifici (rumore, squilibrio di classe…).

Stacking

Stacking è un approccio di meta-apprendimento in cui un insieme viene utilizzato per “estrarre caratteristiche” che verrà utilizzato da un altro strato dellinsieme. Limmagine seguente (da Kaggle Ensembling Guide ) mostra come funziona.

inserisci la descrizione dellimmagine qui

Per prima cosa (in basso) diversi classificatori diversi vengono addestrati con il set di addestramento e i loro risultati (probabilità) sono utilizzato per addestrare il livello successivo (livello intermedio), infine, gli output (probabilità) dei classificatori nel secondo livello vengono combinati utilizzando la media (AVG).

Esistono diverse strategie che utilizzano convalida incrociata, miscelazione e altri approcci per evitare sovrapposizioni di sovradattamento. Tuttavia, alcune regole generali sono di evitare un simile approccio su set di dati di piccole dimensioni e di provare a utilizzare classificatori diversi in modo che possano “completarsi” a vicenda.

Lo stacking è stato utilizzato in diverse competizioni di machine learning come Kaggle e Top Programmatore. È sicuramente un must nellapprendimento automatico.

Risposta

Linsacco e il potenziamento tendono a utilizzare molti modelli omogenei.

Lo stacking combina i risultati di tipi di modelli eterogenei.

Poiché nessun singolo tipo di modello tende ad essere la soluzione migliore per lintera distribuzione, puoi capire perché questo può aumentare il potere predittivo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *