Ich bin ziemlich neu im maschinellen Lernen, in CART-Techniken und ähnlichem, und ich hoffe, dass meine Naivität nicht zu offensichtlich ist.
Wie geht Random Forest mit mehrstufigen / hierarchischen Datenstrukturen um (z. B. wenn eine Interaktion über mehrere Ebenen von Interesse ist)?
Das heißt, Datensätze mit Analyseeinheiten auf mehreren hierarchischen Ebenen ( z. B. in Schulen verschachtelte Schüler mit Daten sowohl zu den Schülern als auch zu den Schulen).
Betrachten Sie als Beispiel einen mehrstufigen Datensatz mit Personen auf der ersten Ebene ( z. B. Daten zum Wahlverhalten, zur Bevölkerungszahl usw.), der in Ländern auf der zweiten Ebene verschachtelt ist ( mit Daten auf Länderebene, z . B. Bevölkerung):
ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54
Nehmen wir an, dies voted
ist die Antwort- / abhängige Variable und die anderen sind Prädiktor- / unabhängige Variablen. In dieser Art von Fällen, Margen und marginale Effekte einer Variablen (Teilabhängigkeit) für ein übergeordnetes Variable ( zB , population
) für verschiedene Einzelebenen - Variablen etc., könnte sehr interessant sein. In einem ähnlichen Fall glm
ist dies natürlich angemessener - aber wenn es viele Variablen, Interaktionen und / oder fehlende Werte und / oder sehr große Datensätze usw. gibt, glm
ist dies nicht so zuverlässig.
Unterfragen: Kann Random Forest auf irgendeine Weise explizit mit dieser Art von Datenstruktur umgehen? Welche Art von Verzerrung bringt es mit sich, wenn es trotzdem verwendet wird? Wenn Random Forest nicht geeignet ist, gibt es eine andere Ensemble-Methode?
(Die Frage " Zufällige Gesamtstruktur für gruppierte Daten" ist möglicherweise ähnlich, beantwortet dies jedoch nicht wirklich.)
quelle
Antworten:
Random Forests funktionieren problemlos, aber Sie müssen sehr vorsichtig sein, wenn Sie die Hyperparameter optimieren (insbesondere, wenn Sie ein realistisches Maß für die Generalisierungsleistung wünschen). Die traditionellen OOB-Fehlerschätzungen sind weitestgehend optimistisch, da Ihre Daten häufig "twinning" sind.
Um die richtigen Optimierungs- und Verallgemeinerungsschätzungen zu erhalten, müssen Sie die Merkmale aller neuen Daten verstehen, auf die Sie voraussichtlich stoßen. Wenn Sie auf neue Länder extrapolieren möchten, müssen Sie eine Art von Neuabtastung einrichten (z. B. k-fache Kreuzvalidierung), die eine nach Ländern geschichtete Abtastung durchführt.
Sie müssen auch vorsichtig sein, wie Sie die Daten in eine zufällige Gesamtstruktur codieren. Es scheint, dass dies
country
eine kategoriale Variable ist. Das Eingeben als Zahl wäre etwas grob, aber nicht hoffnungslos (insbesondere, wenn Sie die IDs nach etwas Nützlichem geordnet haben).quelle
Ich arbeite gerade an einem R-Paket, das randomForest als lokalen Klassifikator entlang einer vordefinierten Klassenhierarchie ausführt. Das Paket befindet sich in R Forge unter 'hie-ran-forest'. Das Paket ist bereits einsatzbereit, obwohl es einen der Cran-Tests (für MAC) nicht besteht, weiß ich nicht genau warum. Das Paket führt nicht nur randomForest für jeden übergeordneten Knoten in der Hierarchie aus, sondern enthält auch Vorhersagefunktionen und Leistungsfunktionen. Eine der Leistungskennzahlen berücksichtigt tatsächlich die hierarchische Klassenstruktur.
Das Paket adressiert die Interaktion zwischen Ebenen, indem zunächst eine zufällige Gesamtstruktur als lokaler Klassifizierer auf jedem übergeordneten Knoten der Klassenhierarchie ausgeführt wird. Als nächstes ruft die Vorhersagefunktion den Anteil der Out-of-Bag-Stimmen ab, die jeder Fall in jedem lokalen Klassifikator erhalten hat. Dann gibt es zwei Möglichkeiten, den Stimmenanteil in eine klare Klassifizierung umzuwandeln: 1. Eine Regel mit schrittweiser Mehrheit - Beginnen Sie mit dem lokalen Klassifizierer, der der Baumwurzel am nächsten liegt, und wählen Sie das Kind dieses Klassifizierers aus, das den höchsten Stimmenanteil erhalten hat. Schauen Sie sich als Nächstes alle untergeordneten Elemente des ausgewählten Knotens an und wählen Sie erneut das untergeordnete Element aus, das im entsprechenden lokalen Klassifikator den höchsten Stimmenanteil erhalten hat. Fahren Sie fort, bis ein Endknoten erreicht ist. 2.
Der multiplikative Stimmenanteil ist vergleichbar mit dem Stimmenanteil, der von einem regulären randomForest erzeugt wird
quelle
In einem einzelnen Klassifizierungsbaum werden diese Gruppen wie alle anderen kategorialen Variablen codiert. Dies erfolgt häufig entweder als Binärcodierung oder nur mit einer Ganzzahl. Es gibt verschiedene Argumente für beide. Wenn Sie in zufälligen Gesamtstrukturen binäre Codierung verwenden, werden einige Gruppen für einen bestimmten Baum eingeschlossen / ausgeschlossen. Sie haben also vielleicht einen Indikator dafür,
country_2
aber nichtcountry_3
. Wenn Sie die Gruppenvariable als Ganzzahl belassen, kann sich die Reihenfolge auch auf das Ergebnis auswirken. Was bedeutet es fürcountry > 5
undcountry < 12
? Wie ändert sich das, wenn Sie die Länder nach dem Zufallsprinzip mit neuen ganzen Zahlen versehen?Bei jedem Schritt beim Wachsen eines Baums sucht der Algorithmus nach der Aufteilung, die die Kriterien optimiert. Wenn es große Unterschiede zwischen den Gruppen gibt, ist die Gruppierungsvariable wichtig, aber wenn es nur mäßig wichtig ist und Sie einen Baum beschneiden, kann die Variable im Wesentlichen ausgeschlossen werden.
Wie die meisten anderen Algorithmen für maschinelles Lernen berücksichtigen CART und zufällige Gesamtstrukturen nicht unbedingt die Abhängigkeit zwischen Beobachtungen innerhalb von Gruppen, wie Sie dies in einem hierarchischen Regressionsmodell erwarten würden. Wenn eine Abhängigkeit zwischen den Beobachtungen besteht, sollte diese durch den Zufallsalgorithmus erfasst werden, indem viele Bäume generiert werden, die die Gruppierungsvariable verwenden. Wenn jedoch andere Variablen eine stärkere Unterscheidung aufweisen, wird die Gruppierungsvariable möglicherweise ignoriert.
In Ihrem Fall
country
undpopulation
sind perfekt kollinear. Es gibt keine Informationen, die durch die Verwendung beider Variablen in Ihrem Modell gewonnen wurden. Sie können sich also überlegen, wie ein zufälliges Gesamtstrukturmodell diese Variablen in Ihren Daten behandeln würde.quelle