Logo Studenta

Práctica_5_Clientes_de_banco

¡Estudia con miles de materiales!

Vista previa del material en texto

Página 1 de 10 
 
INSTITUCIÓN: TECNOLÓGICO DE LA LAGUNA 
 
CARRERA: MECATRÓNICA 
 
MATERIA: INTELIGENCIA ARTIFICIAL 
 
DOCTOR: SERGIO LÓPEZ HERNÁNDEZ 
 
ALUMNO: RODRÍGUEZ GUERRA EDUARDO ANTONIO 
 
MATRICULA: 19131252 
 
PRÁCTICA 5: CLIENTES DE BANCO Y FUNCIÓN DE 
DIABETES 
 
FECHA DE ENTREGA: 29 DE NOVIEMBRE DE 202
 
Página 2 de 10 
 
 
 
 
 
 
 
 
 
 
 
 
 
Comenzamos con la red neuronal capaz de pronosticar posibles bajas de un banco. 
La verdad esta práctica me agrado porque vemos un uso mas haya de solo las 
imágenes, al día de hoy los datos son uno de los activos mas poderosos de las 
empresas ya que con una big data lo suficientemente grande, puede establecer 
estrategias para mejorar su rendimiento dentro del mercado. 
 
En este caso un banco de Boston cuenta con 10000 ejemplos de clientes en el 
ultimo periodo, de los cuales una pequeña parte salió del banco, ante este 
problema proponemos una red neuronal capaz de predecir quien va a salir, y así 
darle un incentivo como…. Sabes que ten un descuento si usas tu tarjeta en 
centros comerciales, o si abonas a tu cuenta participas por un Xbox, etc… 
 
Estos son los datos que el banco tiene de sus clientes 
 
RowNumber-----> Numero de fila 
CustomerId-----> Indentificacion de cliente 
Surname-----> apellido 
CreditScore-----> puntuacion de credito 
Geography-----> geografia 
Gender-----> género masculino o femenino 
Age-----> Edad 
Tenure-----> anos que el cliente a durado en el banco 
Balance-----> Balance 
NumOfProducts-----> Numero de productos 
HasCrCard-----> Posee tarjeta de credito 0+no y 1=si 
IsActiveMember-----> Es miembro activo?? 0=no y 1=si 
EstimatedSalary-----> Salario estuimado 
Exited-----> Permanecio si o NO...... 0=no, si=1 
 
De esos datos podemos observar que hay datos inútiles, por ejemplo, no porque un 
cliente este en el lugar 66 de una lista ordenada aleatoriamente, significa que 
valla a salir del banco, tampoco el numero de serie, menos el apellido. 
 
 
Página 3 de 10 
 
 
Ahora bien, por lo visto en clase podemos asumir que las redes neuronales son 
capaces de dar mejores resultados cuando presentan entradas de pequeños rangos es 
decir si a una entrada le ingresamos valores de 0 a 10 funcionara mejor que un 
rango de 0 a 100. 
Con eso en cuenta hay datos que requieren un ajuste, como el salario, hay 
salarios desde 2,000 hasta 200,000 claramente un margen muy grande, entonces para 
efectos de simplicidad clasificare todos esos valores en diferentes rangos, poco 
sueldo, sueldo medio y sueldo alto. 
Esto ultimo nos lleva a otra cosa a tomar en cuenta, las entradas deben ser 
numéricas, y todos los valores que contiene el dataset son tipo string, entonces 
habrá que realizar conversiones, también hay datos importantes en forma de 
palabra, por ejemplo, el país, si tenemos un argentino, un mexicano y un estado 
unidense sabemos que el tipo que tendría mayor tendencia a dejar el banco seria 
el argentino por la crisis económica por la que atraviesa ese país, entonces esas 
tres palabras las categorizaremos en 3 valores 0,1,2 para que la red los tome en 
cuenta, haremos lo mismo con el genero de la persona, se que suena algo 
incorrecto en la moral de hoy en día, pero… creo que hay ciertos patrones 
financieros en los que el género si importa. 
 
Ya con esta breve explicación de las consideraciones que tome en cuenta procedo a 
describir el código: 
 
 
 
 
 
 
 
 
 
 
 
Librerías usadas, Numpy para ingresar arreglos y poder ingresar los datos del 
dataset a la red neuronal, TENSORFLOW, para diseñar y entrenar la red neuronal y 
SKLEARN que nos ayudara a tomar una parte del dataset para entrenamiento y otra 
para probar los resultados que arroje la red, esto lo hacemos para no someterla a 
las mismas entradas y así ver si aprendió los patrones o solo las respuestas ante 
las entradas sometidas, 
 
Cargamos el dataset. 
 
 
 
Página 4 de 10 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Aquí vemos como asignamos un valor dependiendo del genero 
En otra columna asignamos valores dependiendo del país de residencia 
En la otra asignamos un valor dependiendo del dinero que el cliente tenga dentro 
del banco, alguien con mucho capital generado de manera legal no saldría del 
banco. 
El salario y los créditos generados, entre mayor sea ese número mayor será su 
participación. 
Ya que tenemos esos datos en orden los ingresamos a una sola constante que serán 
todas las entradas de la red. 
 
 
 
 
La verdad batallé mucho en esta parte jejeje, ya que al intentar juntar toda las 
columnas en una sola tabla, terminaba juntando todo en una sola columna o cosas 
peores, lo mejor que encontré fue el comando numpy.vstack(), el cual pone una 
columna sobre la otra, algo que realmente no me era útil, hasta que al resultado 
de esa operación le hago transpuesta y listo la tabla está preparada para 
ingresarse a la red neuronal. 
La arquitectura de la red neuronal. 
En las practicas pasadas descubri que era mucho mejor una arquitectura pequeña 
con funciones de activación bien seleccionadas que una arquitectura compleja sin 
funciones de activación. 
 
 
 
 
Página 5 de 10 
 
 
Antes de que se me olvide se usaron estos comandos: 
 
(y) para guardar las salidas. 
Decidí destinar el 25% de los datos a pruebas y hacer grupitos de 30. 
La primera arquitectura hecha fue esta: 
 
 
 
 
 
 
Tomé la arquitectura usada en la práctica de compuerta lógica y le agregué 1 capa 
y neuronas para solventar el incremento en las entradas. 
Con esta arquitectura y luego del entrenamiento: 
 
Obtuve el siguiente resultado: 
 
Un porcentaje de acierto de 86.25 sonaba asombroso, pero luego recordé que tanh 
era mejor que la relu, entonces si todas las funciones a excepción de la última 
son tanh… 
 
Página 6 de 10 
 
 
Obtuve…. 
 
La verdad no fue mucha diferencia, pero si incremento su efectividad. 
También incremente las épocas, pero no pasaba del 86% 
Entonces….. por tema de tiempo decidí dejar ese porcentaje. 
Y para poner en practica a la red neuronal la someterla a dos pruebas una sin 
factor de…… redondeo…ahhh se me olvido el nombre, bueno es el factor que permite 
que un 0.4 sea 1 en este caso una predicción se hará sin ese factor y otra con un 
factor de 0.5 ya que los resultados que realmente eran 0 jamás superaron el 0.3 
 
Este es para imprimir porcentaje de acierto 
 
Y aquí se hicieron ambas predicciones. 
 
Página 7 de 10 
 
 
El dato que esperaba como 1 dio 0.55, de ahí el mas cercano 0.38 entonces el el 
factor debe de ser 0.5 para obtener estos resultados 
 
Aumentándolo a 10 datos 
 
Podemos ver que requerimos volver analizar el factor y quizás disminuirlo para no 
perder tantos unos, ya que nos interesa saber quién podría salirse, en lo 
particular considero mejor insinuar erróneamente que alguien si se va a ir, a no 
perder a alguien por un 1 que no entro en rango. 
Ya por último usé este fragmento para guardar código: 
 
 
Página 8 de 10 
 
 
Para la practica de diabetes, ya que la vimos en clase a detalle solo mencionare 
los cambios realizados en función de incrementar el asertividad de la red. 
Con la arquitectura propuesta en clase: 
 
Se obtuvo el siguiente porcentaje: 
 
Mi primera propuesta es hacer la red mas poderosa agregando otra capa. 
Antes de continuar, me gustaría destacar que este entrenamiento es mucho más 
rápido que la pasada, eso me genero curiosidad hasta que vi el tamaño de los 
datasets, no es lo mismo procesar 8 datos de 767 pacientes que 10 datos de 10000 
clientes. 
 
Contra todos mis pronósticos empeore la efectividad, quizás si aumento el número 
de épocas aprovechándome de que entrena muy rápido. 
En efecto duplicando las épocas, pude llegar a una efectividad de 
 
Para el resultado anterior es muchísimo mejor, pero considerando el inicial voy a 
intentar mejorar másel asertividad. 
Ahora con 450 epocas, 
 
Quizás con 600 epocas 
 
Página 9 de 10 
 
 
Temo que cai en el sobre entrenamiento, bueno regresare a las 450 épocas para lo 
siguiente 
 
A carai, jamás entenderé las altas finanzas jajaja, bueno me quedo con este 86% 
 
Guardo la arquitectura y los pesos. 
 
Y por último pruebo la red neuronal con los datos que se destinaron a evaluación 
 
Bien usando un factor de 0.3 ya que los ceros jamas superaron al 0.1 
 
Como conclusión me llevo que las redes neuronales no solo las podemos aplicar en 
sistemas de visión, sino también en el procesamiento de datos, una rama tan 
importante. Pero eso sí, asimilando algo a los sistemas difusos, si un inexperto 
establece que condiciones son importantes para resumir el proceso por el cual las 
entradas se convierten en las salidas, la red neuronal perderá algo de 
asertividad, pero en cambio si un experto en el tema ayuda a distinguir que 
características definen ese proceso podremos obtener resultados muy agradables. 
 
 
 
 
Página 10 de 10 
 
 
Por ejemplo, si a mi me das la tabla de diabetes juro que no supero ni del 50% de 
asertividad y valla que me fui muy alto, en cambio con esa misma experiencia pero 
programando una red neuronal, fui capaz de lograr una efectividad por encima del 
80%.

Continuar navegando