¿Rpart utiliza divisiones multivariadas por defecto?


8

Sé que la rpartfunción de R mantiene los datos que necesitaría para implementar una división multivariada, pero no sé si en realidad está realizando divisiones multivariadas. Intenté investigarlo en línea mirando los rpartdocumentos, pero no veo ninguna información de que pueda hacerlo o lo esté haciendo. Alguien sabe a ciencia cierta?


¿Qué quieres decir exactamente con división multivariante? Prueba multivariante ¿qué atributo se debe usar para dividir o dividir en función de alguna función de pocos atributos?

Esta es una división que usa más de una variable. Geométricamente, esto significa divisiones a lo largo de un hiperplano, en lugar de un plano perpendicular a uno de los ejes.
chubbsondubs

Respuestas:


13

Rpart solo proporciona divisiones univariadas. Creo, según su pregunta, que no está completamente familiarizado con la diferencia entre un método de partición univariante y un método de partición multivariante. He hecho todo lo posible para explicar esto a continuación, así como proporcionar algunas referencias para futuras investigaciones y sugerir algunos paquetes R para implementar estos métodos.

Rpart es un clasificador basado en árboles que utiliza particiones recursivas. Con los métodos de partición, debe definir los puntos dentro de sus datos en los que se realizará una división. El algoritmo rpart en R hace esto al encontrar la variable y el punto que mejor divide (y por lo tanto reduce) el RSS. Debido a que las divisiones solo ocurren a lo largo de una variable a la vez, estas son divisiones univariadas. Una división multivariada generalmente se define como una partición simultánea a lo largo de múltiples ejes (por lo tanto, multivariada), es decir, el primer nodo rpart podría dividirse a lo largo de Edad> 35, el segundo nodo podría dividirse a lo largo de Ingresos> 25,000, y el tercer nodo podría dividirse a lo largo de Ciudades al oeste de el Mississippi. El segundo y tercer nodos se dividen en subconjuntos más pequeños de los datos generales, por lo que en el segundo nodo el criterio de ingresos divide mejor el RSS solo para aquellas personas que tienen más de 35 años, no se aplica a las observaciones que no se encuentran en este nodo, lo mismo se aplica al criterio de Ciudades. Se podría continuar haciendo esto hasta que haya un nodo para cada observación en su conjunto de datos (rpart utiliza una función de tamaño de depósito mínimo además de un criterio de tamaño de nodo mínimo y un parámetro cp que es el mínimo que debe aumentar el valor de r cuadrado para seguir ajustando).

Un método multivariante, como el Método de inducción de la regla del paciente (el paquete principal en R) se dividiría simultáneamente seleccionando, por ejemplo, Todas las observaciones donde el ingreso era mayor de 22,000, Edad> 32 y Ciudades al oeste de Atlanta. La razón por la cual el ajuste puede ser diferente es porque el cálculo para el ajuste es multivariante en lugar de univariante, el ajuste de estos tres criterios se calcula en función del ajuste simultáneo de las tres variables en todas las observaciones que cumplen estos criterios en lugar de dividirlo iterativamente en función de divisiones univariadas (como con rpart).

Existen diferentes creencias con respecto a la efectividad de los métodos de partición univariados versus multivariados. En general, lo que he visto en la práctica es que la mayoría de las personas prefieren la partición univariada (como rpart) con fines explicativos (solo se usa en la predicción cuando se trata de un problema donde la estructura está muy bien definida y la variación entre las variables es bastante constante, es por eso que a menudo se usan en medicina). Los modelos de árboles univariantes generalmente se combinan con los aprendices de conjunto cuando se usan para la predicción (es decir, un bosque aleatorio). Las personas que usan particionamiento o agrupamiento multivariante (que está muy relacionado con el particionamiento multivariado) a menudo lo hacen por problemas complejos que los métodos univariados encajan muy mal, y lo hacen principalmente para la predicción, o para agrupar las observaciones en categorías.

Recomiendo encarecidamente el libro de Julian Faraway Extender el modelo lineal con R. El capítulo 13 está dedicado por completo al uso de árboles (todos univariados). Si le interesan más los métodos multivariados, Elementos de aprendizaje estadístico de Hastie et. al, proporciona una excelente visión general de muchos métodos multivariados, incluido PRIM (aunque Friedman en Stanford tiene su artículo original sobre el método publicado en su sitio web), así como los métodos de agrupamiento.

En lo que respecta a los paquetes R para utilizar estos métodos, creo que ya está utilizando el paquete rpart, y he mencionado el paquete primario anterior. Hay varias rutinas de agrupamiento integradas, y me gusta mucho el paquete de fiesta mencionado por otra persona en este hilo, debido a su implementación de inferencia condicional en el proceso de construcción del árbol de decisión. El paquete optpart le permite realizar particiones multivariadas, y el paquete mvpart (también mencionado por otra persona) le permite realizar árboles rpart multivariados, sin embargo, personalmente prefiero usar partDSA, que le permite combinar nodos más abajo en su árbol para ayudar a prevenir particiones similares observaciones, si siento que rpart y party no son adecuadas para mis propósitos de modelado.

Nota: en mi ejemplo de un árbol rpart en el párrafo 2, describo cómo funciona la partición con números de nodo, si uno dibujara este árbol, la partición continuaría a la izquierda si la regla para la división fuera cierta, sin embargo, en RI cree que la división en realidad procede a la derecha si la regla es verdadera.


Adam gran respuesta. Eso es exactamente lo que estaba preguntando. Sin embargo, agregó un poco de información sobre la que he tenido dificultades para encontrar más información. El criterio de detención de CP de Mallow. He revisado el código fuente R, pero es demasiado difícil imaginar cómo deciden detenerse. A grandes rasgos tengo una idea, pero necesito un documento o alguna discusión sobre cómo funciona para poder terminar de implementarlo. ¿Tienes alguna información al respecto?
chubbsondubs

Entonces, revisé el manual de referencia de rpart, y aparentemente estaba incorrecto. Si bien uno de los criterios para detenerse en rpart se llama "cp", esto es la abreviatura de "parámetro de complejidad" y es simplemente la cantidad mínima que r ^ 2 debe aumentar para poder buscar una división particular. He corregido mi publicación anterior para reflejar esto. La falta de pruebas estadísticas en las reglas de división es una de las razones por las que uso el paquete party sobre el paquete rpart. Con el paquete de fiesta, el método predeterminado implementa un valor p corregido de Bonferroni como criterio de detención (valor predeterminado p = 0.05). Para más detalles ver la viñeta.
Adam

Siento que el hecho de que rpart no utiliza un criterio de detención es un activo, más que un pasivo. Una división puede parecer inútil y, sin embargo, abrir el camino para divisiones posteriores más abajo en el árbol, lo que puede ser bastante significativo. Una política de "crecer y luego podar" tal como se implementa en rpart evitará detenerse temprano y me parece un enfoque sensato.
F. Tusell

@Tusell, esa es la idea detrás de la investigación de CART, es que elegir un criterio de detención es subóptimo. Cultive un árbol completo y luego use la poda para encontrar un árbol óptimo. Sin embargo, como señaló @Adam, rpart no funciona exactamente así. En parte, creo que es una optimización para grandes conjuntos de datos. Si puede cortar un subárbol temprano sin explorarlo, puede ahorrar mucho más tiempo de CPU que pasar por una sesión completa de poda y expansión. Sin embargo, como señala, eso significa que algunos árboles no están completamente explorados y debe ajustar el parámetro cp para que funcione.
chubbsondubs

@Adam ¿Se calcula R ^ 2 a partir del conjunto de datos de prueba o está utilizando el conjunto de poda para calcular MSE?
chubbsondubs

1

Tan rápido como lo sé, no lo hace; pero no lo he usado por un tiempo. Si lo entiendo bien, es posible que desee ver el paquete mvpart en su lugar.


1

Tu terminología es confusa. ¿Se refiere a divisiones que utilizan más de una variable o un árbol que permite una respuesta multivariada (en lugar de una univariada)? Presumo lo último.

F. Tusell te ha señalado el paquete mvpart, que agrega un criterio multivariado para la impureza del nodo que se evalúa para todas las divisiones posibles en cada etapa de la construcción de árboles.

Una alternativa es el paquete de fiesta , cuya función ctree()puede manejar respuestas multivariadas.


En realidad me estoy refiriendo a las divisiones usando más de una variable. Si lee el libro CART de Leo Breiman, se refiere a esto como divisiones multivariadas en lugar de univariadas donde solo se considera una variable. Gracias por tu respuesta.
chubbsondubs

1
Se consideran todas las variables rpart, la división binaria se forma al buscar en todas las variables y en todas las ubicaciones posibles de división dentro de cada variable. rparttambién almacena información sobre divisiones sustitutas que se pueden usar cuando faltan datos en sus variables. ¿Esto ayuda?
Gavin Simpson

Si te refieres a divisiones que son una combinación de dos o más variables, no, rpartno maneja ese caso.
Gavin Simpson

1

Las divisiones multivariadas tal como se definen en el libro CART no se implementan en rpart. El paquete de software CART de Salford Systems tiene esta característica, pero AFAIK utiliza un algoritmo patentado con licencia de Breiman, Friedman et al.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.