Sie sind auf Seite 1von 10

ARBOLES DE DECISION

Edgar Acuna/CIIC 8015 Introduccin El uso de rboles de decisin tuvo su origen en las ciencias sociales con los trabajos de Sonquist y Morgan (1964) y Morgan y Messenger (1979) realizado en el Survey Research Center del Institute for Social Research de la Universidad de Michigan. El programa AID (Automatic Interaction Detection), de Sonquist, Baker y Morgan (1971), fue uno de los primeros mtodos de ajuste de los datos basados en rboles de clasificacin. En estadstica, Kass (1980) introdujo un algoritmo recursivo de clasificacin no binario, llamado CHAID (Chi-square automatic interaction detection). Ms tarde, Breiman, Friedman, Olshen y Stone (1984) introdujeron un nuevo algoritmo para la construccin de arboles y los aplicaron a problemas de regresin y clasificacin. El mtodo es conocido como CART (Classification and regression trees) por sus siglas en ingls. Casi al mismo tiempo el proceso de inducin mediante rboles de decisin comenz a ser usado por la comunidad de Machine Learning (Michalski, (1973), Quinlan (1983)) y la comunidad de Pattern Recognition (Henrichon y Fu, 1969). Machine Learning es un sub-rea de Inteligencia Artificial que cae dentro del campo de ciencias de computacin. Pattern Recognition cae dentro del rea de Ingeniera Elctrica. Hoy en da los que ms estn contribuyendo al desarrollo de clasificacin basada en rboles de decisin es la gente de Machine Learning. El trmino rboles es por la grfica, aunque los arboles son mostrados creciendo hacia la parte inferior de la pgina. La raz es el nodo superior, en cada nodo se hace una particin hasta llegar a un nodo terminal u hoja. Cada nodo no-terminal contiene una pregunta en la cual se basa la divisin del nodo. Cada nodo terminal contiene el valor de la variable de respuesta (rboles para regresin) o el nombre de la clase a la cual pertenece(rboles para clasificacin).

Figura 1: Un rbol de clasificacin para un problema con J = 3 clases y p = 25 variables predictoras

Existen muchos algoritmos ,entre los algoritmos mas usados estn:

C4.5. Introducido por Quinlan (1983) dentro de la comunidad de Machine Learning. CHAID. Significa Chi-square automatic interaction detection, fue introducido por Kass (1980) y es un derivado del THAID: A sequential search program for the analysis of nominal scale dependent variables (Morgan and Messenger, 1973). Est disponible como un modulo del paquete estadstico SPSS. El criterio para particionar est basado en 2 y para terminar el proceso se requiere definir de antemano un threshold (umbral). NewId. Es muy similar a C4.5. CART. Introducido por Breiman et al. (1984), propiamente es un algoritmo de rboles de decisin binario. Existe una versin similar llamada IndCART y que est disponible en el paquete IND distribuido por la NASA El citerio para particionar es la impureza del nodo. Arboles Bayesianos: Est basado en aplicacin de mtodos Bayesianos a arboles de decisin. Buntine (1992. Disponible en el paquete IND distribuido por la NASA. CN2. Introducido por Clark and Niblett (1988). En este curso usaremos solo C4.5 y RPART (PARTicionamiento Recursivo), una versin de CART disponible en R. Un rbol de decisin particiona el espacio de variables predictoras en un conjunto de hiperrectngulos y en cada uno de ellos ajusta un modelo sencillo, generalmente una constante. Es decir y=c, donde y es la variable de respuesta. La construccin de un rbol de decisin se basa pues en cuatro elementos: a) Un conjunto de preguntas binarias Q de la forma { x A?} donde A es un subconjunto del espacio muestral. b) El mtodo usado para particionar los nodos. c) La estrategia requerida para parar el crecimiento del rbol. d) La asignacin de cada nodo terminal a un valor de la variable de respuesta (regresin) o a una clase (clasificacin). Las diferencias principales entre los algoritmos para construir rboles se hallan en la estrategia para podar los rboles, la regla para particionar los nodos y el tratamiento de valores perdidos (missing values).

Ejemplo (rboles para regresin) Las variables predictoras son gestage= tiempo de gestacin, y birthwt=peso y la variable de respuesta es headcirc=circunferencia de la cabeza de 100 nacidos. Los datos estn disponibles en http://math.uprm.edu/~edgar/headcirc.txt .Ajustar un modelo de regresin por rboles. Usando la librera Rpart se obtiene los siguientes resultados >datos1=read.table(http://math.uprm.edu/~edgar/headcirc.txt,header=T) >arbol1=rpart(headcirc~gestage+birthwt,data=datos1) > arbol1 n= 100

node), split, n, deviance, yval * denotes terminal node 1) root 100 634.750000 26.45000 2) birthwt< 840 21 25.809520 23.09524 4) birthwt< 720 14 9.214286 22.64286 * 5) birthwt>=720 7 8.000000 24.00000 * 3) birthwt>=840 79 309.772200 27.34177 6) gestage< 30.5 54 97.500000 26.50000 12) birthwt< 1180 30 27.200000 25.60000 24) birthwt< 1045 15 15.733330 25.13333 * 25) birthwt>=1045 15 4.933333 26.06667 * 13) birthwt>=1180 24 15.625000 27.62500 26) gestage< 29.5 17 7.529412 27.29412 * 27) gestage>=29.5 7 1.714286 28.42857 * 7) gestage>=30.5 25 91.360000 29.16000 14) birthwt< 1430 15 63.333330 28.66667 * 15) birthwt>=1430 10 18.900000 29.90000 * >plot(arbol1) >text(arbol1,use.n=TRUE)

El siguiente programa en R particiona el espacio de las variables predictoras en las 8 regiones definidas por los nodos terminales plot(datos1$gestage,datos1$birthwt,type="n",xlab="gestage",ylab="birthwt") abline(h=720) abline(h=840) lines(c(30.5,30.5),c(840,1550)) lines(c(29.5,29.5),c(1180,1550)) lines(c(0,30.5),c(1180,1180)) lines(c(30.5,36),c(1430,1430)) lines(c(0,30.5),c(1045,1045)) text(30,600,"R1") text(30,780,"R2") text(27,950,"R3") text(27,1100,"R4")

text(27,1350,"R5") text(30,1350,"R6") text(32,1250,"R7") text(32,1470,"R8")

El siguiente programa en R visualiza el modelo creado por el rbol de decision ggest=seq(min(datos1$gestage),max(datos1$gestage),length=50) gbw=seq(min(datos1$birthwt),max(datos1$birthwt),length=50) grid1=list(gestage=ggest,birthwt=gbw) grid1=expand.grid(grid1) estimado=predict(arbol1,grid1) matest=matrix(estimado,50,50) persp(ggest, gbw, matest, theta=30, phi=45, xlab="gestage", ylab="birthwt", zlab="headcir", col="lightgreen")

En este caso la superficie de regresin es estimada usando el siguiente modelo aditivo

s ( x) =

ci I N ( x)
i =1
i

las constantes ci son constantes y INi(x)= 1 si x Ni y es igual a 0 en otro caso. Las k regiones Ni son hiperectngulos disjuntos con lados paralelos a los ejes coordenados. Los hiperrectngulos son construidos por particionamiento recursivo y pueden ser representados por un rbol.
Ejemplo (rboles para clasificacin).

Las variables predictoras son notas en los exmenes I y II de un estudiante y hay dos clases: P, pasar la clase o F: fracasar la clase.

Los datos estn disponibles en http://math.uprm.edu/~edgar/eje1disc.dat. Hallar un clasificador basado en rboles. > library(rpart) > eje1dis=read.table(http://math.uprm.edu/~edgar/eje1disc.dat) >arbol=rpart(V4~V1+V2, data=eje1dis,method=class,control=rpart.control(minbucket=2)) > print(arbol) n= 32 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 32 8 p (0.25000000 0.75000000) 2) V2< 43.5 9 2 f (0.77777778 0.22222222) 4) V1< 75.5 6 0 f (1.00000000 0.00000000) * 5) V1>=75.5 3 1 p (0.33333333 0.66666667) * 3) V2>=43.5 23 1 p (0.04347826 0.95652174) * > De la informacin de los tres nodos terminales se puede ver que hay dos observaciones mal clasificadas. Dos observaciones que deberan ser clasificadas como f fueron clasificadas como p >. Una explicacin detallada de cada paso es como sigue: > summary(arbol) Call: rpart(formula = V4 ~ V1 + V2, data = eje1, method = "class", control = rpart.control(minbucket = 2)) n= 32 CP nsplit rel error xerror xstd 1 0.625 0 1.000 1.000 0.3061862 2 0.125 1 0.375 0.625 0.2567449 3 0.010 2 0.250 0.625 0.2567449 Node number 1: 32 observations, complexity param=0.625 predicted class=p expected loss=0.25 class counts: 8 24 probabilities: 0.250 0.750 left son=2 (9 obs) right son=3 (23 obs) Primary splits: V2 < 43.5 to the left, improve=6.975845, (0 missing) V1 < 63 to the left, improve=3.000000, (0 missing) Surrogate splits: V1 < 50.5 to the left, agree=0.75, adj=0.111, (0 split) Node number 2: 9 observations, complexity param=0.125 predicted class=f expected loss=0.2222222 class counts: 7 2 probabilities: 0.778 0.222 left son=4 (6 obs) right son=5 (3 obs) Primary splits: V1 < 75.5 to the left, improve=1.7777780, (0 missing)

V2 < 33.5 to the right, improve=0.7111111, (0 missing) Surrogate splits: V2 < 25.5 to the right, agree=0.778, adj=0.333, (0 split) Node number 3: 23 observations predicted class=p expected loss=0.04347826 class counts: 1 22 probabilities: 0.043 0.957 Node number 4: 6 observations predicted class=f expected loss=0 class counts: 6 0 probabilities: 1.000 0.000 Node number 5: 3 observations predicted class=p expected loss=0.3333333 class counts: 1 2 probabilities: 0.333 0.667 > # graficando el arbol > plot(arbol) > text(arbol,use.n=T) ># Graficando las regiones creadas por el arbol en que el espacio muestral >plot(eje1dis$V1,eje1dis$V2,type="n",xlab="E1",ylab="E2") >text(eje1dis$V1,eje1dis$V2,as.character(eje1dis$V4)) >lines(c(75.5,75.5),c(0,43.5)) > abline(h=43.5) > ajuste=predict(arbol) > ajuste f p 1 0.04347826 0.9565217 2 0.04347826 0.9565217 3 0.04347826 0.9565217 4 0.04347826 0.9565217 5 0.04347826 0.9565217 6 0.04347826 0.9565217 7 0.04347826 0.9565217 8 0.04347826 0.9565217 9 0.04347826 0.9565217 10 0.04347826 0.9565217 11 0.04347826 0.9565217 12 0.04347826 0.9565217 13 0.04347826 0.9565217 14 0.04347826 0.9565217 15 0.04347826 0.9565217 16 0.33333333 0.6666667 17 0.04347826 0.9565217 18 0.04347826 0.9565217 19 0.33333333 0.6666667 20 0.04347826 0.9565217 21 0.04347826 0.9565217

22 0.04347826 0.9565217 23 0.04347826 0.9565217 24 0.04347826 0.9565217 25 0.04347826 0.9565217 26 1.00000000 0.0000000 27 1.00000000 0.0000000 28 1.00000000 0.0000000 29 1.00000000 0.0000000 30 1.00000000 0.0000000 31 0.33333333 0.6666667 32 1.00000000 0.0000000 > > classpredi=apply(ajuste,1,which.max) > classpredi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 27 28 29 30 31 32 1 1 1 1 2 1 > c("F","P")[classpredi] [1] "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" "P" [20] "P" "P" "P" "P" "P" "P" "F" "F" "F" "F" "F" "P" "F" > eje1dis$V4 [1] p p p p p p p p p p p p p p p p p p p p p p p p f f f f f f f f Levels: f p Notar que hay dos observaciones mal clasificadas. Dando una tasa de error estimada de 6.25%. Ms adelante se ver otra forma de estimar el error usando validacin cruzada.

La siguiente figura muestra la regiones de clasificacin predichas por el mtodo de rboles

Das könnte Ihnen auch gefallen