Adaboost con altro raccordo classificatore

Sep 04 2020

È possibile adattare gli alberi decisionali ad altri alberi decisionali. Per esempio:

adaclassification= AdaBoostClassifier(RandomForestClassifier(n_jobs=-1))
adaclassification.fit(X_train,y_train)

Ho ottenuto risultati migliori con la foresta casuale, quindi ho migliorato il risultato da adaboost con il classificatore di foresta casuale. Tuttavia non capisco cosa sta succedendo qui? Sembra facile: adaboost usa una foresta casuale per adattarsi alla sua classificazione. Ma cosa sta succedendo matematicamente qui? Adaboost è composto dai residui come una sequenza (boosting). La foresta casuale (insaccamento) ha costruito una foresta con gli alberi.

Risposte

1 shadowtalker Sep 08 2020 at 07:31

La tua descrizione è appropriata. Non c'è niente di particolarmente "matematico" che sta accadendo qui, a parte lo stesso algoritmo AdaBoost.

In psuedocode, sta accadendo qualcosa del genere:

For n in 1 .. N_Estimators do
  Train classifier Tn on data X with weights W
  Compute weighted residuals E from Tn
  Update W based on E
  Renormalize W
end

Nel tuo caso, Tnsarebbe un modello Random Forest, che è esso stesso un insieme basato sull'insaccamento. Quindi, ad ogni iterazione del modello "esterno" di AdaBoost, viene addestrato un intero modello Random Forest, ovvero diversi alberi decisionali vengono adattati su sottocampioni casuali di punti dati e caratteristiche.

Naturalmente, questa è una configurazione insolita per un modello potenziato. Ma non c'è motivo concettuale o computazionale per cui non è possibile eseguire l'algoritmo in questo modo.

Se sei curioso di sapere come vengono calcolati e aggiornati esattamente i pesi, Scikit-learn utilizza l' algoritmo SAMME , che è basato ma non esattamente identico all'AdaBoost originale. SAMME è descritto in "Multi-Class AdaBoost" di Zhu, Rhosset, Zhou e Hastie (2006).