Mineria de datos.

Lectura de Datos.

La Base de Datos del presente trabajo fue provista por el tutor del curso, en un formato de Hoja de Calculo de Excel. A continuacion se muestra la lectura de la base de Datos.

library(readxl)
library(rmarkdown)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
BaseProd <- read_excel("C:/Users/garbe/Desktop/Octavo Semestre/Modelos de Riesgo/Proyecto 1/BaseProd.xlsx")
paged_table(head(BaseProd))

Limpieza de los Datos.

Se realizara primero una limpieza de la base de datos, para lo cual se eliminara la columna de #Codigo_ID, y Fecha pues no aportan informacion para el objetivo del presente trabajo.

# Variables y sus caracteristicas de Tipo. 
str(BaseProd)
## tibble [22,965 x 25] (S3: tbl_df/tbl/data.frame)
##  $ CODIGO_ID                           : num [1:22965] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Fecha                               : POSIXct[1:22965], format: "2018-01-29" "2018-01-25" ...
##  $ MarcaMora_Tarjeta                   : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
##  $ ORIGEN_APROBACION                   : chr [1:22965] "Proactivo" "Demanda" "Demanda" "Proactivo" ...
##  $ FORMA_PAGO                          : chr [1:22965] "No" "No" "No" "No" ...
##  $ SALDO_TOTAL_TARJETA                 : num [1:22965] 1108.5 601.6 25.3 12996.6 173.7 ...
##  $ CUPO_PROMEDIO_TARJETA               : num [1:22965] 1400 3000 800 15600 4800 ...
##  $ SALDO_UTILIZ_PROM_CLIENTE           : num [1:22965] 1279.7 17 36.2 17592 574.3 ...
##  $ CANTIDAD_TOTAL_AVANCES              : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
##  $ ANTIGUEDAD_TARJETA_ANIOS            : num [1:22965] 10 7 7 7 10 10 7 7 7 7 ...
##  $ PROMEDIO_MENSUAL_CONSUMOS_LOCALES   : num [1:22965] 242.3 0 0 404.6 42.3 ...
##  $ MAXIMO_NUM_DIAS_VENCIDO             : num [1:22965] 21 20 31 2 2 16 7 0 19 23 ...
##  $ NUMERO_OPERACIONES_TITULAR          : num [1:22965] 5 2 3 7 2 2 2 2 6 7 ...
##  $ PROMEDIO_DIAS_SOBREGIRO_CC          : num [1:22965] 0 0 0 0 0 0 0 0 0 19 ...
##  $ PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO: num [1:22965] 0 1627 4066 8400 0 ...
##  $ MARCA_CUENTA_CORRIENTE              : chr [1:22965] "No" "Si" "Si" "Si" ...
##  $ MARCA_CUENTA_AHORROS                : chr [1:22965] "No" "Si" "Si" "Si" ...
##  $ RIESGO_CLIENTE_TOTAL_GFP            : num [1:22965] 1125.3 601.6 25.3 16228.7 173.7 ...
##  $ VALOR_DEPOSITO_A_PLAZO              : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
##  $ SEGMENTO_RIESGO                     : chr [1:22965] "E" "A" "A" "B" ...
##  $ SUCURSAL                            : chr [1:22965] "QUITO" "QUITO" "QUITO" "AMBATO" ...
##  $ EDAD                                : num [1:22965] 27 37 46 40 29 39 44 34 35 42 ...
##  $ GENERO                              : chr [1:22965] "FEM" "MAS" "MAS" "MAS" ...
##  $ INSTRUCCION                         : chr [1:22965] "PRI" "UNI" "SEC" "UNI" ...
##  $ NUM_TC_SIST_FIM                     : num [1:22965] 1 0 4 2 2 3 1 0 4 5 ...
BaseProd <- select(BaseProd,-c('CODIGO_ID','Fecha'))
head(BaseProd)
## # A tibble: 6 x 23
##   MarcaMora_Tarje~ ORIGEN_APROBACI~ FORMA_PAGO SALDO_TOTAL_TAR~ CUPO_PROMEDIO_T~
##              <dbl> <chr>            <chr>                 <dbl>            <dbl>
## 1                0 Proactivo        No                   1108.             1400 
## 2                0 Demanda          No                    602.             3000 
## 3                0 Demanda          No                     25.3             800 
## 4                0 Proactivo        No                  12997.            15600 
## 5                0 Proactivo        No                    174.             4800 
## 6                0 Proactivo        No                    320.              833.
## # ... with 18 more variables: SALDO_UTILIZ_PROM_CLIENTE <dbl>,
## #   CANTIDAD_TOTAL_AVANCES <dbl>, ANTIGUEDAD_TARJETA_ANIOS <dbl>,
## #   PROMEDIO_MENSUAL_CONSUMOS_LOCALES <dbl>, MAXIMO_NUM_DIAS_VENCIDO <dbl>,
## #   NUMERO_OPERACIONES_TITULAR <dbl>, PROMEDIO_DIAS_SOBREGIRO_CC <dbl>,
## #   PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO <dbl>, MARCA_CUENTA_CORRIENTE <chr>,
## #   MARCA_CUENTA_AHORROS <chr>, RIESGO_CLIENTE_TOTAL_GFP <dbl>,
## #   VALOR_DEPOSITO_A_PLAZO <dbl>, SEGMENTO_RIESGO <chr>, SUCURSAL <chr>,
## #   EDAD <dbl>, GENERO <chr>, INSTRUCCION <chr>, NUM_TC_SIST_FIM <dbl>

Valores Faltantes.

Al tratar con una base de datos cuyas dimensiones son considerables no es sencillo identificar si existen datos faltantes, con el proposito de identificar dicho datos, haremos uso de la libreria naniar que nos sera de ayuda para identificar datos faltantes.

library(naniar)

Funcion naniar::n_miss, se retorna un valor numerico correspondiente al numero de datos faltantes.

n_miss(BaseProd)
## [1] 0

En este caso, no se encuentran datos faltantes.

Datos faltantes por variables.
miss_var_summary(BaseProd)
## # A tibble: 23 x 3
##    variable                          n_miss pct_miss
##    <chr>                              <int>    <dbl>
##  1 MarcaMora_Tarjeta                      0        0
##  2 ORIGEN_APROBACION                      0        0
##  3 FORMA_PAGO                             0        0
##  4 SALDO_TOTAL_TARJETA                    0        0
##  5 CUPO_PROMEDIO_TARJETA                  0        0
##  6 SALDO_UTILIZ_PROM_CLIENTE              0        0
##  7 CANTIDAD_TOTAL_AVANCES                 0        0
##  8 ANTIGUEDAD_TARJETA_ANIOS               0        0
##  9 PROMEDIO_MENSUAL_CONSUMOS_LOCALES      0        0
## 10 MAXIMO_NUM_DIAS_VENCIDO                0        0
## # ... with 13 more rows
Visualizacion de los Datos Faltantes.
vis_miss(BaseProd)

Imputacion de Datos.

Las técnicas de imputación de datos se aplica mediante réglas.

Reglas: + Si existe más del 20% de datos faltantes, las observaciones correspondientes a los datos faltantes son eliminados. + Si el porcentaje de datos faltantes es menor al 20% se aplica una técnica de imputación.

Técnicas de impmutación: + Media aritmética + Constante Global + Regresión + Regresión estocástica.

Dado que no se tiene datos faltantes, no es necesario realizar una imputación de datos.

Discretiacion de datos.

La discretización esta relacionada con la transformación de datos nominales a numéricos o viceversa. Para el manejo de datos clasificaremos a las variables en categóricas y numéricas, a las variables categóricas en R se las trata como tipo factor.

  • La base se encuentra discretizada?
  • Deberiamos cambiar la discretizacion de la base?

Not! Creacion de factores a partir de las variables categoricas de la base de datos, Acontinuacion se presenta la discretiacion de los datos.

Nota! Ctrl V de lo que corte

Variables Cualitativas y Cuantitativas.

Se realizara analisis por variables, para ello se dividiran por tipo de variable.

library(PCAmixdata)
## Warning: package 'PCAmixdata' was built under R version 3.6.3
corte <- splitmix(BaseProd)
dquanti <- as.data.frame(corte$X.quanti)
dcuali <- as.data.frame(corte$X.quali)
Variables Cualitativas.

A continuacion se muestra el resumen por variable

names(dcuali)
## [1] "ORIGEN_APROBACION"      "FORMA_PAGO"             "MARCA_CUENTA_CORRIENTE"
## [4] "MARCA_CUENTA_AHORROS"   "SEGMENTO_RIESGO"        "SUCURSAL"              
## [7] "GENERO"                 "INSTRUCCION"
Variables Cuantitativas.
names(dquanti)
##  [1] "MarcaMora_Tarjeta"                   
##  [2] "SALDO_TOTAL_TARJETA"                 
##  [3] "CUPO_PROMEDIO_TARJETA"               
##  [4] "SALDO_UTILIZ_PROM_CLIENTE"           
##  [5] "CANTIDAD_TOTAL_AVANCES"              
##  [6] "ANTIGUEDAD_TARJETA_ANIOS"            
##  [7] "PROMEDIO_MENSUAL_CONSUMOS_LOCALES"   
##  [8] "MAXIMO_NUM_DIAS_VENCIDO"             
##  [9] "NUMERO_OPERACIONES_TITULAR"          
## [10] "PROMEDIO_DIAS_SOBREGIRO_CC"          
## [11] "PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO"
## [12] "RIESGO_CLIENTE_TOTAL_GFP"            
## [13] "VALOR_DEPOSITO_A_PLAZO"              
## [14] "EDAD"                                
## [15] "NUM_TC_SIST_FIM"

Nota! Si es necesario discretizar, MarcaMora_Targeta no es variable numerica es cualitativa.

Tratamiento de datos atipicos

Nota! Primero hay que discretizar los datos.

Eliminacion de datos atipicos Potenciales

Nota! Discretizar!!

Analisis Descriptivo

Univariante

Multivariante

Nota! examinar la relacion entre las variables que se tienen (si es que se requiere)

Seleccion de Variables.

Nota! Por la cantidad de Variables, es recomendable seleccionar las variables que aportan la mayor cantidad de Informacion

Regla de informacion IV
Arboles de Clasificacion
Analisis de componentes principales/independientes.

Particion de Datos.

dividir aleatoriamente la muestra para tener un porcentaje para experimento y otro para prueba.

Nota!. Las muestras deben ser estadisticamente similares (Balanceo de Datos)