Adaboost mit anderer Klassifikatoranpassung
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
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.