Versión corta: estoy buscando un paquete R que pueda construir árboles de decisión, mientras que cada hoja en el árbol de decisión es un modelo de regresión lineal completo. AFAIK, la biblioteca rpart
crea árboles de decisión donde la variable dependiente es constante en cada hoja. ¿Hay otra biblioteca (o una rpart
configuración que no conozca) que pueda construir tales árboles?
Versión larga: estoy buscando un algoritmo que construya un árbol de decisión basado en un conjunto de datos de entrenamiento. Cada decisión en el árbol divide el conjunto de datos de entrenamiento en dos partes, de acuerdo con una condición en una de las variables independientes. La raíz del árbol contiene el conjunto de datos completo, y cada elemento del conjunto de datos está contenido exactamente en un nodo hoja.
El algoritmo es así:
- Comience con el conjunto de datos completo, que es el nodo raíz del árbol. Elija este nodo y llámelo .
- Crear un modelo de regresión lineal de los datos de .
- Si del modelo lineal de es más alto que algún umbral , entonces hemos terminado con , entonces marque como una hoja y salte al paso 5.
- Pruebe decisiones aleatorias y elija la que produzca el mejor en los subnodos:
- Elija una variable independiente aleatoria , así como un umbral aleatorio .
- La decisión divide el conjunto de datos de N en dos nuevos nodos, N y ~ N .
- Crear modelos de regresión lineal en ambos N y ~ N , y calcular su R 2 (llamada de ellos r y ~ r ).
- De todos esos tuplas ( v i , θ i , r , ~ r ) , seleccione el que con la máxima m i n ( r , ~ r ) . Esto produce una nueva decisión en el árbol, y N tiene dos nuevos subnodos N y ~ N .
- Tenemos procesamiento acabada . Elija un nuevo nodo N que aún no se haya procesado y vuelva al paso 2. Si todos los nodos se han procesado, el algoritmo finaliza.
Esto construirá recursivamente un árbol de decisión que divide los datos en partes más pequeñas y calcula un modelo lineal en cada una de esas partes.
El paso 3 es la condición de salida, que evita que el algoritmo se sobreajuste. Por supuesto, hay otras posibles condiciones de salida:
- Salga si la profundidad de en el árbol está por encima de θ d e p t h
- Salga si el conjunto de datos en es menor que θ d a t a s e t
¿Existe tal algoritmo en un paquete R?