Kurzversion: Ich suche ein R-Paket, das Entscheidungsbäume erstellen kann, während jedes Blatt im Entscheidungsbaum ein vollständiges lineares Regressionsmodell ist. AFAIK, die Bibliothek rpart
erstellt Entscheidungsbäume, in denen die abhängige Variable in jedem Blatt konstant ist. Gibt es eine andere Bibliothek (oder eine rpart
Einstellung, die mir nicht bekannt ist), die solche Bäume bauen kann?
Langfassung: Ich suche einen Algorithmus, der einen Entscheidungsbaum auf der Grundlage eines Trainingsdatensatzes erstellt. Jede Entscheidung im Baum teilt den Trainingsdatensatz gemäß einer Bedingung für eine der unabhängigen Variablen in zwei Teile. Die Wurzel des Baums enthält den vollständigen Datensatz, und jedes Element im Datensatz ist in genau einem Blattknoten enthalten.
Der Algorithmus sieht folgendermaßen aus:
- Beginnen Sie mit dem vollständigen Datensatz, der der Stammknoten des Baums ist. Wählen Sie diesen Knoten , und nennen es .
- Erstellen Sie eine lineare Regression Modell auf die Daten in .
- Wenn des linearen Modells von N höher als ein Schwellenwert θ R 2 ist , ist N erledigt. Markieren Sie N als Blatt, und fahren Sie mit Schritt 5 fort.
- Versuchen Sie es mit zufälligen Entscheidungen und wählen Sie die aus, die das beste R 2 in den Unterknoten ergibt:
- Wählen Sie eine zufällige unabhängige Variable sowie eine zufällige Schwelle θ i .
- Die Entscheidung , teilt den Datensatz von N in zwei neue Knoten, N und ~ N .
- Erstellen Lineare Regressionsmodelle sowohl N und ~ N und berechnen ihre R 2 (nennen wir sie r und ~ r ).
- Aus allen diesen - Tupel ( v i , θ i , r , ~ r ) , wählen den mit dem maximal m i n ( r , ~ r ) . Daraus ergibt sich eine neue Entscheidung in dem Baum, und N hat zwei neue Unterknoten N und ~ N .
- Wir haben die Bearbeitung von . Wählen Sie einen neuen Knoten N aus, der noch nicht verarbeitet wurde, und kehren Sie zu Schritt 2 zurück. Wenn alle Knoten verarbeitet wurden, endet der Algorithmus.
Dadurch wird rekursiv ein Entscheidungsbaum erstellt, der die Daten in kleinere Teile aufteilt und ein lineares Modell für jeden dieser Teile berechnet.
Schritt 3 ist die Ausgangsbedingung, die eine Überanpassung des Algorithmus verhindert. Natürlich gibt es auch andere mögliche Ausstiegsbedingungen:
- Beenden Sie, wenn die Tiefe von im Baum über θ d e p t h liegt
- Beenden Sie den Vorgang, wenn der Datensatz in kleiner als θ d a t a s e t ist
Gibt es einen solchen Algorithmus in einem R-Paket?