Descarga la aplicación para disfrutar aún más
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%.
Compartir