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?
fuente
Respuestas:
Si bien funcionan de manera diferente a su algoritmo, creo que encontrará interesantes mob () y FTtree. Para la mafia de Zeileis, visite http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Para FTtree, los árboles funcionales de Gama, una implementación está disponible en Weka y, por lo tanto, en RWeka. Ver http://cran.r-project.org/web/packages/RWeka/index.html para más detalles.
fuente
El paquete RWeka ofrece muchos métodos de regresión. Entre ellos, puede encontrar M5P (M5 Prime), que es exactamente un modelo de regresión basado en árboles con ecuaciones lineales en las hojas. Para más detalles sobre el método M5, consulte la publicación .
Un código de ejemplo sería:
Si desea utilizar el conjunto de ensacado con el método M5, intente algo como:
Para ver las opciones de control para el modelo M5P, intente:
Si desea optimizar el método M5, hay una solución para eso en el
caret
paquete:fuente
Creo que esto responde a la versión corta de su pregunta:
Desde vistas de tareas de Cran: Machine Learning
fuente