In Random Forest wird jeder Baum parallel auf einer eindeutigen Boostrap-Stichprobe der Daten gezüchtet. Da erwartet wird, dass jede Boostrap-Probe ungefähr 63% der eindeutigen Beobachtungen enthält, bleiben ungefähr 37% der Beobachtungen aus, die zum Testen des Baums verwendet werden können.
Nun scheint es bei Stochastic Gradient Boosting auch eine -Schätzung zu geben, die der in RF ähnlich ist:
Wenn bag.fraction auf größer als 0 eingestellt ist (0,5 wird empfohlen), berechnet gbm eine Out-of-Bag-Schätzung der Verbesserung der Vorhersageleistung. Es bewertet die Verringerung der Abweichung von den Beobachtungen, die bei der Auswahl des nächsten Regressionsbaums nicht verwendet wurden.
Quelle: Ridgeway (2007) , Abschnitt 3.3 (Seite 8).
Ich habe Probleme zu verstehen, wie es funktioniert / gültig ist. Angenommen, ich füge der Sequenz einen Baum hinzu. Ich züchte diesen Baum auf einer zufälligen Teilstichprobe des Originaldatensatzes. Ich konnte diesen einzelnen Baum an den Beobachtungen testen, die nicht zum Wachsen verwendet wurden. Einverstanden. ABER da Boosting sequentiell ist, verwende ich eher die gesamte bisher gebaute Baumsequenz, um eine Vorhersage für diese ausgelassenen Beobachtungen zu liefern. Und es besteht eine hohe Wahrscheinlichkeit, dass viele der vorhergehenden Bäume diese Beobachtungen bereits gesehen haben. Das Modell wird also nicht in jeder Runde auf unsichtbare Beobachtungen wie bei RF getestet, oder?
Wie kommt es also, dass dies als "Out-of-Bag" -Fehlerschätzung bezeichnet wird? Für mich scheint es nicht "aus" jeder Tasche zu sein, da die Beobachtungen bereits gesehen wurden?
Antworten:
Nur teilweise beantworten (und Ihrer Frage eine neue Frage hinzufügen).
Die gbm-Implementierung in R http://www.rdocumentation.org/packages/gbm/functions/gbm verfügt über zwei Parameter zum Anpassen von Out-of-Bagness.
a)
train.fraction
definiert einen Teil der Daten, die zum Trainieren aller Bäume verwendet werden, und 1-train.fraction
sind somit echte OOB-Daten (Out-of-Bag).b)
bag.fraction
definiert den Anteil der Trainingsdaten, die bei der Erstellung des nächsten Baums im Boost verwendet werden sollen. Daher kann es einige Daten geben, die niemals für die Erstellung eines Baums verwendet werden, und sie können wirklich als OOB-Daten verwendet werden (dies ist jedoch unwahrscheinlich, siehe die folgende Frage).Was mich zu der Frage bringt. Ihre Analyse von 37% der Daten als OOB gilt nur für EINEN Baum. Aber die Wahrscheinlichkeit, dass es Daten gibt, die in keinem Baum verwendet werden, ist viel kleiner - (es muss für alle Bäume im OOB sein - ich verstehe, dass jeder Baum seinen eigenen Bootstrap macht). In RandomForests sollte es daher sehr unwahrscheinlich sein, dass ein OOB den Wald testet. Und doch spricht die randomForest-Implementierung in R (basierend auf Breimans Originalcode) viel über OOB (zum Beispiel die Ergebnisdaten und siehe http://www.rdocumentation.org/packages/randomForest/functions/randomForest ). n t r e e0.37ntrees ntree
err.rate
confusion
Ich weiß nicht, wie ich das beantworten soll (und ich danke Ihnen (+1), dass Sie die Frage gestellt und mir klar gemacht haben, dass ich diesen Aspekt von randomForests nicht verstehe). Die mögliche Lösung ist, dass es nur einen Bootstrap gibt - und alle Bäume daraus aufgebaut sind -, aber soweit ich weiß, ist dies nicht der Fall.
quelle
train.fraction
Parameter stammt (der nur ein Merkmal der gbm-Funktion ist, aber im ursprünglichen Algorithmus nicht vorhanden ist), sondern tatsächlich von der Tatsache, dass nur eine Teilstichprobe der Daten werden verwendet, um jeden Baum in der Sequenz zu trainieren, wobei Beobachtungen weggelassen werden (die zum Testen verwendet werden können). Was auf meine ursprüngliche Frage zurückgeht. Wie können diese Beobachtungen zum Testen verwendet werden, da sie wahrscheinlich von vielen vorhergehenden Bäumen in der Sequenz oft gesehen wurden?Ich glaube, dass sie bei jedem Schritt eine Schätzung aus der Tasche machen. Da die Ergebnisse aller Schritte (mit Koeffizienten) addiert werden, können OOB-Fehler auch mit denselben Koeffizienten addiert werden.
quelle