Ci sono molti post sul blog, video di YouTube, ecc. Sulle idee di insaccamento o potenziamento degli alberi. La mia comprensione generale è che lo pseudo codice per ciascuno è:
insacco:
- Prendi N campioni casuali di x% dei campioni e y% delle caratteristiche
- Adatta il tuo modello (ad es. Albero decisionale) su ciascuno di N
- Prevedi con ogni N
- Media delle previsioni per ottenere la previsione finale
Aumentare:
- Adatta il tuo modello (ad es. Albero decisionale) ai tuoi dati
- Ottieni i residui
- Adatta il tuo modello ai residui
- Vai a 2 per N round di potenziamento
- La previsione finale è una somma ponderata dei predittori sequenziali.
Prenderò qualsiasi chiarimento per la mia comprensione di cui sopra, ma la mia domanda prevista è la seguente:
Sia XGBoost che LightGBM hanno parametri che consentono l'insaccamento. L'applicazione non è Bagging OR Boosting (che è ciò di cui parla ogni post del blog), ma Bagging AND Boosting. Qual è lo pseudo codice per dove e quando avvengono il raggruppamento e il potenziamento combinati?
Mi aspettavo che fosse "Bost Boosted Trees", ma sembra che sia "Boosted Bagged Trees". La differenza sembra sostanziale.
Alberi potenziati in sacchi:
- Prendi N campioni casuali di x% dei campioni e y% delle caratteristiche
- Montare alberi potenziati su ciascuno dei N campioni
- Prevedi con ogni N
- Media delle previsioni per ottenere la previsione finale
Questo sembra il modo migliore per farlo. Dopotutto, il rischio nell'incremento è l'eccessivo adattamento e il principale vantaggio del insaccamento è la riduzione dell'eccessivo adattamento; insaccare un sacco di modelli potenziati sembra un'ottima idea.
Tuttavia, guardando attraverso, ad esempio, scikit-learn
gradient_boosting.py (che esegue il bagging di esempio, ma non la selezione casuale delle funzioni) e raggruppando alcune piccole pepite tra post su LightGBM e XGBoost, sembra che XGBoost e LightGBM funzionino come segue:
Alberi insaccati potenziati:
- Adatta un albero decisionale ai tuoi dati
- Per i turni di potenziamento in N:
- Ottieni i residui
- se mod mod bag_frequency == 0 (ovvero borsa ogni 5 round):
- Prelevare un singolo campione casuale di x% dei campioni e y% delle caratteristiche; usa questo campione casuale andando avanti
- adatta l'albero ai residui
- La previsione finale è una somma ponderata dei predittori sequenziali.
Correggi la mia comprensione qui e inserisci i dettagli. Boosted Bagged Tree (con solo 1 albero casuale per bag_frequency) non sembra potente come Bagged Boosted Tree.