Adaboost mit anderer Klassifikatoranpassung

Sep 04 2020

Es besteht die Möglichkeit, Entscheidungsbäume mit anderen Entscheidungsbäumen abzustimmen. Beispielsweise:

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

Ich habe mit Random Forest bessere Ergebnisse erzielt, daher habe ich das Ergebnis von Adaboost mit dem Random Forest Classifier verbessert. Allerdings verstehe ich nicht, was hier passiert? Es klingt einfach: adaboost verwendet einen zufälligen Wald, um ihn zu klassifizieren. Aber was ist hier mathematisch los? Adaboost besteht aus den Residuen als Sequenz (Boosting). Zufälliger Wald (Absacken) baute einen Wald aus Bäumen.

Antworten

1 shadowtalker Sep 08 2020 at 07:31

Ihre Beschreibung ist passend. Abgesehen vom AdaBoost-Algorithmus selbst passiert hier nichts besonders "mathematisches".

Im Pseudocode passiert so etwas:

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

In Ihrem Fall Tnwäre dies ein Random Forest-Modell, das selbst ein auf Bagging basierendes Ensemble ist. Bei jeder Iteration des "äußeren" AdaBoost-Modells wird also ein gesamtes Random Forest-Modell trainiert, dh mehrere Entscheidungsbäume werden an zufällige Teilstichproben von Datenpunkten und Merkmalen angepasst.

Dies ist natürlich ein ungewöhnlicher Aufbau für ein Boosting-Modell. Es gibt jedoch keinen konzeptionellen oder rechnerischen Grund, warum Sie den Algorithmus nicht auf diese Weise ausführen konnten.

Wenn Sie neugierig sind, wie genau die Gewichte berechnet und aktualisiert werden, verwendet Scikit-learn den SAMME- Algorithmus , der auf dem ursprünglichen AdaBoost basiert, aber nicht genau mit diesem identisch ist. SAMME wird in "Multi-Class AdaBoost" von Zhu, Rhosset, Zhou & Hastie (2006) beschrieben.