CONTENIDO

  1. INTRODUCCION
  2. ARBOLES DE DECISION
  3. IMPLEMENTACION EN R
  4. APLICACION DEL MODELO
  5. EJEMPLO FINAL

INTRODUCCION

  • El crédito es la concesión de un préstamo de dinero al cliente por parte de la entidad financiera, con el compromiso de que en el futuro será devuelto en forma paulatina y gradual. El préstamo a un nuevo cliente conlleva una serie de fases como menciona Lara (2010) empieza por la promoción (en una agencia o en el campo), evaluación, aprobación, desembolso y recuperación del crédito, según el periodo pactado con el cliente Cuando un cliente ha tenido créditos anteriores, tiene un historial y ya no pasa por la fase de promoción.

  • La promoción del crédito lo realiza el promotor de crédito ubicando zonas potenciales donde pueda captar nuevos clientes, para proceder con la recepción de documentación e información sobre el crédito siendo atendido por el analista de crédito quien verifica los datos del cliente en las centrales de riesgos para su posterior evaluación a fin de presentarlos para su aprobación o rechazo; si es aprobado se procede a llenar la solicitud de crédito para luego proceder al desembolso del préstamo correspondiente. Todo el proceso por lo general se basa en juicio subjetivo del analista de crédito incurriendo muchas veces en errores que conllevan al riesgo de morosidad del cliente, la figura cambiaria si se contara con sistemas expertos que ayuden a la toma de decisión más certera.

ARBOLES DE DECISION

  • Mitchell (2007) afirma que un árbol de decisión es un modelo de predicción que pertenece al enfoque de programación “divide y vencerás”, usado en inteligencia artificial.

  • El árbol predice la variable dependiente con base en el aprendizaje de reglas de decisión inferidas desde las características que poseen los datos; si la variable dependiente es categórica decimos que es un árbol de clasificación, y si es numérica es un árbol de regresión (Cardona, 2009).

  • Los árboles de decisión es un modelo de predicción surgido en el ámbito del machine learning (aprendizaje automático) y de la inteligencia artificial, que partiendo de una base de datos crea diagramas de construcciones lógicas que nos ayudan a resolver problemas (Beltrán, 2015).

  • Los árboles de decisión son llamados así porque su representación es similar a la de un árbol, cuyos elementos son: raíz, nodos, ramas y hojas. El nodo raíz y los nodos internos del árbol corresponden a una prueba del valor de unas de las propiedades y las ramas nodo son identificadas mediante los posibles valores de la prueba. En los nodos hoja del árbol se especifica el valor que se debe producir en el caso de alcanzar dicha hoja.

Arbol de decision

Arboles de Regresion

  • Los árboles de regresión son el subtipo de árboles de predicción que trabaja con variables respuesta continuas. La forma más sencilla de entender la idea detrás de los árboles de regresión es mediante de un ejemplo simplificado. El set de datos Hitter contiene información sobre 322 jugadores de béisbol de la liga profesional. Entre las variables registradas para cada jugador se encuentran: el salario (Salary), años de experiencia (Years) y el número de bateos durante los últimos años (Hits). Utilizando estos datos, se quiere predecir el salario (en unidades logarítmicas) de un jugador en base a su experiencia y número de bateos. El árbol resultante se muestra en la siguiente imagen.

Arboles de Clasificacion

  • Los árboles de clasificación se asemejan mucho a los árboles de regresión, con la diferencia de que predicen variables respuesta cualitativas en lugar de continuas.

  • Para construir un árbol de clasificación se emplea el mismo método recursive binary splitting descrito en los árboles de regresión. Sin embargo, como la variable respuesta en cualitativa, no es posible emplear el RSS como criterio de selección de las divisiones óptimas. Existen varias alternativas, todas ellas con el objetivo de encontrar nodos lo más puros/homogéneos posible.

IMPLEMENTACION EN R

  • Existen diferentes paquetes en R que permiten la creación de modelos basados en árboles. Entre las mas conocidas tenemos los siguientes:

  • tree y rpart: contiene funciones para la creación y representación de árboles de regresión y clasificación.

  • rpart.plot: permite crear representaciones detalladas de modelos creados con rpart.

  • Se debe de instalar uitlizando los siguientes comandos:

install.packages("tree",dependencies = TRUE)
install.packages("rpart",dependencies = TRUE)
install.packages("rpar.plot",dependencies = TRUE)

APLICACION PRACTICA

Para generar un ejemplo de arboles de clasificacion realizaremos los siguientes pasos:

  1. Ejecutar R en cosola o en su defecto Rstudio.
  2. Cargar las librerias necesarias:
library(rpart)
library(rpart.plot)
  1. Abrir el archivo de datos que contenga la informacion a ser analizada, ello se realiza con el siguiente comamndo para almacenarlo en R:
datos <- read.csv("D:/doctorado/usuario/ARBOLES-VERONICA/datos.csv",sep = ";",header = T)
datos$salario<-as.factor(datos$salario)
datos$tiemporesidencia<-as.factor(datos$tiemporesidencia)
datos$diasatraso<-as.factor(datos$diasatraso)
  1. Para observar que se cargo los datos verificamos con el comando summary.
summary(datos)
  1. Generamos dos grupos de datos: uno para entrenamiento del modelo de arboles y otro grupo para prueba del modelo.
# generamos tabla entrenamiento y prueba aleatoriamente
set.seed(134)
# training 70% y testing 30%
dividir <- sample(2, nrow(datos), replace = TRUE, prob = c(0.8, 0.2))
entrenamiento <- datos[dividir == 1, ]
prueba <- datos[dividir == 2, ]
  1. Ahora generamos el modelo de arboles de decision con el siguiente comando:
modelo_arbol<-rpart(resultado~., data = entrenamiento)
prediccion_arbol <- predict(modelo_arbol, prueba[,-20], type = "class")
modelo_arbol
  1. Generamos el arbol graficamente:
plot(modelo_arbol)
text(modelo_arbol)
  1. Evaluamos el modelo mediante matriz de confusion (MC) y error del modelo:
# calculamos la matriz de confusion
MC<-table(prueba$resultado,prediccion_arbol)
MC
# calculamos el error
acierto<-sum(diag(MC))/sum(MC)
acierto
error <- 1-acierto
error
confusionMatrix(prediccion_arbol,prueba[["resultado"]])
varImp(modelo_arbol)

APLICACION FINAL

library(rpart)
library(rpart.plot)
datos <- read.csv("C:/Users/JULIUS EL FENIX/Desktop/ARBOLES-VERONICA/datos.csv",sep = ";",header = T)
datos <- datos[-1]
datos$salario<-as.factor(datos$salario)
datos$tiemporesidencia<-as.factor(datos$tiemporesidencia)
datos$diasatraso<-as.factor(datos$diasatraso)
str(datos)
## 'data.frame':    200 obs. of  21 variables:
##  $ salario           : Factor w/ 4 levels "0","1","2","3": 2 3 1 2 2 1 1 3 1 3 ...
##  $ sexo              : Factor w/ 2 levels "Femenino","Masculino": 2 1 2 2 2 2 2 2 2 2 ...
##  $ estadocivil       : Factor w/ 5 levels "Casado","divorciada/separada",..: 1 4 1 5 1 5 1 5 3 5 ...
##  $ edad              : int  63 27 49 45 53 35 53 35 61 28 ...
##  $ tiempoempleo      : Factor w/ 5 levels "<1",">=7","1<=X<4",..: 2 3 4 4 3 3 2 3 4 5 ...
##  $ vivienda          : Factor w/ 2 levels "Alquilada","Propio": 2 2 2 1 1 1 2 1 2 2 ...
##  $ tiemporesidencia  : Factor w/ 4 levels "1","2","3","4": 4 2 3 4 4 4 4 2 4 2 ...
##  $ telefono          : Factor w/ 2 levels "No","Si": 2 1 1 1 1 2 1 2 1 1 ...
##  $ trabajo           : Factor w/ 3 levels "Empleado","Obrero/Agricultor",..: 1 1 2 1 1 2 1 3 2 3 ...
##  $ historialcredito  : Factor w/ 4 levels "creditos existentes",..: 1 2 1 2 3 2 2 2 2 1 ...
##  $ diasatraso        : Factor w/ 3 levels "0","1","2": 1 1 1 1 2 1 1 1 1 1 ...
##  $ proposito         : Factor w/ 6 levels "Aumento capital",..: 4 4 3 1 2 1 1 2 4 2 ...
##  $ montodecredito    : int  1169 5951 2096 7882 4870 9055 2835 6948 3059 5234 ...
##  $ plazo             : int  9 18 12 24 24 24 24 36 12 30 ...
##  $ interes           : Factor w/ 11 levels "34,5","36","38",..: 1 1 1 3 7 3 8 7 6 7 ...
##  $ cuentaahorro      : Factor w/ 5 levels "<1",">=10","1<=X<5",..: 5 1 1 1 1 5 4 1 2 1 ...
##  $ otras.propiedades : Factor w/ 5 levels "Automovil","Casa",..: 2 2 2 5 4 4 5 1 2 1 ...
##  $ fiador            : Factor w/ 3 levels "co-solicitante",..: 3 3 3 2 3 3 3 3 3 3 ...
##  $ creditosexistentes: int  2 1 1 1 2 1 1 1 1 2 ...
##  $ personastrabajan  : int  1 1 2 2 2 2 1 1 1 1 ...
##  $ resultado         : Factor w/ 2 levels "Bueno","Malo": 1 2 1 1 2 1 1 1 1 2 ...
summary(datos)
##  salario        sexo                  estadocivil      edad      
##  0:69    Femenino : 61   Casado             :42   Min.   :22.00  
##  1:51    Masculino:139   divorciada/separada:44   1st Qu.:30.00  
##  2:69                    divorciado/separado: 5   Median :35.50  
##  3:11                    Soltera            :17   Mean   :38.38  
##                          Soltero            :92   3rd Qu.:45.00  
##                                                   Max.   :66.00  
##                                                                  
##       tiempoempleo      vivienda   tiemporesidencia telefono
##  <1         :32    Alquilada: 56   1:31             No:109  
##  >=7        :57    Propio   :144   2:78             Si: 91  
##  1<=X<4     :73                    3:50                     
##  4<=X<7     :29                    4:41                     
##  Desempleado: 9                                             
##                                                             
##                                                             
##                    trabajo                        historialcredito
##  Empleado              :137   creditos existentes         : 64    
##  Obrero/Agricultor     : 29   creditos pagados            :108    
##  Profesional/calificado: 34   creditos pagados con retraso: 18    
##                               sin creditos                : 10    
##                                                                   
##                                                                   
##                                                                   
##  diasatraso            proposito  montodecredito      plazo      
##  0:182      Aumento capital :62   Min.   :  600   Min.   : 6.00  
##  1: 13      Automovil       :24   1st Qu.: 1380   1st Qu.:12.00  
##  2:  5      Educacion       :24   Median : 2233   Median :18.00  
##             Electrodomestico:72   Mean   : 3368   Mean   :17.95  
##             Otros           : 3   3rd Qu.: 4630   3rd Qu.:24.00  
##             Reparaciones    :15   Max.   :15945   Max.   :36.00  
##                                                                  
##     interes    cuentaahorro            otras.propiedades
##  34,5   :77   <1     :114   Automovil           :70     
##  49,5   :40   >=10   : 12   Casa                :48     
##  42     :24   1<=X<5 : 23   Maquinaria          : 9     
##  36     :22   5<=X<10: 17   Ninguno             :30     
##  41,5   :20   No     : 34   Terreno-Construccion:43     
##  38     : 9                                             
##  (Other): 8                                             
##             fiador    creditosexistentes personastrabajan resultado  
##  co-solicitante:  7   Min.   :1.00       Min.   :1.00     Bueno:143  
##  garante       : 11   1st Qu.:1.00       1st Qu.:1.00     Malo : 57  
##  ninguno       :182   Median :1.00       Median :1.00                
##                       Mean   :1.42       Mean   :1.15                
##                       3rd Qu.:2.00       3rd Qu.:1.00                
##                       Max.   :4.00       Max.   :2.00                
## 
set.seed(134) # genera numeros aleatorios
# training 70% y testing 30%
dividir <- sample(2, nrow(datos), replace = TRUE, prob = c(0.7, 0.3))
entrenamiento <- datos[dividir == 1, ]
prueba <- datos[dividir == 2, ]
modelo_arbol<-rpart(resultado~., data = entrenamiento)
prediccion_arbol <- predict(modelo_arbol, prueba[,-21], type = "class")
modelo_arbol
## n= 139 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 139 41 Bueno (0.7050360 0.2949640)  
##    2) historialcredito=creditos existentes,creditos pagados 119 28 Bueno (0.7647059 0.2352941)  
##      4) montodecredito< 3891.5 85 13 Bueno (0.8470588 0.1529412)  
##        8) edad>=43 27  0 Bueno (1.0000000 0.0000000) *
##        9) edad< 43 58 13 Bueno (0.7758621 0.2241379)  
##         18) salario=0,2,3 43  5 Bueno (0.8837209 0.1162791) *
##         19) salario=1 15  7 Malo (0.4666667 0.5333333) *
##      5) montodecredito>=3891.5 34 15 Bueno (0.5588235 0.4411765)  
##       10) trabajo=Empleado,Obrero/Agricultor 27  9 Bueno (0.6666667 0.3333333) *
##       11) trabajo=Profesional/calificado 7  1 Malo (0.1428571 0.8571429) *
##    3) historialcredito=creditos pagados con retraso,sin creditos 20  7 Malo (0.3500000 0.6500000)  
##      6) otras.propiedades=Automovil,Terreno-Construccion 11  5 Bueno (0.5454545 0.4545455) *
##      7) otras.propiedades=Casa,Ninguno 9  1 Malo (0.1111111 0.8888889) *
MC<-table(prueba$resultado,prediccion_arbol)
MC
##        prediccion_arbol
##         Bueno Malo
##   Bueno    38    7
##   Malo     11    5
# calculamos el error
acierto<-sum(diag(MC))/sum(MC)
acierto
## [1] 0.704918
error <- 1-acierto
error
## [1] 0.295082
plot(modelo_arbol)
text(modelo_arbol)

prp(modelo_arbol, type = 2, extra = 6, split.font = 3,
    box.col = c("pink","palegreen3")[modelo_arbol$frame$yval])