Versione breve: sto cercando un pacchetto R in grado di costruire alberi decisionali mentre ogni foglia dell'albero decisionale è un modello di regressione lineare completo. AFAIK, la libreria rpart
crea alberi decisionali in cui la variabile dipendente è costante in ogni foglia. Esiste un'altra libreria (o rpart
un'impostazione di cui non sono a conoscenza) in grado di costruire tali alberi?
Versione lunga: sto cercando un algoritmo che costruisca un albero decisionale basato su un set di dati di addestramento. Ogni decisione nella struttura suddivide il set di dati di allenamento in due parti, in base a una condizione su una delle variabili indipendenti. La radice dell'albero contiene il set di dati completo e ogni elemento nel set di dati è contenuto esattamente in un nodo foglia.
L'algoritmo va così:
- Inizia con il set di dati completo, che è il nodo principale dell'albero. Scegliere questo nodo e chiamare .
- Creare un modello di regressione lineare sui dati in .
- Se del modello lineare di è superiore a qualche soglia , allora abbiamo finito con , quindi segna come una foglia e vai al passaggio 5.
- Prova decisioni casuali e scegli quella che produce il miglior nei nodi secondari:
- Scegli una variabile indipendente casuale , nonché una soglia casuale .
- La decisione divide il set di dati di in due nuovi nodi, e .
- Crea modelli di regressione lineare su e e calcola il loro (chiamali e ).
- Da tutte quelle tuple , seleziona quella con il minimo massimo (\ hat {r}, \ tilde {r}) . Ciò produce una nuova decisione nella struttura e ha due nuovi nodi secondari e .
- Abbiamo terminato l'elaborazione . Scegliere un nuovo nodo che non è stato ancora elaborato e tornare al passaggio 2. Se tutti i nodi sono stati elaborati, l'algoritmo termina.
Ciò genererà in modo ricorsivo un albero decisionale che suddivide i dati in parti più piccole e calcola un modello lineare su ciascuna di quelle parti.
Il passaggio 3 è la condizione di uscita, che impedisce l'adattamento eccessivo dell'algoritmo. Naturalmente, ci sono altre possibili condizioni di uscita:
- Esci se la profondità di nella struttura è superiore a
- Esci se il set di dati in è inferiore a
Esiste un tale algoritmo in un pacchetto R?