Realizar un aplicación a una base de datos que contenga una variable target binaria de la cual se desea tener una regla que permita la clasificación de obeservaciones en una de las dos categorías de la variable target.
Contenido:
La clasificación es una forma de analizar los datos que extrae modelos que describen clases importantes de datos. Además la clasificación se ha dividido en dos procesos o etapas para su correcto funcionamiento, en primer lugar, se establece una etapa que consiste en Fase de Entrenamiento, es decir, construye un modelo de clasificación, y en segudo lugar, se establece una etapa de Clasificación, es decir, cuando el modelo se utiliza para la predicción de etiquetas de clase (en este caso decisión de préstamo) para estimar la exactitud de las reglas de predicción.
En el presente trabajo se abordarán distintos métodos de clasificación los cuales ayudarán a determinar el riesgo de otorgar un crédito a un solicitante.
El presente trabajo se va a centrar en el riesgo de crédito. Haciendo uso de datos de solicitudes de clientes , para adquirir prestamos bancarios. Se busca un modelo de clasificacion para medir el Riesgo crediticio. Como variables independientes, se incluyen las variables que recogen características del cliente, tales como edad, trabajos, sexo, etc. Posteriormente, se evalúa el poder predictivo y la estabilidad del modelo a través del estadístico de Kolmogorov y Smirnov y la información de valor inicial. Adicionalmente, se dispone de una muestra de clientes los cuales son identificados si han incumplido o no sus pagos penditentes, El comportamiento del cliente será inferido individualmente en función de sus características. El modelo final incluye esta muestra y es comparado con el modelo inicial.
En este conjunto de datos, cada entrada representa a una persona que toma un crédito de un banco. Cada persona se clasifica segun un riesgos crediticio bueno o malo según el conjunto de atributos. El conjunto de datos tiene los siguientes atributos:
X1: clave únicaAge: variable numérica que representa la edadSex: variable categórica que identifica el sexo (masculino, femenino)Job: variable numérica que representa el trabajo (0 - no calificado y no residente, 1 - no calificado y residente, 2 - calificado, 3 - altamente calificado)Housing: variable categórica que indica el tipo de vivienda (propia, arrendada o gratuita)Saving accounts: variable numérica que clasifica a la cuenta de ahorro (poco, moderado, bastante rico, rico)Checking account: variable numérica que identifica a la cuenta corriente (poco, moderado, bastante rico, rico)Credit amount: variable numérica que identifica al monto del crédito (en DM)Duration: variable numérica que identifica a la duración (en mes)Purpose: variable categórica que clasifica el propósito del crédito (automóvil, muebles/equipos, radio/TV, electrodomésticos, reparaciones, educación, negocios, vacaciones/otros)Risk: variable categórica que identifica el riesgo (Variable Target - Riesgo bueno o malo)El conjunto de datos original de tipo Multivariante contiene 1000 entradas con 20 atributos categóricos/ simbólicos preparados por el Prof. Hofmann. En este conjunto de datos, cada entrada representa a una persona que toma un crédito por un banco. Cada persona se clasifica como buen o mal riesgo de crédito según el conjunto de atributos.
Se ha considerado a las variables crudas como a todas las variables de la base, con exepción a la varible Age denominada como varibale derivada.
La variable Age se ha asignado las siguientes categorias “Student”, “Young”, “Adult”, “Senior”.
X1 Age Sex Job Housing Saving.accounts Checking.account Credit.amount
1 0 67 male 2 own <NA> little 1169
2 1 22 female 2 own little moderate 5951
3 2 49 male 1 own little <NA> 2096
4 3 45 male 2 free little little 7882
5 4 53 male 2 free little little 4870
6 5 35 male 1 free <NA> <NA> 9055
Duration Purpose Risk
1 6 radio/TV good
2 48 radio/TV bad
3 12 education good
4 42 furniture/equipment good
5 24 car bad
6 36 education good
Al trabajar la base inicial, se encontró un porcentaje de valores perdidos que superan el 20% de los datos en las variables cheking account y saving accounts, por lo que se realiza una imputación de datos para no eliminar información relevante
X1 Age Sex Job Housing saving_account Checking_account Credit.amount
1 0 67 male 2 own little little 1169
2 1 22 female 2 own little moderate 5951
3 2 49 male 1 own little moderate 2096
4 3 45 male 2 free little little 7882
5 4 53 male 2 free little little 4870
6 5 35 male 1 free moderate rich 9055
Duration Purpose Risk
1 6 radio/TV good
2 48 radio/TV bad
3 12 education good
4 42 furniture/equipment good
5 24 car bad
6 36 education good
Age
Min. :19.00
1st Qu.:27.00
Median :33.00
Mean :35.55
3rd Qu.:42.00
Max. :75.00
Age Sex Job Housing saving_account Checking_account Credit.amount
1 Senior male 2 own little little 1169
2 Student female 2 own little moderate 5951
3 Adult male 1 own little moderate 2096
4 Adult male 2 free little little 7882
5 Adult male 2 free little little 4870
6 Adult male 1 free moderate rich 9055
Duration Purpose Risk
1 6 radio/TV good
2 48 radio/TV bad
3 12 education good
4 42 furniture/equipment good
5 24 car bad
6 36 education good
Nuestra base de datos tendrá datos cualitativos y cuantitativos a continuación presentaremos la estadística descriptiva de esos datos.
Realizaremos una rápida exploración de la variable objetivo Riesgo
Como podemos notar es mayor la cantidad de buenos pagadores que la cantidad de malos pagadores, ahora buscaremos posibles relaciones entre las características de los clientes y el hecho de que sean buenos o malos pagadores.
Veamos visualmente la distribución del Riesgo en relación con la edad.
Notemos que a priori la edad no influye en la calificación crediticia pues se puede notar tanto la categoria de bueno como de malos pagadores es parecida.
Ahora, crearemos una variable categórica para manejar de mejor manera la edad de los clientes tomando como base para la transformación los percentiles de la variable numérica, esta transformación conduce a una inevitable perdida de información sin embargo en este trabajo nos es útil pues queremos realizar cruces de esta variable con la variable Riesgo, además de que también queremos utilizarla para un análisis de clasificación.
Veamos como quedan las 6 primeras observaciones con esta categorización de la variable Edad.
Age Sex Job Housing saving_account Checking_account Credit.amount
1 Senior male 2 own little little 1169
2 Student female 2 own little moderate 5951
3 Adult male 1 own little moderate 2096
4 Adult male 2 free little little 7882
5 Adult male 2 free little little 4870
6 Adult male 1 free moderate rich 9055
Duration Purpose Risk
1 6 radio/TV good
2 48 radio/TV bad
3 12 education good
4 42 furniture/equipment good
5 24 car bad
6 36 education good
Veamos cuantos clientes entran en cada una de las categorías de la edad.
Student Young Adult Senior
190 398 367 45
Como podemos es mayor la cantidad de clientes que se encuentran entre los 18 y 25 años.
A continuación veremos la distribución de la calificación crediticia por grupo de edad.
Notemos que en el grupo de edad donde podríamos tener problemas es en la categoría Student puesto que la distribución entre buenos y malos es equitativa, lo que no sucede con las otras categorías de la edad.
Continuaremos con la variable Housing para la cual haremos un gráfico de barras para notar su distribución. Además la compararemos con la variable Credit.amount.
Se puede notar que los clientes con mejor calificación crediticia son aquellos que poseen casa propia y la distribución entre bueno y malos es más equitativa entre los que tienen casa gratis o arriendan. Además, el segundo gráfico nos refleja que las personas con casa gratis son las que mayor cantidad de dinero obtuvieron con el crédito.
A continuación miramos la diferencia por sexo, para esto igualmente realizaremos un gráfico de barras para la variable Sex y también la compararemos con la variable Credit.amount.
Notemos que los que mejor calificación crediticia tienen son los hombres, pues la distribución entre buenos y malos es mucho más euitativa entre las mujeres. Notemos también que la cantidad de dinero que deben es parecida para hombres y mujeres.
Veamos la diferencia por el tipo de trabajo que tienen los clientes.
notemos que los que mejor calificación crediticia tienen son aquellos con trabajos especializados, también realizaremos el cruce con la variable Credit.amount
Veamos la distribución de la variable Credit.amount
Podemos notar que si la cantidad del crédito es menor se tiene mejores calificaciones crediticias.
Realizemos la exploración para la variable Saving.accounts
Podemos notar que aquellos que tienen pocos ahorros en sus cuentas son los que más crédito necesitan, sin embargo tienen buena calificación crediticia.
Realizaremos el cruce con la variable Purpose
Se puede notar que la razón más frecuente por la que los clientes adquieren un crédito es para un auto o radio/Tv, sin embargo los que mayor cantidad de dinero obtienen con el crédito son aquellos cuyo son vacaciones/otros y los que menor calificación crediticia tienen son aquellos que obtuvieron créditos muy altos para sus vacaiones/otros.
Para la duración del crédito tenemos el siguiente gráfico
En este gráfico se puede notar que aquellos créditos cuya duración es más larga suelen producir malas calificaciones crediticias.
En esta sección realizaremos algunos cruces interesantes entre variables para poder realizar una inferencia de las variables que podrían tener mayor peso en nuestro próximos modelos, para esto mostraremos tablas de proporción.
Age_cat tenemos lo siguiente.
female male
Student 10.5 8.5
Young 11.7 28.1
Adult 7.7 29.0
Senior 1.1 3.4
en la parte anterior pudimos notar que los Adultos y Jóvenes son los que mejor calificación crediticia tienen, dado que estás categorías son en su mayoría formadas por hombres, esto puede influenciar en que los hombres obtengan una mejor calificación crediticia, para las mujeres sucede lo opuesto, el grupo de Estudiantes (el grupo con mayor cantidad de calificación mala) esta formado en su mayoría por mujeres.
little moderate quite rich rich
Student 14.0 2.4 1.6 1.0
Young 29.0 6.3 2.4 2.1
Adult 27.2 3.5 3.6 2.4
Senior 3.5 0.4 0.4 0.2
business car domestic appliances education furniture/equipment
Student 1.0 4.6 0.4 0.8 5.2
Young 4.7 12.7 0.3 2.1 7.5
Adult 3.4 14.5 0.4 2.6 5.3
Senior 0.6 1.9 0.1 0.4 0.1
radio/TV repairs vacation/others
Student 6.4 0.6 0.0
Young 11.4 0.6 0.5
Adult 9.1 0.7 0.7
Senior 1.1 0.3 0.0
Notemos que el motivo más frecuente por el que los Estudiantes obtienen un crédito es para equipos o radio y televisión, sin embargo entre el resto de las categorías de la edad el motivo más popular es un auto.
Housing tenemos lo siguiente
female male
free 1.9 8.9
own 19.6 51.7
rent 9.5 8.4
podemos notar que más de la mitad de los hombres posee casa propia, siendo esta catgoría la que mejor calificación crediticia tiene.
little moderate quite rich rich
free 8.2 1.5 0.8 0.3
own 52.8 8.8 5.5 4.2
rent 12.7 2.3 1.7 1.2
business car domestic appliances education furniture/equipment radio/TV
free 0.5 5.5 0.0 1.5 1.1 1.5
own 7.6 21.9 1.0 3.4 12.2 22.7
rent 1.6 6.3 0.2 1.0 4.8 3.8
repairs vacation/others
free 0.3 0.4
own 1.7 0.8
rent 0.2 0.0
notemos que entre todas las categorías de Housing los motivos más populares par obtener un crédito es para un auto o radio y televisión.
Job
female male
0 1.2 1.0
1 6.4 13.6
2 19.7 43.3
3 3.7 11.1
little moderate quite rich rich
0 1.7 0.0 0.4 0.1
1 15.0 2.8 1.4 0.8
2 45.0 8.0 5.6 4.4
3 12.0 1.8 0.6 0.4
business car domestic appliances education furniture/equipment radio/TV
0 0.2 1.2 0.1 0.1 0.1 0.2
1 2.0 6.6 0.1 1.5 3.3 5.7
2 6.0 19.0 1.0 3.5 12.6 19.5
3 1.5 6.9 0.0 0.8 2.1 2.6
repairs vacation/others
0 0.2 0.1
1 0.7 0.1
2 1.3 0.1
3 0.0 0.9
Vemos que tanto para hombres como para mujeres el trabajo más común es el trabajo especializado, y los motivos más comunenes para adquirir un crédito siguen siendo para un auto o radio y televisión.
Para la modelación y verificación del modelo se realizará un muestreo estratificado, es decir del total de la muestra se separó todos los clientes con impagos (\(malos\)) y sin impagos (\(buenos\)) y se tomo el 80% de datos de cada uno de ellos, el otro 20 % de estos datos se los tomará para la validación del modelo.
buenos <- data1 %>% dplyr::filter(data$Risk=="good")
malos <- data1 %>% dplyr::filter(data$Risk=="bad")
#Estratificación de la muestra
sample1 <- sample.split(buenos, SplitRatio = 0.8) # Se toma el 80% de bueno
sample2 <- sample.split(malos, SplitRatio = 0.8) # Se toma el 80% de malos
# modelamiento sera la partición de la base para el modelamiento, junta las submuestras anteriores
data_train <- rbind(subset(buenos, sample1 == TRUE),subset(malos,sample2==TRUE))
# validacion sera la partición de la base usada para la validación del modelo 20%
data_val <- rbind(subset(buenos, sample1 == FALSE),subset(malos,sample2==FALSE))Se considera la información proporcionada por la base, para separar las variables categóricas de las continuas, esto con la finalidad de facilitar el Análisis de su Valor de información.
La implementación para esta sección es la siguiente: Credit.amount Duration
1 1169 6
2 2096 12
3 7882 42
5 2835 24
7 3059 12
8 1567 12
Age Sex Job Housing saving_account Checking_account
1 Senior male 2 own little little
2 Adult male 1 own little moderate
3 Adult male 2 free little little
5 Adult male 2 own quite rich little
7 Senior male 1 own rich rich
8 Student female 2 own little moderate
Purpose Risk
1 radio/TV good
2 education good
3 furniture/equipment good
5 furniture/equipment good
7 radio/TV good
8 radio/TV good
Con este estadístico se puede medir el poder de predicción de agrupar los atributos de una variable. Además, es un buen indicador a la hora de seleccionar variables para un modelo de regresión logística binario, como es el caso de un modelo de scoring.
Generalmente, se establecen los siguientes criterios en cuanto al valor de informción (VI) :
# Valor de informacion (IV)
TestVI <- function(x,y){
if(class(x)=="factor"){
tc <- table(y,x)
f1 <- tc[1,]
f2 <- tc[2,]
aux1 <- ifelse(f1/sum(f1)==0,0.001,ifelse(f1/sum(f1)==1,0.999, f1/sum(f1)))
aux2 <- ifelse(f2/sum(f2)==0,0.001,ifelse(f2/sum(f2)==1,0.999, f2/sum(f2)))
wof <- log(aux2/aux1)
wof <- ifelse(wof==-Inf,0,wof)
VI <- sum(((f2/sum(f2))-(f1/sum(f1)))*wof)
}else{
VI <- "Variable continua"
}
return(VI)
} Variable VI
1 Risk 13.81350956
2 Housing 0.10402000
3 saving_account 0.08987321
4 Age 0.08887174
5 Purpose 0.08094425
6 Checking_account 0.07105425
7 Job 0.01786089
8 Sex 0.01435975
Se puede observar que la variable Housing es medimente predictiva mientras que las variables Job y Sex no son predictivas para el modelo.
ks_stat calcula la estadística de kolmogorov-smirnov que se usa ampliamente en la calificación crediticia para determinar la eficacia de los modelos de clasificación binaria. Cuanto más alto, ks_stat más efectivo es el modelo para capturar a los respondedores.
Duration[1] 0.1667
Credit.amount[1] 1
En este caso se deben incluir las dos variables Continuas en el modelo.
Iniciamos considerando todas las variables categóricas y continuas en el modelo trabajando con data_train establecida anteriormente. Posteriormente, se ontiene un modelo 2 con las modificación del Valor de información con la finalidad de ver si se obtiene una mejora en el modelo.
Call:
glm(formula = data_train$Risk ~ ., family = binomial("logit"),
data = data_train)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.4297 -1.0637 0.6086 0.8489 1.7649
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -6.651e-02 7.770e-01 -0.086 0.9318
AgeYoung 4.193e-01 2.498e-01 1.679 0.0932 .
AgeAdult 8.184e-01 2.673e-01 3.062 0.0022 **
AgeSenior 8.283e-01 4.422e-01 1.873 0.0610 .
Sexmale 2.015e-01 1.894e-01 1.064 0.2875
Job1 2.119e-01 6.237e-01 0.340 0.7340
Job2 1.616e-01 6.032e-01 0.268 0.7888
Job3 9.384e-02 6.339e-01 0.148 0.8823
Housingown 3.426e-01 2.830e-01 1.211 0.2261
Housingrent -1.515e-01 3.347e-01 -0.453 0.6508
saving_accountmoderate 3.050e-01 2.580e-01 1.182 0.2372
saving_accountquite rich 7.982e-01 3.465e-01 2.303 0.0213 *
saving_accountrich 1.039e+00 4.337e-01 2.395 0.0166 *
Checking_accountmoderate 3.471e-01 1.751e-01 1.982 0.0475 *
Checking_accountrich 7.361e-01 3.146e-01 2.340 0.0193 *
[ reached getOption("max.print") -- omitted 9 rows ]
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 977.38 on 799 degrees of freedom
Residual deviance: 882.16 on 776 degrees of freedom
AIC: 930.16
Number of Fisher Scoring iterations: 4
[1] 61
[1] 521
[1] 39
[1] 179
res bad good
0 61 39
1 179 521
Tenemos una presición del modelo 1:
[1] 0.7275
Si consideramos los cambios sugeridos por los resutados del test K-S y VI, eliminamos la variable Sex y Job así vemos si nuestro modelo tiene una mejora, empezamos eliminando una por una las variables que no son significativas.
Después de eliminar las variblesSex y Job se tuvo que eliminar la variable Purpose puesto que daba una mejora al modelo ya que todas las variables restantes se volvian significativas. Por lo tanto, se obtiene el siguiente modelo con sus respesctivos p-valores.
Call:
glm(formula = data_train$Risk ~ data_train$Age + data_train$Housing +
data_train$saving_account + data_train$Duration + data_train$Checking_account +
data_train$Credit.amount, family = binomial("logit"), data = data_train)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.2809 -1.0848 0.6502 0.8458 1.6426
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.158e-01 3.895e-01 1.324 0.1854
data_train$AgeYoung 4.126e-01 2.410e-01 1.712 0.0869 .
data_train$AgeAdult 7.765e-01 2.547e-01 3.049 0.0023 **
data_train$AgeSenior 6.726e-01 4.244e-01 1.585 0.1130
data_train$Housingown 4.576e-01 2.734e-01 1.674 0.0941 .
data_train$Housingrent -1.062e-01 3.242e-01 -0.328 0.7433
data_train$saving_accountmoderate 2.332e-01 2.538e-01 0.919 0.3582
data_train$saving_accountquite rich 8.408e-01 3.412e-01 2.465 0.0137 *
data_train$saving_accountrich 9.553e-01 4.277e-01 2.234 0.0255 *
data_train$Duration -3.536e-02 8.568e-03 -4.127 3.68e-05 ***
data_train$Checking_accountmoderate 3.215e-01 1.719e-01 1.870 0.0615 .
data_train$Checking_accountrich 7.061e-01 3.090e-01 2.285 0.0223 *
data_train$Credit.amount -8.400e-06 3.667e-05 -0.229 0.8188
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 977.38 on 799 degrees of freedom
Residual deviance: 895.90 on 787 degrees of freedom
AIC: 921.9
Number of Fisher Scoring iterations: 4
[1] 56
[1] 529
[1] 31
[1] 184
res3 bad good
0 56 31
1 184 529
La presición del Modelo 2 mejorado:
[1] 0.73125
Considerando la eliminación de las variables no significativas sugerida, se tiene una mejora a un 73, 125 % de presición.
Es una representación gráfica de la sensibilidad frente a la especificidad para un sistema clasificador binario según se varía el umbral de discriminación. Otra interpretación de este gráfico es la representación de la razón o ratio de verdaderos positivos (VPR = Razón de Verdaderos Positivos) frente a la razón o ratio de falsos positivos (FPR = Razón de Falsos Positivos) también según se varía el umbral de discriminación (valor a partir del cual decidimos que un caso es un positivo).
Para nuestro modelo el gráfico de la curva Roc es el siguiente
Realizamos el mismo análisis con los datos apartados para la validación del modelo y tenemos los siguientes resultados:
[1] 18
[1] 124
[1] 16
[1] 42
res2 bad good
0 18 16
1 42 124
res2 bad good
0 0.09 0.08
1 0.21 0.62
[1] 0.71
Podemos ver que la precisón del modelo es similar, por lo que se valida el modelo.
Es un árbol de desición en donde los nodos representan datos en lugar de decisiones. Cada ramificación contiene un conjunto de atributos o reglas de clasificación asociadas a una etiqueta de clase específica, que se halla al final de la ramificación. Cada dato adicional ayuda a que el modelo prediga de forma más precisa a qué conjunto finito de valores pertenece el asunto en cuestión. Esa información se puede usar posteriormente como una entrada en un modelo más grande de toma de decisiones.
Los clientes cuyo crédito dura más de 35 meses y además su casa es rentada representan el 2% de nuestros clientes, de estos el 79% de ellos tienen mala calificación crediticia y el 21% tienen buena calificación crediticia, de lo que se puede concluir que los clientes que tengan estas dos características representan un mayor riesgo crediticio.
Los clientes cuyo crédito es menor a 35 meses, la cantidad de su crédito es menor a 11000 y cuya edad es mayor a los 18 años representan el 70% de nuestros clientes y de esto el 23% tienen mala calificación crediticia y el 77% tienen buena calificación crediticia, es decir el riesgo es menor con estos clientes.
Los clientes cuyo tiempo de duración del crédito es mayor a 35 meses, y además su casa es rentada representan el 2% de nuestros datos, de estos el 79% tendrán mala calificación crediticia, es decir que el riesgo de crédito a estos clientes es mayor.
Los clientes cuyo crédito dura menor de 35 periodos, la cantidad del crédito es menor a 11000 y su edad es mayor a 18 años representan el 70% de nuestros clientes, de estos el 77% de ellos tienen buena calificación crediticia lo que representa un menor riesgo de crédito.
Si se cumple que los clientes cuya duración de crédito se encuentra menor a 35 meses, su crédito es menor a 11000 y su edad esta entre 18 y 25 años representan el 13% de nuestros clientes, de los cuales el 62% de ellos tienen buena calificación crediticia. Por lo tanto, se rechaza la hipótesis 1.
Si se cumple que los clientes cuyo crédito dura más de 35 meses, su casa no es rentada, la cantidad de su crédito es mayor a 2249 y cuya cuenta de ahorros se encuentra en la categoría de poco o rico representan el 10% de nuestros clientes, de estos el 53% tiene buena calificación crediticia y el 47% mala calificación, por lo cual a este tipo de clientes no se los puede clasificar de buenos o malos con certeza.
Se consideró que esta característica no influye en la decisión para considerar a un cliente buen o mal pagador.
Gracias al arból de decisión se tiene que el 70% de la población es mala pagadora cuando la duración del préstamo es mayor o igual a 35 meses.
Esta variable, como pudimos observar en todo el proceso fue eliminada por lo que no influye en ser un buen o mal pagador.
Si se cumple que la duración del crédito es mayor a 35 meses, además si los clientes tienen casa rentada, estos clientes serán considerados como malos pagadores. Por lo tanto se acpeta la hipótesis.
En general, se puede considerar a un cliente como un buen pagador cuando el crédito asignado tiene un plazo de pago menor a 35 meses y un monto menor a 11000
Conceder montos de créditos altos a clientes que incurren a gastos de rentas, es un riesgo para la entidad.
Se puede ofertar créditos de corta duración a los clientes para no poner en riesgo a la entidad.
Se recomienda no conceder montos de créditos elevados a estudiantes puesto que pueden incumplir con los pagos.