Adaboost com outro encaixe classificador

Sep 04 2020

Existe a oportunidade de ajustar as árvores de decisão a outras árvores de decisão. Por exemplo:

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

Obtive melhores resultados com a floresta aleatória, então melhorei o resultado do adaboost com o classificador de floresta aleatória. Porém eu não entendo o que está acontecendo aqui? Parece fácil: adaboost usa uma floresta aleatória para se ajustar à sua classificação. Mas o que está acontecendo matematicamente aqui? Adaboost é feito dos resíduos como uma sequência (reforço). Floresta aleatória (ensacamento) construiu uma floresta de árvores.

Respostas

1 shadowtalker Sep 08 2020 at 07:31

Sua descrição é adequada. Não há nada especialmente "matemático" acontecendo aqui, além do próprio algoritmo AdaBoost.

No psuedocode, algo assim está acontecendo:

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

No seu caso, Tnseria um modelo Random Forest, que em si é um conjunto baseado em ensacamento. Portanto, a cada iteração do modelo AdaBoost "externo", um modelo Random Forest inteiro está sendo treinado, ou seja, várias árvores de decisão são ajustadas em subamostras aleatórias de pontos de dados e recursos.

Claro, esta é uma configuração incomum para um modelo de impulso. Mas não há nenhuma razão conceitual ou computacional para que você não possa executar o algoritmo dessa maneira.

Se você está curioso sobre como exatamente os pesos são calculados e atualizados, o Scikit-learn usa o algoritmo SAMME , que é baseado, mas não exatamente idêntico, ao AdaBoost original. SAMME é descrito em "Multi-Class AdaBoost" por Zhu, Rhosset, Zhou, & Hastie (2006).