Está en la página 1de 29

Algoritmos para Modelos Predictivos - trabajo Final

Tito Reátegui Granados - treategui@mail.com

Noviembre, 2021

Programa Big Data and Analytics

1
Introducción
Este proyecto tiene como objetivo principal determinar el mejor modelo para poder identificar a los clientes
más propensos a la toma del producto, de tal manera, que puedan emprenderse campañas particulares para
impulsar el consumo de la tarjeta de crédito.

Marco de análisis
Objetivos del Negocio
Identificar a los clientes más propensos a adquirir una Tarjeta de Crédito. Conocer el perfil de los clientes
con mayor propensión a adquirir el producto.

Objetivos de los Modelos Analíticos


• Construir una herramienta analítica que permita predecir e identificar a aquellos clientes que adquirirán
una Tarjeta de Crédito clásica.
• Identificar los principales drivers que influyenen la toma del producto.

Metodología de trabajo
En este proyecto vamos a trabajar de la siguiente manera:

2
Descripción del conjunto de datos (variables)
El conjunto de datos tiene 2000 observaciones con 10 variables.
De las 10 variables tenemos 9 variables independientes y una variable dependiente o variable objetivo
(dicotómica) Acepta_TC

Variables:

• Identificamos que los clientes más jovenes prefieren una TC, a comparación de los clientes que no toman
TC.
• Con el análisis de correlación hemos decartado la variable Ptge_Endeudamiento ya que se correlaciona
con las variables Edad y Personas_Dependientes_Hogar
• Respecto a los outlaiers detectatos en la variable Edad, no entran al análisis clintes con edades menores
de 18 y mayores de 77 años.

Evaluación del desempeño predictivo


Vamos a comparar los cuatro modelos donde el indicador AUC nos permitirá decidir con que modelo nos
quedaremos.
De acuerdo a los resultados obtenidos, para la evaluación del desempeño predictivo, vamos a comaprarlos
con el indicador AUC, donde se observa que el modelo Árboles de Decisión presenta un AUC de 67.7%.
Por los resultados obtenidos este modelo es recomendable para el pronóstico de clientes que aceptarían una
tarjeta de crédito en la siguiente campaña.

3
Precisión AUC
Modelo Regresión Logística Binaria 63.4% 60.7%
Modelo Árboles de Decisión 71.2% 67.7%
Modelo K Vecinos más Cercanos 70.0% 38.5%
Modelo Naive Bayes 64.0% 65.3%

Conclusiones
Luego del análisis también se llegó a la conclusión de que el modelo de Naive Bayes, también se puede utilizar
en este caso (AUC: 65.3%), a pesar de que tenemos pocas variables, sin embargo, se logra una clasificación
importante de los clientes que no tomarían un TC, por consiguiente, podemos ofrecerles un crédito personal,
previo evaluación de su perfil para asegurarnos que son clientes que solo toman préstamos personales. Por
otro lado, cuando trabajamos con el modelo de regresión logística binario (AUC: 60.7%), los coeficientes de
las variables edad y antigüedad del cliente, presentan un nivel estadísticamente significativo, y es sabido en la
banca que los modelos de regresión logística por su simplicidad, versatilidad y precisión es uno de los modelos
que permite construir scores de clientes, los cuales podemos incluirlos en las bases para enviar a la fuerza de
ventas para campañas direccionadas de créditos personales.
Finalmente, nos quedamos con el modelo de Árboles de Decisión. se recomienda, previo al despliegue se
de volver a perfilar a los clientes, considerar abrir por los principales drivers (Lima y provincia, canal de
venta, oferta y mejor horario de contacto), esperando que la suma de todas las consideraciones de negocio y
la aplicación de la analítica nos permitan mejorar nuestros resultados.

Principales drivers que permiten identificar a un cliente que hace uso son:
• Clientes menores de 49 años con uso frecuente de TC
• Oferta de la línea de crédito el doble del ingreso del cliente
• La oferta debe ser mejor al del Sistema financiero
• La máxima de línea de crédito del SSFF menor a 500 dólares.
• Clientes que no cuentan con tarjeta de crédito en el SSFF

4
Oportunidades:
• Mejorar la efectividad de Campañas, homologar acciones correctivas de agentes externos (Calls)
• Incrementar ratios de uso (1er consumo y Compras)
• Diferenciación de oferta comercial por perfil
• Venta vía flujo regular
• Asignación de líneas competitivas

5
Bibliografia
• Aprendizaje Automático - Carlos Véliz Capuñay, PUCP 2018
• R and Data Mining - Yanchang Zhao, ELSEIVER 2013
• http://uc-r.github.io/2018/06/14/gbm-regression/

6
Anexos:
Análisis exploratorio y limpieza de datos
A continuación vamos a tratar de comprender las dimensiones del conjunto de datos y analizaremos las
variables visualmente.Con el objetivo de comprender la naturaleza de los datos en términos de distribución
de las variables individuales y la relación entre ellas.

## Edad Antig_meses Numero_Productos Ptge_Endeudamiento


## Min. :10.0 Min. : 0.00 Min. : 0.000 Min. :10.0
## 1st Qu.:31.0 1st Qu.:12.00 1st Qu.: 0.000 1st Qu.:31.0
## Median :39.0 Median :24.00 Median : 0.000 Median :39.0
## Mean :39.5 Mean :24.68 Mean : 2.343 Mean :39.5
## 3rd Qu.:46.0 3rd Qu.:36.00 3rd Qu.: 2.000 3rd Qu.:46.0
## Max. :83.0 Max. :48.00 Max. :56.000 Max. :83.0
## Numero_Prestamos Personas_Dependientes_Hogar Ingresos
## Min. :0.000 Min. :1.000 Min. :17418
## 1st Qu.:0.000 1st Qu.:2.000 1st Qu.:42563
## Median :1.000 Median :4.000 Median :49743
## Mean :1.115 Mean :3.705 Mean :50070
## 3rd Qu.:2.000 3rd Qu.:5.000 3rd Qu.:57415
## Max. :7.000 Max. :7.000 Max. :80874
## Genero Jefe_hogar Acepta_TC
## Length:2000 Length:2000 Length:2000
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##

7
## [1] 2000 10

Identificamos que los clientes más jovenes prefieren una TC, a comparación de los clientes que no toman TC:

8
Análisis de correlación de variables

Personas_Dependientes_Hogar
Ptge_Endeudamiento
Numero_Prestamos
Numero_Productos
Antig_meses

Ingresos
Edad
1
Edad 0.8
Antig_meses 0.6
0.4
Numero_Productos
0.2
Ptge_Endeudamiento 0
−0.2
Numero_Prestamos
−0.4
Personas_Dependientes_Hogar −0.6
Ingresos −0.8
−1

Identificación de Ouliers

Acepta_TC vs Ptge_Endeudamiento
80
Ptge_Endeudamiento

60
40
20

No Si

Acepta_TC

9
Acepta_TC vs Ingresos

80000
60000
Ingresos

40000
20000

No Si

Acepta_TC

Modelo regresión logística binaria


Tenemos:

##
## No Si
## 0.654 0.346

10
##
## 0 1
## 0.6539663 0.3460337

##
## 0 1
## 0.6541353 0.3458647

##
## Call:
## glm(formula = Acepta_TC ~ Edad + Antig_meses + Numero_Productos +
## Ptge_Endeudamiento + Numero_Prestamos + Personas_Dependientes_Hogar +
## Ingresos, family = binomial(link = "logit"), data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.3716 -0.9364 -0.7471 1.2800 1.9834
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.422e+00 3.300e-01 -4.309 1.64e-05 ***
## Edad 1.236e-02 4.540e-03 2.723 0.00647 **
## Antig_meses 2.963e-02 3.770e-03 7.859 3.89e-15 ***
## Numero_Productos -8.604e-03 8.716e-03 -0.987 0.32353
## Ptge_Endeudamiento NA NA NA NA
## Numero_Prestamos -1.354e-03 3.855e-02 -0.035 0.97197
## Personas_Dependientes_Hogar -3.306e-03 3.086e-02 -0.107 0.91468

11
## Ingresos -8.710e-06 4.703e-06 -1.852 0.06401 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2065.2 on 1600 degrees of freedom
## Residual deviance: 1987.3 on 1594 degrees of freedom
## AIC: 2001.3
##
## Number of Fisher Scoring iterations: 4

##
## Call:
## glm(formula = Acepta_TC ~ Edad + Antig_meses + Numero_Productos,
## family = binomial(link = "logit"), data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.3381 -0.9325 -0.7542 1.2845 1.9351
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.878061 0.214164 -8.769 < 2e-16 ***
## Edad 0.012329 0.004444 2.774 0.00554 **
## Antig_meses 0.029950 0.003763 7.959 1.73e-15 ***
## Numero_Productos -0.007733 0.008685 -0.890 0.37327
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2065.2 on 1600 degrees of freedom
## Residual deviance: 1990.8 on 1597 degrees of freedom
## AIC: 1998.8
##
## Number of Fisher Scoring iterations: 4

12
Area Bajo la Curva = 60.73 %

1.0
0.8
True positive rate

0.6
0.4
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0

False positive rate

## Confusion Matrix and Statistics


##
## Reference
## Prediction 0 1
## 0 239 124
## 1 22 14
##
## Accuracy : 0.6341
## 95% CI : (0.5847, 0.6815)
## No Information Rate : 0.6541
## P-Value [Acc > NIR] : 0.8148
##
## Kappa : 0.0208
##
## Mcnemar's Test P-Value : <2e-16
##
## Sensitivity : 0.9157
## Specificity : 0.1014

13
## Pos Pred Value : 0.6584
## Neg Pred Value : 0.3889
## Prevalence : 0.6541
## Detection Rate : 0.5990
## Detection Prevalence : 0.9098
## Balanced Accuracy : 0.5086
##
## 'Positive' Class : 0
##

Lift Chart
1.5
1.0
Lift

0.5
0.0

0.0 0.2 0.4 0.6 0.8 1.0

% Populations

14
• De los resultados nos quedamos con el modelo mylogit2 (AUC: 60.73%)

Modelo árboles de decisión


##
## Classification tree:
## rpart(formula = Acepta_TC ~ Edad + Antig_meses + Numero_Productos +
## Numero_Prestamos + Personas_Dependientes_Hogar + Ingresos,
## data = train, method = "class", minbucket = 100)
##
## Variables actually used in tree construction:
## [1] Antig_meses Edad Ingresos
##
## Root node error: 557/1614 = 0.34511
##
## n= 1614
##
## CP nsplit rel error xerror xstd
## 1 0.061041 0 1.00000 1.00000 0.034289
## 2 0.016158 2 0.87792 0.87792 0.033145
## 3 0.010000 4 0.84560 0.87792 0.033145

## Loading required package: libcoin

## Loading required package: mvtnorm

15
1
Antig_meses

< 30 ≥ 30 3
Edad

< 32.5 ≥ 32.5 5


Edad

6 ≥ 39.5 < 39.5

Ingresos

< 47359.5
≥ 47359.5

n = 958 n = 172 n = 134 n = 177 n = 173


1 1 1 1 1
No

No

No

No

No
0.8 0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2 0.2
Si

Si

Si

Si

Si
0 0 0 0 0

16
1
No
.65 .35
100%
yes Antig_meses < 30 no
3
No
.51 .49
41%
Edad < 33
7
Si
.43 .57
30%
Edad >= 40
14
Si
.49 .51
19%
Ingresos < 47e+3

2 6 28 29 15
No No No Si Si
.76 .24 .72 .28 .57 .43 .42 .58 .33 .67
59% 11% 8% 11% 11%

Rattle 2021−Nov.−21 12:49:32 113167

17
No
0.35
100%
yes Antig_meses < 30 no

No
0.49
41%
Edad < 33
Si
0.57
30%
Edad >= 40
Si
0.51
19%
Ingresos < 47e+3

No No No Si Si
0.24 0.28 0.43 0.58 0.67
59% 11% 8% 11% 11%

## Confusion Matrix and Statistics


##
##
## pred2_Est No Si
## No 224 84
## Si 27 51
##
## Accuracy : 0.7124
## 95% CI : (0.6645, 0.7571)
## No Information Rate : 0.6503
## P-Value [Acc > NIR] : 0.005531
##
## Kappa : 0.2994
##
## Mcnemar's Test P-Value : 1.065e-07
##
## Sensitivity : 0.3778
## Specificity : 0.8924

18
## Pos Pred Value : 0.6538
## Neg Pred Value : 0.7273
## Prevalence : 0.3497
## Detection Rate : 0.1321
## Detection Prevalence : 0.2021
## Balanced Accuracy : 0.6351
##
## 'Positive' Class : Si
##

## [1] 67.65826

## [1] 35.31651

19
Area Bajo la Curva = 67.66 %

1.0
0.8
True positive rate

0.6
0.4
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0

False positive rate

Modelo K-Vecinos más cercanos


## Hemos normalizado 7 variable(s)

##
## Attaching package: 'scales'

20
## The following object is masked from 'package:purrr':
##
## discard

## The following object is masked from 'package:readr':


##
## col_factor

## [1] 80 8

## Matriz de confusión para k = 1


## ==============================
## Predichos
## Actual 0 1

21
## 0 40 17
## 1 14 9
## ------------------------------
## Matriz de confusión para k = 2
## ==============================
## Predichos
## Actual 0 1
## 0 36 21
## 1 12 11
## ------------------------------
## Matriz de confusión para k = 3
## ==============================
## Predichos
## Actual 0 1
## 0 39 18
## 1 14 9
## ------------------------------
## Matriz de confusión para k = 4
## ==============================
## Predichos
## Actual 0 1
## 0 45 12
## 1 14 9
## ------------------------------
## Matriz de confusión para k = 5
## ==============================
## Predichos
## Actual 0 1
## 0 44 13
## 1 13 10
## ------------------------------
## Matriz de confusión para k = 6
## ==============================
## Predichos
## Actual 0 1
## 0 45 12
## 1 14 9
## ------------------------------
## Matriz de confusión para k = 7
## ==============================
## Predichos
## Actual 0 1
## 0 44 13
## 1 14 9
## ------------------------------
## Matriz de confusión para k = 8
## ==============================
## Predichos
## Actual 0 1
## 0 45 12
## 1 13 10
## ------------------------------
## Matriz de confusión para k = 9
## ==============================

22
## Predichos
## Actual 0 1
## 0 44 13
## 1 13 10
## ------------------------------
## Matriz de confusión para k = 10
## ==============================
## Predichos
## Actual 0 1
## 0 45 12
## 1 13 10
## ------------------------------

## Predichos
## Actual 0 1
## 0 46 11
## 1 13 10

## Confusion Matrix and Statistics


##
## Reference
## Prediction 0 1
## 0 46 13
## 1 11 10
##
## Accuracy : 0.7
## 95% CI : (0.5872, 0.7974)

23
## No Information Rate : 0.7125
## P-Value [Acc > NIR] : 0.6500
##
## Kappa : 0.2482
##
## Mcnemar's Test P-Value : 0.8383
##
## Sensitivity : 0.8070
## Specificity : 0.4348
## Pos Pred Value : 0.7797
## Neg Pred Value : 0.4762
## Prevalence : 0.7125
## Detection Rate : 0.5750
## Detection Prevalence : 0.7375
## Balanced Accuracy : 0.6209
##
## 'Positive' Class : 0
##

## [1] 0.66

## [1] 0.34

24
## Setting levels: control = 0, case = 1

## Setting direction: controls < cases

##
## Call:
## roc.default(response = test_n$Acepta_TC, predictor = attributes(mod)$prob)
##
## Data: attributes(mod)$prob in 268 controls (test_n$Acepta_TC 0) < 132 cases (test_n$Acepta_TC 1).
## Area under the curve: 0.3845

## Setting levels: control = 0, case = 1


## Setting direction: controls < cases

25
1.0
−Inf (0.000, 1.000)

0.8
0.6
Sensitivity

AUC: 0.385
0.4
0.2
0.0

Inf (1.000, 0.000)


1.0 0.5 0.0
Specificity

26
Modelo Naive Bayes
##
## pred4_Est No Si
## No 227 115
## Si 24 20

## Confusion Matrix and Statistics


##
##
## pred4_Est No Si
## No 227 115
## Si 24 20
##
## Accuracy : 0.6399
## 95% CI : (0.5898, 0.6878)
## No Information Rate : 0.6503
## P-Value [Acc > NIR] : 0.6859
##
## Kappa : 0.0622
##
## Mcnemar's Test P-Value : 2.281e-14
##
## Sensitivity : 0.14815
## Specificity : 0.90438
## Pos Pred Value : 0.45455
## Neg Pred Value : 0.66374
## Prevalence : 0.34974
## Detection Rate : 0.05181
## Detection Prevalence : 0.11399
## Balanced Accuracy : 0.52627
##
## 'Positive' Class : Si
##

27
## [1] 65.33569

## [1] 30.67139

28
Area Bajo la Curva = 65.34 %
1.0
0.8
True positive rate

0.6
0.4
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0

False positive rate

29

También podría gustarte