Desercion de Clientes usando Red Neuronal

Prediciendo Desercion de Clientes en un Banco

El aprendizaje profundo (deep learning) nos permite predecir la tasa de desercion de clientes en un establecimiento, para este ejemplo usaremos un set de datos de un banco.

Caso de Estudios:

Tenemos el set de datos de clientes de un banco, este ha notado que una gran cantidad de clientes se estan llendo y quieren saber porque.

Nuestro trabajo es crear un modelo que prediga los clientes que estan en mayor riesgo de dejar el banco. (El mismo modelo puede ser aplicado para evaluar si una persona deberia tener un prestamo aprobado).

El set de datos que usaremos junto con el codigo de la red neuronal lo puedes encontrar en la seccion de “Datasets” dentro de “Perfil”.

Consiste de 14 columnas, para nuestro caso tenemos una variable dependiente (y) que queremos predecir y es “exited” en el set de datos esta columna indica si el cliente abandonó el banco.

El resto de columnas son variables independientes (x), solo usaremos las que tengan un impacto en la decision del cliente si abandona o no el banco.

“CreditScore” es una columna que si tiene impacto asi que lo incluiremos, igualmente que “Geography”, “Gender”, “Age”, “Balance”, “Tenure”, “NumOfProd”, “HasCard”, “IsActive” y “EstimatedSalary” son variables independientes que pueden afectar la decision del cliente asi que seran incluidas en nuestra red neuronal.

Empezaremos nuestro modelo abriendo el editor de codigo “Spyder” diseñado para trabajar con datos.

Lo primero que haremos es importar las librerias / paquetes con los que vamos a pre-procesar este set de datos que tenemos arriba.

Usaremos la libreria “Pandas” para importar el archivo .csv que es nuestro set de datos.

Las redes neuronales trabajan usando matrices. Vamos a crear 2 matrices. Previamente declaramos cuales serian las variables independientes (x) y dependientes (y).

Crearemos 2 matrices donde separaremos nuestro set de datos como dijimos.

El siguiente paso es procesar (codificar) los datos categoricos. Nuestro set de datos tiene una columna que dice “Geography” donde se puede elegir 3 diferentes opciones.

Estos son datos categoricos y debemos procesarlos, vamos a darle un valor numerico a cada una de las opciones disponibles.

Ahora separaremos el set de datos en un set de entrenamiento y uno de prueba.

Usaremos el set de entrenamiento para “entrenar” a nuestro modelo para predecir que cliente tiene mayor probabilidad de ser “exited” que es nuestra variable dependiente (y) que queremos predecir.

El siguiente paso es escalar las caracteristicas de nuestro set de datos. Podemos ver que hay una gran diferencia de digitos en las columnas del set. Algunas columnas tienen 3 digitos, otras 5 digitos.

Esto puede ocasionar problemas asi que escalaremos todos los datos a un mismo digito.

Con esto hemos finalizado el pre-procesamiento de datos. Ahora empezaremos a crear la red neuronal. Usaremos la libreria Keras para crear nuestra red neuronal artificial en tan solo un par de lineas de codigo.

Empezaremos importando los paquetes necesarios.

Ahora es hora de crear la arquitectura de nuestro modelo, usaremos la funcion Sequential() de Keras para crear la red neuronal, la funcion Dense() sirve para agregar capas a la red.

La primera capa es una capa Input, de 6 entradas que coincide con el numero de nuestras variables independientes. Usaremos una funcion de activacion rectificante lineal “ReLU”.

La segunda capa sera una capa Oculta, igualmente 6 unidades y funcion ReLU.

La tercera capa sera la de salida, tendra 1 unidad porque queremos un resultado predictivo (0 o 1) 0 si el cliente no abandona el banco 1 si si.

Usamos el optimizador Adam, el nombre deriva de “Adaptive Moment Estimation”.

El optimizador Adam es distinto a otros tipos de Descenso de Gradiente Estocastica ya que Adam no mantiene un Rango de Aprendizaje fijo.

Nuestra funcion de perdida será “Binary Crossentropy”

El tamaño de nuestros lotes sera de 10 y entrenaremos el modelo a traves de 100 epochs.

Entrenamiento

Con todo este codigo escrito ahora vamos a seleccionarlo y ejecutarlo. Si estas usando “Spyder” como editor de codigo solo debes Seleccionar el Codigo y presionar Alt + Ctrl + Enter

Prediccion

Cuando finalice el entrenamiento podemos hacer una prediccion.

Vamos a pretender que un nuevo cliente a ingresado al banco. Queremos predecir si este tiene algun chance de abandonar el banco.

Estos son los datos del nuevo cliente:

“””
Geografía: Francia
Puntaje de crédito: 600
Género: Masculino
Edad: 40 años
Tenencia: 3 años
Saldo: $60000
Número de productos: 2
¿Tiene este cliente una tarjeta de crédito? Sí
¿Este cliente es un miembro activo? Si
Salario estimado: $50000
“””

Primero llamamos a nuestro modelo, en este caso se llama clasificador. Usamos la funcion Predict() para hacer una prediccion.

La matriz de confusión, también conocida como matriz de error, es un esquema de tabla específico que permite la visualización del rendimiento de un algoritmo, típicamente uno de aprendizaje supervisado.

Finalmente agregamos los datos del nuevo cliente a  la funcion Predict() y obtenemos los resultados, en nuestro caso este cliente no abandona el banco.

Related Articles

Preguntas

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  1. Que tal eric, mire un video en youtube donde explicas el inicio de este proyecto, quiero saber como acceder a todo el contenido para poder desarrollar algo parecido para un proyecto universitario con redes neuronales

    1. Entra a la seccion de datadosis.com/datasets mira en los sets de datos de la seccion de Deep Learning, ahi se encuentra todo. Tienes tu que buscar cual de todos es el indicado para ti