Saltar al contenido

Árboles de regresión no lineal con R

Los árboles de decisión , también conocidos como árboles de clasificación y regresión (CART), funcionan tanto para variables de entrada como de salida categóricas y continuas. Funcionan dividiendo los datos en dos o más conjuntos homogéneos basados en el divisor más significativo entre las variables independientes. La mejor diferenciación es la que minimiza la métrica del costo. La métrica de costo para un árbol de clasificación suele ser la entropía o el índice de gini, mientras que para un árbol de regresión, la métrica por defecto es el error cuadrático medio.

El flujo de trabajo básico de los árboles de decisión es el siguiente:

Árboles de regresión no lineal con R
Árboles de regresión no lineal con R

El proceso de modelación comienza en el Nodo Raíz, que representa la totalidad de los datos. Éste se divide en dos o más subnodos, lo que también se conoce como división. Este proceso de división continúa hasta que se cumple el criterio de división, y el subnodo en el que se produce la división se denomina nodo de decisión. Una vez que se cumple el criterio de división, los nodos ya no se dividen más; estos nodos se denominan nodo de hoja o nodo terminal. También podemos eliminar subnodos a través de un proceso llamado Poda.

Entrenamiento del modelo

Ahora crearemos un modelo de árbol de regresión usando la biblioteca rpart. El primer paso es instanciar el algoritmo, lo que se hace en la primera línea de código de abajo. El argumento método = «anova» especifica que se debe construir un modelo de regresión. Para el problema de clasificación, el argumento será class. El argumento de control proporciona una lista de opciones que controlan la forma en que se entrena el algoritmo del árbol de decisión.

En el siguiente código, el argumento control=rpart.control(minsplit=20, cp=0.001) especifica que el número mínimo de observaciones en un nodo debe ser 20 antes de intentar una división. También especifica que una división sólo ocurre si disminuye la métrica del error por un factor de 0,001, denominado factor de complejidad del coste . La segunda línea imprime el resumen del modelo. Observe que es posible comprender todos los posibles argumentos con el comando ?rpart().

123tree_model = rpart(unemploy ~ ., data=train, method = "anova", control=rpart.control(minsplit=20, cp=0.001))summary(tree_model)

{r}

Salida:

1234567891011121314151617181920212223242526272829303132# Llamada de salida truncada:rpart(formula = unemploy ~ ., datos = tren, método = "anova", control = rpart.control(minsplit = 20, cp = 0. 001))) n= 401 CP nsplit rel error xerror xstd1 0.508609424691 0 1.00000000000 1.00746991170 0.092225179092 0.240199126781 1 0.49139057531 0.53432047449 0.041380797753 0.062388054346 2 0. 25119144853 0.29990084346 0.025503203754 0.027180308031 3 0.18880339418 0.21834245878 0.020831020755 0.024078055174 4 0.16162308615 0.20705841419 0.020215140916 0.019456798303 5 0.13754503098 0. 17518743853 0.017112877787 0.015928262852 6 0.11808823267 0.16563982394 0.016330760668 0.014943330509 7 0.10215996982 0.15505479787 0.015160858599 0.012183802564 8 0.08721663931 0.13629795408 0. 0149150176510 0.007010774289 9 0.07503283675 0.12235179176 0.0151783291011 0.006864114984 11 0.06101128817 0.11620014096 0.0135311124312 0.004679462622 12 0.05414717319 0.11258856185 0. 0134215378513 0.002606235055 13 0.04946771057 0.09356044395 0.0119153960314 0.002392463727 14 0.04686147551 0.08924901899 0.0119240569715 0.002373022016 15 0.04446901178 0.08914954140 0. 0119254879516 0.001075173879 16 0.04209598977 0.08103175712 0.0118020468517 0.001054136373 18 0.03994564201 0.07929979931 0.0117918608118 0.001039626829 19 0.03889150564 0.07916127996 0. 0117907261419 0.001024169682 21 0.03681225198 0.07900442265 0.0117883690220 0.001000000000 22 0.03578808230 0.07900442265 0.01178836902 Importancia variable pop uempmed pce psavert 33 32 28 7

Las variables importantes, según el modelo de árbol de regresión, son pop, uempmed y pce.