<?xml version="1.0" encoding="US-ASCII" ?><!-- Created from PDF via Acrobat SaveAsXML --><!-- Mapping Table version: 28-February-2003 --><TaggedPDF-doc><?xpacket begin='&#65279;' id='W5M0MpCehiHzreSzNTczkc9d'?><?xpacket begin="&#65279;" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.1-c001 79.675d0f7, 2023/06/11-19:21:16        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <pdf:Producer>PyPDF2</pdf:Producer>
         <dc:format>xml</dc:format>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                           
<?xpacket end="w"?><?xpacket end='r'?><Part><H1>UNIVERSIDAD LA SALLE </H1><Figure><ImageData src=""/></Figure><Sect><H3>FACULTAD DE NEGOCIOS </H3><P>Con Reconocimiento de Validez Oficial de Estudios de la Secretaria de Educaci </P><Sect><H4>Pblica segn acuerdo nmero No 954315 De fecha 30 de Octubre de 1995 </H4><P>ELABORACI&#211;N DE UN ESTUDIO DE CASO </P></Sect><Sect><H3>&#8220;INTELIGENCIA ARTIFICIAL PARA PREDECIR DISPOSICIONES EN PYMES&#8221; </H3><P>QUE PARA OBTENER EL GRADO DE MAESTRO EN INGENIER&#205;A ECON&#211;MICA Y FINANCIERA </P><P>PRESENTA: </P><P>Jorge Apodaca Gaona </P></Sect><Sect><H3>Asesor: Dr. H&#233;ctor Alonso Olivares Aguayo </H3><P>Ciudad de M&#233;xico, 2023 </P><Figure><ImageData src=""/></Figure><Sect><H3>A Laura por ayudarme en todo A mi mam&#225; por todo su esfuerzo </H3><P>INTELIGENCIA ARTIFICIAL PARA PREDECIR DISPOSICIONES EN PYMES </P></Sect></Sect></Sect><Sect><H2>Jorge Apodaca Gaona </H2><Figure><ImageData src=""/></Figure><P>Un Caso de Estudio presentado para obtener el grado de Maestro en Ingenier&#180;&#305;a Econ&#180;omica y Financiera </P></Sect><Sect><H2>Asesor: Dr. H&#180;ector Alonso Olivares Aguayo </H2><Sect><H3>Facultad de Negocios M&#180;exico Marzo 2023 </H3><P>&#180; </P></Sect></Sect></Part><Part><H1>Indice </H1><P>0.1. Introducci&#180;on.............................. iii </P><P>0.2. Antecedentes ............................. iv </P><P>0.3. Planteamiento delproblema ..................... iv </P><P>0.4. Justificaci&#180;on.............................. iv </P><P>0.5. Objetivo General ........................... v </P><P>0.6. Objetivos espec&#180;&#305;ficos ......................... v </P><P>1. Marco Teor&#180;&#305;co 1 </P><P>&#180; </P><P>1.1. Arboles deDecisi&#180;on ......................... 2 </P><P>1.2. Redes Neuronales........................... 6 </P><P>1.3. M&#180;etricasdeefectividaddelosmodelos . . . . . . . . . . . . . . . 11 </P><P>1.4. Metodolog&#180;&#305;as para la aplicaci&#180;on de modelos . . . . . . . . . . . . 14 </P><P>1.5. Herramientas desoftware utilizadas. . . . . . . . . . . . . . . . . 16 </P><P>2. Marco Metodol&#180;ogico 19 </P><P>2.1. Sampling ............................... 19 </P><P>2.2. Explore ................................ 21 </P><P>2.3. Modify ................................. 27 </P><P>2.4. Model ................................. 28 </P><P>2.5. Asses .................................. 31 </P><P>3. Implementaci&#180;on del modelo 37 </P><P>3.1. Plandeimplementaci&#180;on ....................... 37 </P><P>3.2. Monetizaci&#180;ondelproyecto ...................... 40 </P><P>3.3. Evidenciadelapuestaenproducci&#180;on. . . . . . . . . . . . . . . . 42 </P><P>4. Discusi&#180;on y conclusiones 45 </P><P>4.1. SobrelaIAysuimplementaci&#180;on .................. 45 </P><P>4.2. Sobrelosresultadosdelosmodelos . . . . . . . . . . . . . . . . . 45 </P><P>4.3. Sobrelaimplementaci&#180;on....................... 46 </P><P>A. Anexo de C&#180;odigos en R y Python 49 </P><P>B. Anexo de Definiciones Matem&#180;aticas </P><P>B.1.AlgoritmoAdaBoost ......................... 52 </P><P>B.2.AlgoritmosdeOptimizaci&#180;on..................... 54 </P><P>B.3.SobreRedesNeuronales ....................... 55 </P><P>B.4.M&#180;aquinasdeSoporte Vectorial ................... 56 </P><Sect><H3>0.1. Introducci&#180;on </H3><P>En este texto no solo se propone una soluci&#180;on basada en Inteligencia Artificial, sino que se presentan los pasos que se siguieron para su implementaci&#180;on y seguimiento en plataformas tecnolog&#180;&#305;as, en la metodolog&#180;&#305;a AGILE y respetando marcos legales. </P><P>La informaci&#180;on usada para mostrar en este caso de estudio es publicada por BBVA por lo que no generar&#180;a controversias y se cuida el anonimato de los clientes, as&#180;&#305; como la informaci&#180;on estrat&#180;egica del Banco ya que solo se utiliza la informaci&#180;on muestra, de hace dos a&#732;nos y sin datos personales. La implementaci&#180;on del modelo en un ambiente productivo signific&#180;o diversos retos, en este texto se comentar&#180;an los m&#180;as importantes y c&#180;omo fueron solucionados en el momento. </P><P>A lo largo del texto son presentados diferentes modelos de Machine Learning y diferentes plataformas de programaci&#180;on, para as&#180;&#305; encontrar las mejores herramientas de generaci&#180;on e implementaci&#180;on del modelo. Con esta informaci&#180;on se abordar&#180;a una breve discusi&#180;on sobre cu&#180;ales son los beneficios de cada una de las herramientas se&#732;naladas. En este caso, se selecciona la plataforma de Big Data Jupyter en un entorno distribuido de Spark y que, a manera de ejemplo, se muestra su funcionamiento en una plataforma de Big Data (Datio1), es por ello que se puede considerar que este modelo aqu&#180;&#305; presentado es una aplicaci&#180;on de Big Data que es aplicado en un ambiente de c&#180;omputo distribuido. </P><P>Como se precisa en (Leo et al., 2019) y en (Kaminskyi et al., 2021), tradicionalmente las aplicaciones de Machine Learning est&#180;an enfocadas en la contenci&#180;on y evaluaci&#180;on del riesgo. Estos enfoques son derivados de la necesidad de obtener la p&#180;erdida esperada, el tama&#732;no de la p&#180;erdida y la exposici&#180;on al impago como lo pide la normativa de Basel Committee 2005. En este trabajo, en lugar de centrarse en la exploraci&#180;on de estos aspectos, se busca analizar la necesidad de cr&#180;edito por parte del cliente en lugar de examinar su riesgo, por lo que esta indagaci&#180;on es una aportaci&#180;on adicional para generar valor de conocimiento y econ&#180;omico sobre los clientes e investigar, cu&#180;ales son las razones por las que una PyME solicita un cr&#180;edito a una instituci&#180;on bancaria debido a que la informaci&#180;on disponible sobre el comportamiento econ&#180;omico de las PyMES es escasa. </P><P>Por otra parte, en (Guerra y Castelli, 2021) se ha realizado una investigaci&#180;on que pretende mostrar cu&#180;ales son los temas m&#180;as estudiados en el ambito bancario.&#180; En donde, al evaluar 41 art&#180;&#305;culos con m&#180;as citas, se estima que el 29.29 % de ellos se enfocan en Machine Learning y que s&#180;olo 2.4 % estudian el riesgo de liquidez, por lo que una de las aportaciones del presente caso de estudio es que el modelo propuesto se encuentra en un nicho de investigaci&#180;on poco frecuente debido a que una de las variables m&#180;as importantes en el modelo es el flujo de liquidez de la PyME por medio del Machine Learning. </P><P>En (Kaminskyi et al., 2021) se presenta una recopilaci&#180;on de algoritmos de Machine Learning que permiten enfrentar los problemas a los que la banca se enfrenta en su operaci&#180;on y estrategia. En (Kaminskyi et al., 2021) se espec&#180;&#305;fica </P><P>1Datio es la plataforma de Big Data que utiliza BBVA para elaborar proyectos de Machine Learning con grandes cantidades de datos. </P><P>que el conocimiento del comportamiento del cliente suma valor econ&#180;omico al banco que genera este conocimiento. </P><Sect><H3>0.2. Antecedentes </H3><P>En los ultimos&#180; a&#732;nos, la IA ha cobrado mayor relevancia en la segmentaci&#180;on de clientes de la Banca y se han generado m&#180;ultiples propuestas para implementarla en &#180; on de fraudes o para pronosticar ventas. Las</P><P>areas como seguros, prevenci&#180; entidades financieras buscan talento adecuado y soluciones tecnol&#180;ogicas para aprovechar los beneficios de los avances en el campo de la IA. Adem&#180;as, &#180;esta tiene que contemplar cambios en las pol&#180;&#305;ticas de los productos y actualizarse para poder competir con otros modelos de IA con que cuenta la competencia. Es por ello que cada a&#732;no BBVA lanza el reto Hackathon en el que pone como objetivo encontrar una soluci&#180;on a problemas espec&#180;&#305;ficos de cada producto. </P><P>Este reto es de car&#180;acter abierto; esto es, equipos de especialistas en tecnolog&#180;&#305;a generan ideas e innovaci&#180;on para presentar una posible soluci&#180;on. En este caso, debido a la experiencia del autor de este texto en el producto PyME y a la necesidad del Banco de encontrar soluci&#180;on al problema de pron&#180;ostico de disposiciones del cr&#180;edito (necesidad que expone p&#180;ublicamente en el reto) se emprender&#180;a una propuesta de soluci&#180;on al tema y que fue aplicada por el autor de este texto en la empresa con resultados medibles. </P><Sect><H3>0.3. Planteamiento del problema </H3><P>El problema es descrito tanto por la instituci&#180;on (BBVA. S.A.) como por el autor de este trabajo como se muestra a continuaci&#180;on: </P><P>Con base en un conjunto de datos (an&#180;onimos) que representan el comportamiento financiero de clientes de Peque&#732;nas y Medianas Empresas (PyME), se requiere encontrar cu&#180;ales de estos clientes dispondr&#180;an de su tarjeta en los siguientes tres meses para generar una lista que contenga la prioridad con que un ejecutivo de cuenta debe visitar a un cliente, con el fin de disminuir las p&#180;erdidas de tiempo derivadas de visitas a clientes con baja propensi&#180;on al cr&#180;edito (BBVA, 2021). </P><Sect><H3>0.4. Justificaci&#180;on </H3><P>Los ejecutivos de cuenta tienen asignada una cartera de clientes que tienen que visitar o contactar para promover los diferentes productos de cr&#180;edito ofrecidos en el segmento PyME. Sin embargo, la gran cantidad de clientes que tienen asignados genera gran cantidad de tiempo perdido contactando y visitando clientes que no necesitan cr&#180;editos en este momento. Por lo que el modelo propuesto sirve de gu&#180;&#305;a al ejecutivo de cuenta para solo contactar a los clientes que necesitan un cr&#180;edito y de esta forma priorizar las visitas a realizar y disminuir los tiempos invertidos en contactar clientes. De esta forma, se promover&#180;a el aumento en la productividad de los ejecutivos de cuenta debido a que contaran con m&#180;as tiempo para buscar clientes nuevos. </P><P>Por otra parte, el modelo puede ser usado para optimizar la asignaci&#180;on de tasa a los clientes que necesitan un cr&#180;edito debido a que se les podr&#180;a ofrecer una mejor tasa a los clientes que tienen necesidad de cr&#180;edito mejorando el indicador de ventas debido a que el cliente puede usar como factor de decisi&#180;on una mejor tasa ofrecida oportunamente. Debido a que un cliente que no necesita el cr&#180;edito no le importar&#180;a una mejor tasa y, por otra parte, un cliente con necesidad de cr&#180;edito que no est&#180;a totalmente convencido de pedirlo en BBVA, podr&#180;a convencerse de solicitarlo en BBVA debido a una promoci&#180;on en la tasa del cr&#180;edito. </P><Sect><H3>0.5. Objetivo General </H3><P>Discutir la aplicaci&#180;on y resultados de un modelo IA puesto en producci&#180;on por parte del banco BBVA M&#180;exico (en adelante, en ocasiones, se usar&#180;a el t&#180;ermino &#8220;el Banco&#8221; para referirse a BBVA M&#180;exico) orientado a cr&#180;editos PyME para generar una lista que contenga la prioridad con que un ejecutivo de cuenta debe visitar a un cliente, con el fin de disminuir las p&#180;erdidas de tiempo derivadas de visitas a clientes con baja propensi&#180;on al cr&#180;edito. Usando datos proporcionados por BBVA que son p&#180;ublicos, as&#180;&#305; como estrategias comerciales de BBVA que ha presentado en diferentes foros. </P><Sect><H3>0.6. Objetivos espec&#180;&#305;ficos </H3><L><LI><Lbl>1. </Lbl><LBody>Mostrar la aplicaci&#180;on de los aprendizajes obtenidos en la Maestr&#180;&#305;a de Ingenier&#180;&#305;a Econ&#180;omica y Financiera de la Universidad La Salle al resolver un problema de impacto social. </LBody></LI><LI><Lbl>2. </Lbl><LBody>Mostrar los detalles de la generaci&#180;on de un modelo de IA para el pron&#180;ostico de disposiciones de clientes PyME. </LBody></LI><LI><Lbl>3. </Lbl><LBody>Mostrar los resultados del modelo y su implementaci&#180;on sin comprometer la informaci&#180;on resguardada por BBVA; as&#180;&#305; como resguardar la imagen de la empresa. </LBody></LI><LI><Lbl>4. </Lbl><LBody>Mostrar la eficiencia de la metodolog&#180;&#305;a AGILE para la r&#180;apida puesta en producci&#180;on de modelos financieros -econ&#180;omicos. </LBody></LI><LI><Lbl>5. </Lbl><LBody>Mostrar la importancia de la IA para la soluci&#180;on de problemas que se presentan en las corporaciones financieras. </LBody></LI><LI><Lbl>6. </Lbl><LBody>Mostrar la aplicaci&#180;on de modelos bajo regulaciones Nacionales e Internacionales del cuidado de la informaci&#180;on personal de los clientes. </LBody></LI></L><P>Cap&#180;&#305;tulo 1 </P></Sect></Sect></Sect></Sect></Sect></Sect></Part><Part><H1>Marco Teor&#180;&#305;co </H1><P>Desde el comienzo del pensamiento humano, se ha generado inter&#180;es por automatizar o hacer m&#180;as f&#180;aciles las tareas de los humanos. En el comienzo del siglo XX, las m&#180;aquinas que calculaban miles de resultados de operaciones presentaron una soluci&#180;on para necesidades matem&#180;aticas para la segunda guerra mundial. Por ejemplo, la necesidad de calcular la cantidad necesaria de municiones para poder inhabilitar cierta infraestructura del enemigo, entre otros ejemplos de optimizaci&#180;on (Taha, 2011). </P><P>Con estos precedentes, y al ver que muchas de las tareas humanas de c&#180;alculos eran remplazadas por los llamados ordenadores, tanto en ciencia ficci&#180;on como en el avance del descubrimiento de las c&#180;elulas neuronas y su funcionamiento; el humano ha tratado de generar modelos matem&#180;aticos que, traducidos a algoritmos, puedan simular el aprendizaje humano. </P><P>Sin embargo, no es casualidad que investigadores en la materia se han preguntado si estos modelos son los &#180; erminos de tiempo de procesa</P><P>optimos en t&#180; miento y capacidad de los componentes electr&#180;onicos de las computadoras. El humano, al hacerse estas preguntas, ha generado algoritmos m&#180;as eficaces que las llamadas redes neuronales artificiales. Derivado de estos avances, en los &#180;</P><P>ultimos a&#732;nos se ha presentado un nuevo campo de conocimiento llamado Machine Learning en lugar de la IA. No solo se pueden dividir los conceptos de aprendizaje e inteligencia y posteriormente unirlos si es necesario; tambi&#180;en podemos encontrar algoritmos que aprenden con reglas diferentes a las de las redes neuronales (Br&#180;&#305;o, 2007). </P><P>En adelante, se usar&#180;an modelos que aprenden de patrones en los datos y posteriormente, podremos discernir si estos modelos pueden razonar y en qu&#180;e medida les podemos llamar inteligentes. </P><P>El problema matem&#180;atico que buscan resolver los algoritmos de Machine Learning, en t&#180;erminos generales es el siguiente: Minimizar el error de un modelo que pretende pronosticar un resultado desconocido por medio de un conjunto de informaci&#180;on conocida y un algoritmo. </P><P>Si bien, muchos de los conceptos usados en la definici&#180;on pueden ser ambiguos, se supondr&#180;a que el lector ya tiene conocimiento sobre t&#180;erminos como error, modelo, informaci&#180;on o datos. Aunque, para eliminar ambig&#168;uedades, se esbozar&#180;a la definici&#180;on matem&#180;atica de cada modelo. </P><P>&#180; </P><L><LI><Lbl>1. </Lbl><LBody>Arboles de decisi&#180;on </LBody></LI><LI><Lbl>2. </Lbl><LBody>Random forest </LBody></LI><LI><Lbl>3. </Lbl><LBody>Ada boost </LBody></LI><LI><Lbl>4. </Lbl><LBody>Redes neuronales </LBody></LI><LI><Lbl>5. </Lbl><LBody>Regresi&#180;on log&#180;&#305;stica </LBody></LI><LI><Lbl>6. </Lbl><LBody>M&#180;aquinas de soporte vectorial </LBody></LI></L><P>Actualmente existen diferentes tipos de modelos que son usados dependiendo de su efectividad en cada fen&#180;omeno a predecir. Sin embargo, la mayor&#180;&#305;a tienen como objetivo pronosticar resultados con informaci&#180;on recopilada de experiencia previa del fen&#180;omeno. En este caso, se les llama modelos de aprendizaje supervisado debido a que son entrenados con informaci&#180;on previa. Ejemplos de fen&#180;omenos a predecir dada informaci&#180;on previa, pueden ser: </P><L><LI><Lbl>1. </Lbl><LBody>Desempe&#732;no de un empleado en el a&#732;no [bueno, malo] </LBody></LI><LI><Lbl>2. </Lbl><LBody>Pron&#180;ostico del precio de una acci&#180;on [baja, sube] </LBody></LI><LI><Lbl>3. </Lbl><LBody>Contrataci&#180;on de un pr&#180;estamo [va a contratar, no va a contratar] </LBody></LI></L><P>Cabe se&#732;nalar que se pueden tener m&#180;as clases pero, por simplicidad, hablaremos solo de dos, y las denotaremos como cero o uno a cada clase. Para poder realizar dicha clasificaci&#180;on, es necesario un conjunto de vectores de datos que ser&#180;an usados para poder obtener un cero o uno. Tambi&#180;en, este conjunto debe dividirse en dos subconjuntos; uno de entrenamiento y otro en un conjunto de validaci&#180;on. De tal forma, que necesitamos de una funci&#180;on que nos clasifique al conjunto de datos de dimensi&#180;on n (n columnas) de la siguiente forma: </P><P>f := Rn &#8594;{0, 1} (1.1) </P><P>Buscando siempre que el error sea el m&#180;&#305;nimo. De esta forma, el mejor modelo ser&#180;a aquel que nos arroje el menor error posible. Diferentes y m&#180;ultiples algoritmos se han creado para esta finalidad. </P><P>&#180; </P><Sect><H3>1.1. Arboles de Decisi&#180;on </H3><P>&#180; </P><P>El primer clasificador que se ver&#180;a es el Arbol de Decisi&#180;on, que usa el concepto de ganancia de informaci&#180;on para poder clasificar los datos de la mejor manera. Lamentablemente, solo puede clasificar la informaci&#180;on en dos clases lo que supone dudas en algunos aspectos sobre la no linealidad del resultado. Sin embargo, es ampliamente usado y genera una base conceptual para m&#180;as algoritmos como veremos a continuaci&#180;on. El &#180;arbol de decisi&#180;on toma una columna de la tabla de datos de entrenamiento (una variable); por ejemplo, supongamos que es seleccionada la variable de volumen en una temporada de conciertos de m&#180;usica cl&#180;asica y se busca clasificar aquellos conciertos que han dejado mayor satisfacci&#180;on en los asistentes. Esta variable toma los valores Alto o Bajo y se busca determinar la satisfacci&#180;on de los asistentes en una variable y que toma los siguientes valores: satisfecho o no satisfecho. </P><P>El objetivo del algoritmo llamado C4.5 (Rim y Liu, 2020), es buscar la Ganancia de la Informaci&#180;on en los conciertos con volumen Alto respecto a los conciertos con volumen Bajo. En caso de que exista menor incertidumbre (mayor ganancia de la informaci&#180;on) entre una u otra clase de la variable volumen, entonces divide el conjunto de datos en dos (genera una rama nueva del &#180;</P><P>arbol) y aplica este proceso para cada variable una y otra vez dependiendo de la profundidad (n&#180;umero de divisiones) o exactitud (nivel de error) requeridos por el usuario del algoritmo. En espec&#180;&#305;fico, la famosa f&#180;ormula de Ganancia de la Informaci&#180;on </P><P>o de medida de incertidumbre (Entrop&#180;&#305;a) de Shannon IE es: </P><P>n</P><P></P><P>IE (f)= &#8722; f(xi) log2 f(xi) (1.2) </P><P>i=1 </P><P>En donde f es la funci&#180;on de distribuci&#180;on de probabilidad, f(xi) es la probabilidad del evento xi, m es el total de eventos del espacio de eventos. </P><P>Para ver c&#180;omo funciona esta medida, se puede evaluar el fen&#180;omeno de lanzar una moneda al aire con las probabilidades de que salga cara o cruz; se podr&#180;a ver que es el experimento con mayor incertidumbre ya que las probabilidades de que se consiga una u otra cara son iguales y son los &#180;</P><P>unicos resultados del experimento. En cambio, al tirar dos dados, el resultado con menos incertidumbre (la funci&#180;on alcanza un m&#180;&#305;nimo) es el n&#180;umero siete. </P><P>Una alternativa para la medida de incertidumbre de Shannon, es el &#180;&#305;ndice de Gini que es utilizado para evaluar el desempe&#732;no de un modelo como se ver&#180;a m&#180;as adelante y se define como: </P><P>n</P><P></P><P>Gini = pi(1 &#8722; pi) (1.3) i=1 en donde pi es la probabilidad del evento i y n es el total de eventos posibles de un experimento. Un &#180; on se compone de hojas, nodos y ramas. Las hojas son la</P><P>arbol de decisi&#180; parte final de &#180; on) encontrado en donde, s&#305;</P><P>arbol y representa un segmento (patr&#180; &#180; se divide m&#180;as, el algoritmo sobrepasa las divisiones que se pre requirieron o ya no se encuentra ganancia de la informaci&#180;on por alguna divisi&#180;on. Los nodos, son las divisiones que encuentra el algoritmo de acuerdo a la ganancia de informaci&#180;on calculada al encontrar un patr&#180;on. Las ramas unen los nodos y las hojas para poder mostrar gr&#180;aficamente las relaciones entre las variables. </P><P>Posteriormente, con este algoritmo, podemos construir otros dos que mejoran la precisi&#180;on. El Random Forest y el Ada Boost (Freund et al., 1999). El Random Forest, en lugar de medir recursivamente la &#8220;Ganancia de Informaci&#180;on&#8221; variable por variable cuantas veces se le asigne al algoritmo en profundidades genera cientos o miles de combinaciones de peque&#732;nos &#180; on, por lo general, </P><P>arboles de decisi&#180; de una divisi&#180;on de profundidad y posteriormente los une poniendo en primer t&#180;ermino la uni&#180;on que genere mayor &#8220;ganancia de informaci&#180;on&#8221;. </P><P>Por &#180; nos</P><P>ultimo, el Ada Boost, se basa en el supuesto de que si se unen peque&#732; &#180;arboles de decisi&#180;on (de una divisi&#180;on de profundidad) como en un Random Forest, se puede caer en el abandono de informaci&#180;on valiosa olvidando patrones que generan ganancia de la informaci&#180;on pero que se han descartado por ser poco valiosos respecto de otro patr&#180;on. De tal forma, que este algoritmo genera m&#180;ultiples &#180; on para generar uno en el que varios caminos pueden</P><P>arboles de decisi&#180; llegar al mismo resultado. Por ejemplo: Supongamos que un volumen alto siempre genera satisfacci&#180;on en el p&#180;ublico, entonces, un &#180; on, o un Random Forest, dejar&#305;an este resultado co</P><P>arbol de decisi&#180; &#180; mo la &#180; on es siempre relevante. Pero, </P><P>unica hoja ya que la ganancia de informaci&#180; &#191;qu&#180;e sucede si, la calidad de los instrumentos es una variable tambi&#180;en relevante, aunque no tanto? La respuesta es que el an&#180;alisis estar&#180;&#305;a dejando de lado informaci&#180;on importante. Es por ello, que el algoritmo de Ada Boost, generar&#180;a dos &#180;</P><P>arboles (hasta donde se sabe solo se han presentado estas dos variables), y por ello, nos dir&#180;a que, si los instrumentos son de calidad o el volumen es alto, entonces se prev&#180;e un concierto con gran satisfacci&#180;on. </P><P>Cabe se&#732;nalar, que un aspecto importante del Ada Boost es que utiliza la optimizaci&#180;on del &#8220;Gradiente Descendiente&#8221; para poder dividir las ramas buscando un &#180; on cuando la variable es continua y no</P><P>optimo en ganancia de la informaci&#180; discreta (clases). </P><P>En la Figura 1.1, se pude apreciar el algoritmo de un &#180; on como</P><P>arbol de decisi&#180; el que hemos comentado. </P><P>Existen diferentes versiones del algoritmo de Radnom Forest, a continuaci&#180;on se definir&#180;a un algoritmo de Random Forest con base en (Rim y Liu, 2020), del cu&#180;al se han presentado las ideas generarles: </P><P>Definici&#180;on 1.1.1 (Algoritmo Random Forest) Con base en un conjunto de datos de entrenamiento y un par&#180;ametro k, se busca un resultado de clasificaci&#180;on con los siguientes pasos: </P><L><LI><Lbl>1. </Lbl><LBody>Dividir el conjunto de entrenamiento en k subconjuntos aleatorios. </LBody></LI><L><LI><Lbl>2. </Lbl><LBody>Hacer un &#180; on condicional para con cada subconjunto k con el</LBody></LI><LI>arbol de decisi&#180; algoritmo C4.5. </LI></L><L><LI><Lbl>3. </Lbl><LBody>Evaluar una entrada de informaci&#180;on en cada uno de los k &#180;</LBody></LI><LI>arboles de decisi&#180;on creados. </LI></L><LI><Lbl>4. </Lbl><LBody>El resultado devuelto del modelo ser&#180;a la moda del conjunto de los k resultados (esto es, el resultado m&#180;as votado por todos los k &#180;</LBody></LI></L><P>arboles generados). </P><P>Una de las ventajas del modelo de Random Forest es que evita el sobre ajuste debido a que intervienen los resultados de varios modelos que se han </P><Figure><ImageData src=""/><Caption><P>Figura 1.1: Diagrama del flujo de un algoritmo para generar un &#180; on</P></Caption></Figure><P>arbol de decisi&#180; C4.5. Fuente: (Br&#180;&#305;o, 2007). </P><P>entrenado con subconjuntos de datos diferentes. Una de las desventajas es que su entrenamiento requiere de m&#180;as recursos computacionales y tiempo debido a que estima varios &#180; on. El modelo de Random Forest es usualmente el</P><P>arboles de decisi&#180; que genera mayor precisi&#180;on debido a que considera las respuestas de un conjunto de modelos. Cabe se&#732;nalar que al tener m&#180;as datos, se podr&#180;a subdividir la muestra en m&#180;as subconjuntos, obteniendo m&#180;as modelos que adicionar&#180;an valor al resultado final. </P><P>El Algoritmo B.1.1 presentado en 1997 pretende crear un conjunto de entrenamiento en cada iteraci&#180;on (m&#180;etodo conocido como algoritmo ensamblador). Este nuevo conjunto de entrenamiento tomar&#180;a en cuenta, en mayor medida, aquellos registros en los que el mejor modelo no ha podido pronosticar adecuadamente. De esta forma, los &#180;</P><P>arboles se encuentran conectados debido a que un &#180; arbol predecesor) de los</P><P>arbol aprende (con una variable diferente usada por el &#180; registros que no fueron pronosticados adecuadamente por un &#180;</P><P>arbol predecesor. Una da las desventajas del modelo Ada Boost es que utiliza grandes cantidades de recursos computacionales ya que recalcula los una cantidad M de &#180;</P><P>arboles en cada iteraci&#180;on. En el algoritmo (B.1.1) la funci&#180;on I se refiera a la funci&#180;on Caso que arroja el valor uno en caso de cumplir con cierta condici&#180;on y cero en caso contrario. </P><Sect><H3>1.2. Redes Neuronales </H3><P>En el caso de las redes neuronales, sus algoritmos son f&#180;aciles de comprender1 y ampliamente usados hoy en d&#180;&#305;a. Existe una amplia investigaci&#180;on al respecto sobre sus formas y c&#180;omo ordenarlas para obtener los mejores resultados. </P><P>Aunque no se han obtenido resultados contundentes en mejorar los resultados y en cada aplicaci&#180;on es necesario realizar experimentos de prueba y error para comprobar hip&#180;otesis sobre su arquitectura (topolog&#180;&#305;a) como se precisa en (Br&#180;&#305;o, 2007). Aunque son f&#180;aciles de programar, consumen muchos recursos computacionales, por lo que la mayor&#180;&#305;a de las aplicaciones solo utiliza topolog&#180;&#305;as de pocas capas o un n&#180;umero reducido de neuronas. </P><P>Sin embargo, en los &#180; nos, el desarrollo del c&#180;</P><P>ultimos a&#732; omputo distribuido y nuevas estrategias para su programaci&#180;on ha generado resultados insospechados hace unas d&#180;ecadas en temas como reconocimiento de im&#180;agenes o autonom&#180;&#305;a de veh&#180;&#305;culos; generando un resurgimiento de su uso con m&#180;as potencia que hace unos a&#732;nos. Las mejoras y los nuevos algoritmos se pueden ver en el proyecto Tensor Flow de Google, que pretende ser referente para la programaci&#180;on y uso de estas redes. </P><P>El concepto b&#180;asico de red neuronal se basa en el modelo de neurona de Ram&#180;on Cajal (Klein, 2017) que se pude apreciar en la Figura 1.2. </P><P>En la Figura 1.2, podemos apreciar diferentes arreglos y elementos que permiten a la neurona guardar informaci&#180;on y compartirla con otras neuronas. En el centro observamos el n&#180;ucleo (B) que recibe de las dendritas (A) informaci&#180;on de otras neuronas y que despu&#180;es la transmite a otras neuronas a trav&#180;es del Ax&#180;on </P><P>(C) con diferentes grosores (sinapsis) para enviar se&#732;nales moduladas a otras neuronas. El flujo de informaci&#180;on en la Figura 1.2 ser&#180;&#305;a de abajo hacia arriba; en &#8220;A&#8221; se recibe informaci&#180;on de otras neuronas, B activa la salida que es modulada por C que lleva la nueva informaci&#180;on (se&#732;nal) a otras neuronas. El modelo matem&#180;atico m&#180;as aceptado (Modelo Est&#180;andar) para representar una neurona es el siguiente: </P><P>Definici&#180;on 1.2.1 (Modelo Matem&#180;atico de Neurona) Sea &#8407;x =&lt;x1,x2,...,xn > un vector con informaci&#180;on, el procesamiento de esta informaci&#180;on suceder&#180;a de la siguiente forma: </P><P></P><P>n</P><P></P><P>y(&#8407;x)= &#966;wixi &#8722; &#952; (1.4) i </P><P>La f&#180;ormula es muy f&#180;acil de programar y entender. Primero, sumamos cada entrada de informaci&#180;on (dato del vector) multiplicado por wi el peso sin&#180;aptico (brazos de la red con diferentes grosores) y posteriormente le se le resta a Theta </P><P>1Se consideran f&#180;aciles de comprender debido a que se pueden interpretar como la uni&#180;on de varias regresiones lineales que son ampliamente conocidas en el an&#180;alisis econ&#180;omico y estad&#180;&#305;stico. </P><Figure><ImageData src=""/><Caption><P>Figura 1.2: Una de las primeras ilustraciones de una neurona en 1889 con sus componentes se&#732;nalados. Fuente: Elaboraci&#180;on propia con imagen de fondo provista en Klein, 2017. </P></Caption></Figure><P>que usualmente es una constante2 . Al sumar estos valores, se le aplica una funci&#180;on &#966; (funci&#180;on de activaci&#180;on) que apaga o enciende una se&#732;nal3 , usualmente funciones que entreguen cero o uno como resultado. Cuando se tiene una red neuronal, usualmente se env&#180;&#305;a este resultado a otra neurona para que lo procese con otros resultados. </P><P>Cuando se tiene una sola neurona, el modelo es el de una regresi&#180;on lineal y su interpretaci&#180;on es ampliamente conocida. Sin embargo, al unir m&#180;ultiples neuronas, no se puede concluir lo mismo y no se puede interpretar la sinapsis del modelo, pero si se puede utilizar el conocimiento que se tenga sobre una regresi&#180;on para explicar c&#180;omo aprenden las redes neuronales. </P><P>Un aspecto importante sobre las Redes Neuronales es que el aprendizaje depende en gran medida de las funciones de activaci&#180;on con que se cuente, entre las m&#180;as comunes se tienen: </P><P>Definici&#180;on 1.2.2 (Algunas de las funciones de activaci&#180;on m&#180;as comunes) </P><P>Sea x &#8712; R y sea &#8407;z =&lt;z1,z2,...,zn > un vector de tama&#732;no n y con zi &#8712; R,a las siguientes funciones se les denominar&#180;a como Funciones de Activaci&#180;on: </P><P>2Theta es usualmente una constante arbitrar&#180;&#305;a y en ocasiones es conocida como &#8220;bias&#8221; (v&#180;ease la Figura 1.3 c&#180;&#305;rculos en color azul). En una regresi&#180;on lineal, la ecuaci&#180;on de la recta en una regresi&#180;on es de la forma y = mx + b, en este caso, b ser&#180;&#305;a el bias. </P><P>3Existen diferentes funciones de activaci&#180;on y cada una puede mejorar el modelo dependiendo de c&#180;omo se configure la red neuronal. En el caso de las regresiones, al aplicar las funciones del tipo sigmoidea, se obtienen los llamados modelos probit o logit que clasifican la informaci&#180;on de salida en cero o uno (SAS, 2011). </P><P>Identidad: </P><P>&#966;(x)= x (1.5) </P><P>Escal&#180;on:</P><P></P><P>0 si x< 0 </P><P>&#966;(x) = (1.6)</P><P>1 si x &#8805; 0 </P><P>Sigmoidal: </P><P>x</P><P>e </P><P>&#966;(x)= &#8722;x (1.7)</P><P>1+ e </P><P>ReLU (Rectified Lineal Unit): </P><P>&#966;(x) = m&#180;ax(0,x) (1.8) </P><P>Softmax: </P><P>&#966;(zj )=</P><P></P><P>zj</P><P>e </P><P>para j =1,...,n (1.9)</P><P>n </P><P>i=1 ezi </P><P></P><P>La elecci&#180;on de cada una de estas funciones se puede hacer arbitrariamente en un inicio, pero por medio de experimentos sucesivos se podr&#180;a elegir a la mejor funci&#180;on de activaci&#180;on. Es importante se&#732;nalar, que la funci&#180;on 1.8 ha sido de gran importancia en los &#180;</P><P>ultimos avances en la materia, probando mejoras sustanciales en los modelos. Esto, se podr&#180;&#305;a explicar debido a que algoritmos de optimizaci&#180;on tienen menos problemas al hallar un valor &#180; on, </P><P>optimo en esta funci&#180; lo que se entender&#180;a si se examinan los principales algoritmos para encontrar m&#180;aximos y m&#180;&#305;nimos como ser mostrar&#180;a m&#180;as adelante. </P><P>Existen diferentes tipos de funciones de costo y la elecci&#180;on de una de ellas para el aprendizaje ser&#180;a determinante para el desempe&#732;no final de un modelo. </P><P>Definici&#180;on 1.2.3 (Algunas funciones de costo m&#180;as comunes) Las funciones de costo m&#180;as comunes para una muestra de tama&#732;no N con n par&#180;ametros son: </P><P>1. Error Simple (ES): </P><P>N </P><P></P><P>L(&#710;y, y)= |yi &#8722; y&#710;i| (1.10) </P><P>i=1 </P><P>2. Error Absoluto Medio (EAM): </P><P>N </P><P>|yi &#8722; y&#710;i|N </P><P>L(&#710;y, y)= </P><P>(1.11) </P><P>i=1 </P><P>3. Error Cuadr&#180;atico Medio (ECM): </P><P></P><P></P><P>N </P><P>N </P><P>i=1 </P><P>(yi &#8722; y&#710;i)2 </P><P>L(&#710;y, y)= </P><P>(1.12) </P><P>4. Cross Entropy (CE): </P><P>N</P><P></P><P>L(&#710;y, y)= &#8722;(yilog(&#710;yi) + (1 &#8722; yi)log(1 &#8722; y&#710;i)) (1.13) i=1 </P><P>En donde y&#710;=&lt;y&#710;1, ..., y&#710;N > es el vector de los valores pronosticados e y =< y1, ..., yN > los valores reales. </P><P>En el caso del modelo Ada Boost, la funci&#180;on de costo ser&#180;a la funci&#180;on de incertidumbre de Shannon. Es importante se&#732;nalar, que la funci&#180;on de costo debe contar con derivadas de primer y segundo orden y ser c&#180;oncava para poder aportar una soluci&#180;on no divergente. </P><P>Es importante comprender el funcionamiento de los algoritmos de optimizaci&#180;on debido a que la elecci&#180;on de uno u otro proporcionar&#180;&#305;a diferentes resultados. El modelo de Gradiente Descendente (GD) es ampliamente usado en Machine Learning, tanto para Redes Neuronales, como para el algoritmo de Ada Boost. El algoritmo GD se explica en el anexo de Definiciones Matem&#180;aticas. </P><P>Existen diferentes variantes de este algoritmo, la que se utilizar&#180;a para el aprendizaje de la Red Neuronal es la variante ADAM (Adaptive Moment Estimation), que consiste en el algoritmo de gradiente descendiente, pero en el que la tasa de aprendizaje &#951; se adapta (cambia) en funci&#180;on de los primeros momentos del gradiente.El algoritmo ADAM se explica en el anexo de Definiciones Matem&#180;aticas. </P><P>Los avances en optimizaci&#180;on, en espec&#180;&#305;fico, la funci&#180;on de costo CE, la funci&#180;on de activaci&#180;on ReLU y el algoritmo ADAM han generado un avance en la Inteligencia Artificial en los &#180; nos.</P><P>ultimos a&#732; </P><P>La Regresi&#180;on Logit, ayudar&#180;a a mostrar c&#180;omo las diferentes definiciones presentadas se pueden unir para encontrar los mejores par&#180;ametros de un modelo. El modelo b&#180;asico de regresi&#180;on, se podr&#180;a definir de la siguiente forma: </P><P>n</P><P></P><P>y&#710;(&lt;x1, ..., xn &gt;)= wixi + &#952; (1.14) i=1 </P><P>Posteriormente, se podr&#180;a aplicar alguna de las funciones de costo, usualmente la de ECM y utilizar un algoritmo de optimizaci&#180;on para encontrar los mejores par&#180;ametros. Este tipo de an&#180;alisis se suele llamar modelo obtenido por m&#180;&#305;nimos cuadrados cuando se utiliza ECM. Es importante resaltar, como se ha mencionado, que los resultados del modelo cambiar&#180;an de acuerdo al algoritmo de optimizaci&#180;on, la funci&#180;on de costo y la funci&#180;on de activaci&#180;on seleccionados. En el caso de que se le aplique al resultado de la regresi&#180;on la funci&#180;on &#966; sigmoidal (lo cual har&#180;a que el resultado se encuentre entre cero y uno), entonces se dir&#180;a que se cuenta con modelo de regresi&#180;on Logit, pero por ser un modelo de clasificaci&#180;on y no de regresi&#180;on, entonces se tendr&#180;a que usar la funci&#180;on de costo CE. </P><P>En una regresi&#180;on se busca minimizar el error del modelo obteniendo los wi &#180;optimos con un algoritmo de optimizaci&#180;on, usualmente M&#180;&#305;nimos Cuadrados4 . En las redes neuronales sucede lo mismo (Br&#180;&#305;o, 2007), pero cada neurona va fragmentando el error total del modelo en las m&#180;ultiples neuronas paso a paso por un orden de atr&#180;as hacia adelante. Es por ello, que el nombre del algoritmo m&#180;as usual para el aprendizaje de las redes neuronales es llamado Back Propagation. </P><Figure><ImageData src=""/><Caption><P>Figura 1.3: Ejemplo de una red neuronal de 2 capas ocultas. Fuente: Elaboraci&#180;on propia con datos simulados (ver anexo). </P></Caption></Figure><P>En la Figura 1.3 se puede observar el modelo descrito en la Definici&#180;on B.3.1. En este caso, dos entradas de informaci&#180;on (x1,x2) pasan a una capa de siete neuronas que procesa la informaci&#180;on por medio de una funci&#180;on g1 y pasa la informaci&#180;on a la capa dos con cuatro neuronas. Por ultimo, una capa de una</P><P>&#180; neurona recibe la informaci&#180;on de la capa dos para proporcionar el resultado final. </P><P>Este tipo de par&#180;ametros de aprendizaje (n&#180;umero de capas, tasa de aprendizaje, funciones de activaci&#180;on para cada capa o funci&#180;on de costo) son llamados hiperpar&#180;ametros y, por medio de varios experimentos se proponen valores que generen mejores resultados de la red neuronal. </P><P>Las m&#180;aquinas de soporte vectorial (SVM por sus siglas en idioma ingl&#180;es) se basan en encontrar fronteras (planos) multidimensionales que dividen a un conjunto de puntos en el espacio. Se busca un plano de tal forma que los puntos que se encuentran de un lado (C1) u otro (C2) de &#180;el tengan caracter&#180;&#305;sticas diferentes, esto es, que la distancia entre uno u otro conjunto de datos sea la m&#180;as </P><P>4Existe otro algoritmo para encontrar los par&#180;ametros de una regresi&#180;on (m&#180;axima verosimilitud) pero no ser&#180;a mencionado en este p&#180;arrafo debido a que lo que se quiere mostrar es la relaci&#180;on del algoritmo de m&#180;&#305;nimos cuadrados de una regresi&#180;on con el algoritmo de aprendizaje de una red neuronal. </P><Figure><ImageData src=""/><Caption><P>Figura 1.4: Clasificaci&#180;on lineal con una Maquina de Soporte Vectorial para dos clases (rojo y verde). Fuente: Elaboraci&#180;on Propia en lenguaje R con datos simulados. </P></Caption></Figure><P>grande posible. Ser&#180;a conveniente tomar a cada registro de la muestra como un punto en el espacio multidimensional, en donde cada caracter&#180;&#305;stica (columna de la tabla muestra) ser&#180;a una dimensi&#180;on. En el anexo de Definiciones Matem&#180;aticas se explica a detalle su funcionamiento. </P><P>En la Figura 1.4 se pueden observar planos que buscan dividir dos conjuntos de datos (rojos y verdes) y en la Figura 1.5 se puede apreciar la aplicaci&#180;on del Kernel Gaussiano para dividir las dos clases de forma no lineal. </P><Sect><H3>1.3. M&#180;etricas de efectividad de los modelos </H3><P>Para medir la efectividad de los modelos, ser&#180;a preciso entrenarlos con un conjunto elegido aleatoriamente (llamado train set) y probarlo con un conjunto de prueba (test set). De acuerdo con (Hamstra y Zaharia, 2013) y (Br&#180;&#305;o, 2007) se usar&#180;a un muestreo aleatorio simple y una proporci&#180;on de 0,7 vs 0,3 respectivamente que es lo que usualmente se considera apropiado. </P><P>Como ser&#180;an evaluados diferentes modelos, ser&#180;a necesario medir la efectividad de ellos por medio de m&#180;etricas. En concreto, utilizaremos la matriz de confusi&#180;on y la curva ROC (SAS, 2011) que es una representaci&#180;on gr&#180;afica de la matriz de confusi&#180;on. Cabe se&#732;nalar que la matriz de confusi&#180;on aporta mayor valor si se discuten y analizan sus resultados. </P><P>La matriz de confusi&#180;on se compone de cuatro elementos que, al analizarlos podremos definir qu&#180;e tan bueno es un modelo para los prop&#180;ositos que necesitamos. Estos cuatro elementos se pueden apreciar en la Tabla 1.1. </P><P>Dependiendo del fen&#180;omeno a modelar, ser&#180;an m&#180;as valiosos los verdaderos negativos o los verdaderos positivos. Por ejemplo, si se trata de pronosticar la subida de una acci&#180;on, nos interesa ser adversos al riesgo, centraremos la atenci&#180;on en los falsos positivos; En el caso de un modelo que pronostique una enfermedad </P><Figure><ImageData src=""/><Caption><P>Figura 1.5: Clasificaci&#180;on no lineal con una Maquina de Soporte Vectorial para dos clases (rojo y verde) con un kernel Gaussiano. Fuente: Elaboraci&#180;on Propia en lenguaje R con datos simulados. </P></Caption></Figure><Table><TR><TH/><TH>Predicho Clase 1 </TH><TH>Predicho Clase 2 </TH></TR><TR><TD>Real Clase 1 </TD><TD>Verdaderos Positivos (vp) </TD><TD>Falsos Negativos (fn) </TD></TR><TR><TD>Real Clase 2 </TD><TD>Falsos Positivos (fp) </TD><TD>Verdaderos Negativos (vn) </TD></TR></Table><P>Tabla 1.1: Relaci&#180;on de resultados entre lo predicho y el conocido real. mortal que se pueda prevenir, nos interesar&#180;an los verdaderos positivos y los falsos </P><Table><TR><TH>negativos. </TH></TR><TR><TH>En espec&#180;&#305;fico, se utilizar&#180;an las siguientes m&#180;etricas: </TH></TR><TR><TH>Definici&#180;on 1.3.1 M&#180;etricas de efectividad de modelos de clasificaci&#180;on </TH></TR><TR><TH>1. Precision (Precisi&#180;on) </TH></TR><TR><TH>P </TH><TD>= </TD><TD>vp vp + fp </TD><TD>(1.15) </TD></TR><TR><TH>2. Recall (Sensibilidad, tambi&#180;en llamado True Positive Rate o TPR) </TH><TD/></TR><TR><TH>T P R = </TH><TD>vp vp + fn </TD><TD>(1.16) </TD></TR><TR><TH>3. Accuracy (Exactitud o tambi&#180;en llamado Efectividad) </TH><TD/></TR><TR><TH>A = </TH><TD>vp + vn vp + fn + fp + vn </TD><TD>(1.17) </TD></TR><TR><TH>4. Specificity (Especificidad) </TH><TD/></TR><TR><TH>vn </TH><TD/></TR><TR><TH>S </TH><TD>= </TD><TD>vn + fp </TD><TD>(1.18) </TD></TR></Table><P>5. f1 </P><P>2vp </P><P>f1 = (1.19)</P><P>2vp + fp + fn </P><P>6. False Positive Rate (FPR) </P><P>fp </P><P>FPR = (1.20)</P><P>fp + vn </P><P>La Precisi&#180;on es adecuada cuando se requiere hacer &#180;enfasis en los verdaderos positivos no importando que los verdaderos negativos sean elevados. Un ejemplo para usar este tipo de m&#180;etricas sobre de otras es el pron&#180;ostico de si un caballo ganar&#180;a o no una carrera. En este caso es importante saber si el caballo elegido por el modelo ganar&#180;a o no y no nos preocupa que el caballo gane si no fue pronosticado que ganar&#180;a por el modelo. En el caso del uso del Recall (en el mismo ejemplo de la apuesta a los caballos), pude que adem&#180;as de precisi&#180;on, sea requerido volumen de carreras acertadas correctamente, es por ello que se adhiere fn a la ecuaci&#180;on, de esta forma se podr&#180;&#305;a apostar tambi&#180;en por los caballos que pierden. En el caso de la m&#180;etrica de Exactitud, se tiene una idea global del resultado del modelo, pero esto no necesariamente es adecuado a tomar en cuenta debido a que depende de la aplicaci&#180;on del modelo si es necesario m&#180;as precisi&#180;on o sensibilidad. </P><P>Cuando se toma en cuenta la m&#180;etrica de Especificidad, se requiere que el modelo no pronostique una gran cantidad de fp. Por ejemplo, en caso de que se pronostique que un fraude ocurrir&#180;a o no, ser&#180;a necesario que los fp sean los menos posibles para no perder recursos investigando casos que no ser&#180;an fraude. </P><P>En el caso de la m&#180;etrica f1, se busca combinar la Precisi&#180;on con la Exactitud dando m&#180;as peso a los verdaderos positivos multiplicando por dos y esto es adecuado para aplicaciones en las que la Precisi&#180;on es necesaria pero sin dejar de lado la Exactitud. </P><P>Para modelos que no son de clasificaci&#180;on existen diferentes m&#180;etricas. Se considera apropiado mostrar las m&#180;as importantes. La m&#180;etrica R2 es ampliamente usada y se basa en el hecho de que una menor variabilidad de los datos pronosticados har&#180;a un mejor modelo: </P><P></P><P>n </P><P>(&#710;yi &#8722; &#181;)2 </P><P>R2 i=1</P><P>= (1.21)</P><P>n </P><P>(yi &#8722; &#181;)2 </P><P>i=1 en donde &#181; es el promedio de las yi y su versi&#180;on modificada (promedio por elemento de la muestra): </P><P>n &#8722; 1 </P><P>R&#710;2 =1 &#8722; (1 &#8722; R2) (1.22) </P><P>n &#8722; M &#8722; 1 en donde M es el n&#180;umero de variables explicativas. Estas m&#180;etricas son usadas en modelos de regresi&#180;on lineal, pero en modelos m&#180;as avanzados, se ha usado en </P><P>mayor medida la propia funci&#180;on de costo que en el caso de modelos de regresi&#180;on puede ser el ECM. </P><P>Otra m&#180;etrica para modelos de clasificaci&#180;on ampliamente usada es el &#180;&#305;ndice de Gini que se ha mostrado en la f&#180;ormula 1.3. En el algoritmo de aprendizaje de Ada Boost se ha usado este &#180;&#305;ndice para encontrar el mejor modelo dentro de un conjunto de modelos. En el caso del &#180;&#305;ndice de Gini, el modelo con el menor &#180;&#305;ndice ser&#180;a el mejor debido a que representa una medida de incertidumbre. Sin embargo, se recomienda contrastar diferentes m&#180;etricas para elegir el mejor modelo. </P><P>Por otra parte, el &#180;</P><P>area bajo la curva de la ROC (Receiver Operating Characteristic) nos ayudar&#180;a a vislumbrar la efectividad del modelo. Cuando esta medici&#180;on converge a uno, se dir&#180;a que el modelo predice todos los eventos propuestos. </P><P>La curva ROC representa de forma gr&#180;afica el Accuracy del modelo, esto es, el &#180;</P><P>area bajo la curva es igual al Accuracy. Para graficar la curva ROC, se tienen que unir los puntos resultantes de Recall en el eje vertical y FPR en el eje horizontal a medida que el resultado del modelo va dejando valores de entre cero y uno. Por ejemplo, cuando el modelo predice que el cliente tomar&#180;a un cr&#180;edito con un puntaje de 0.8, entonces se calcula la Recall y la FPR para los clientes que el modelo calcul&#180;o con ese puntaje. </P><P>Definici&#180;on 1.3.2 (Curva ROC) La curva ROC para una muestra de tama&#732;no n es calculada con la siguiente funci&#180;on de R &#8594; R2: </P><P></P><P>nn</P><P>I({y =&#824; y,&#710; y&#710; &lt;l}) I({y = y,&#710; y&#710; &lt;l})</P><P>i=1 i=1</P><P>ROC(l)= 1 &#8722; , 1 &#8722; (1.23)</P><P>nn</P><P>I(y &#824;= y&#710;) I(y = y&#710;)</P><P>i=1 i=1 </P><P>en donde l es un n&#180;umero en [0, 1] que es en donde se encontrar&#180;a la respuesta de la funci&#180;on &#966;. La funci&#180;on caso I({a, b}) ser&#180;a uno s&#180;&#305; se cumplen las hip&#180;otesis a y b y cero en otro caso. </P><Sect><H3>1.4. Metodolog&#180;&#305;as para la aplicaci&#180;on de modelos </H3><P>Para aplicar un modelo, ser&#180;a necesario seguir una metodolog&#180;&#305;a. Para ello, fue seleccionada la metodolog&#180;&#305;a SEMMA de SAS (SAS, 2011). La cual pretende ser una gu&#180;&#305;a para generar modelos debido a que es la metodolog&#180;&#305;a que toma los principales pasos de las otras dos metodolog&#180;&#305;as de las que se hablar&#180;a m&#180;as adelante. Los pasos de la metodolog&#180;&#305;a SEMMA son: </P><L><LI><Lbl>1. </Lbl><LBody>Sampling: Se refiere a la selecci&#180;on de la muestra de train set y test set y propone una selecci&#180;on de las variables para ingesta en el modelo. </LBody></LI><LI><Lbl>2. </Lbl><LBody>Explore: Explorar los datos de forma descriptiva para poder generar hip&#180;otesis que nos ayuden a quitar datos redundantes y se pueda aplicar el siguiente paso. </LBody></LI><LI><Lbl>3. </Lbl><LBody>Modify: Se refiere a los cambios que deben aplicarse a las variables para que sean m&#180;as entendibles para el algoritmo; por ejemplo, utilizar variables sint&#180;eticas. </LBody></LI><LI><Lbl>4. </Lbl><LBody>Model: Aplicar diferentes modelos a los datos y obtener sus resultados. </LBody></LI><LI><Lbl>5. </Lbl><LBody>Asses: Este paso consiste en evaluar varios modelos con los indicadores de eficiencia como los mostrados en este texto (matriz de confusi&#180;on). </LBody></LI></L><P>Si bien, existen muchas otras metodolog&#180;&#305;as, la mayor&#180;&#305;a coincide en los pasos y solo difieren unas de otras en el orden para aplicarlos como se precisa en la metodolog&#180;&#305;a Box y Jenkins (Apodaca, 2014) y (Sarkar, 2012). La metodolog&#180;&#305;a Box y Jenkins fue elaborada en el a&#732;no 1960 y sigue los siguientes pasos: </P><L><LI><Lbl>1. </Lbl><LBody>Identificaci&#180;on: Seleccionar un modelo apropiado con base en las caracter&#180;&#305;sticas estad&#180;&#305;sticas de las variables. </LBody></LI><LI><Lbl>2. </Lbl><LBody>Estimaci&#180;on: Encontrar los par&#180;ametros que permitan al modelo representar con mayor detalle el fen&#180;omeno. </LBody></LI><LI><Lbl>3. </Lbl><LBody>Verificaci&#180;on: Que el modelo cumpla con su objetivo y que represente de forma deseada el modelo. </LBody></LI><LI><Lbl>4. </Lbl><LBody>Uso del modelo: Implementar el modelo, obtener resultados y analizarlos. </LBody></LI></L><P>Otra metodolog&#180;&#305;a usada para la aplicaci&#180;on de un modelo es la llamada CRISP-DM (Cross Industry Standard Process for Data Mining) la cual pretende ser un est&#180;andar para aplicar modelos en &#180;areas de Miner&#180;&#305;a de Datos (EspinosaZ&#180;u&#732;niga, 2020). Esta metodolog&#180;&#305;a Europea es creada en el a&#732;no 1997, por el Programa de Investigaci&#180;on y Desarrollo en Tecnolog&#180;&#305;as de Informaci&#180;on de la Uni&#180;on Europea (ESPRIT) y consiste de los siguientes pasos: </P><L><LI><Lbl>1. </Lbl><LBody>Comprensi&#180;on del problema: Identificaci&#180;on del problema, determinaci&#180;on de objetivos y evaluaci&#180;on de la situaci&#180;on actual (estado actual antes de implementar la soluci&#180;on de miner&#180;&#305;a de datos propuesta). </LBody></LI><LI><Lbl>2. </Lbl><LBody>Comprensi&#180;on de los datos: Recolecci&#180;on de datos, descripci&#180;on de datos y exploraci&#180;on de datos. </LBody></LI><LI><Lbl>3. </Lbl><LBody>Preparaci&#180;on de datos: Limpieza de datos, creaci&#180;on de variables sint&#180;eticas y transformaci&#180;on de datos. </LBody></LI><LI><Lbl>4. </Lbl><LBody>Modelado: Selecci&#180;on de t&#180;ecnica de modelado, selecci&#180;on de datos de prueba y ajuste del modelo. </LBody></LI><LI><Lbl>5. </Lbl><LBody>Evaluaci&#180;on del modelo: Determinar la calidad del modelo con base en el an&#180;alisis de ciertas m&#180;etricas estad&#180;&#305;sticas, comparando los resultados con resultados previos. </LBody></LI><LI><Lbl>6. </Lbl><LBody>Implementaci&#180;on del modelo: Documentaci&#180;on de los resultados para el usuario final. Evaluar las acciones para detectar &#180;</LBody></LI></L><P>areas de oportunidad. </P><P>En el caso de la metodolog&#180;&#305;a CRISP-DM se propone una metodolog&#180;&#305;a c&#180;&#305;clica en la que la evaluaci&#180;on de los resultados de la implementaci&#180;on permite generar nuevas ideas para poder generar nuevos modelos o repensar los ya existentes. Cabe se&#732;nalar, que en la metodolog&#180;&#305;a CRISP-DM, se propone comprender el problema para delimitar la aplicaci&#180;on y responder mejor a las necesidades del negocio. Este paso no es mencionado en la metodolog&#180;&#305;a Box y Jenkins debido a que es m&#180;as enfocada al concebimiento de un modelo que surge de una necesidad ya existente. Por otra parte, la documentaci&#180;on del modelo es parte de un proceso que ayudar&#180;a al usuario a comprender c&#180;omo funciona la herramienta y supone que el modelo debe ser parte de un ecosistema en el que el generador del modelo est&#180;e en contacto con el usuario para mejorar la aplicaci&#180;on del modelo. </P><Sect><H3>1.5. Herramientas de software utilizadas </H3><P>Cuando las computadoras empezaron a generar y guardar datos de forma m&#180;as eficiente que antes, las empresas que generaban grandes cantidades de informaci&#180;on se encontraron con el problema de aplicar algoritmos o consultas a sus datos debido a la limitada capacidad de procesamiento de las computadoras de escritorio o servidores peque&#732;nos (Jules, 2019). </P><P>Una de las soluciones encontradas y que se ha generalizado su uso, es el c&#180;omputo distribuido que pretende relevar m&#180;ultiples tareas a un conjunto de procesadores en lugar de usar un solo procesador (Jules, 2019) y (Caballero, 2018). </P><P>Si bien, esta tecnolog&#180;&#305;a existe desde hace decenas de a&#732;nos; las grandes corporaciones han puesto a disposici&#180;on del usuario los grandes servidores con que cuentan para mejorar la eficiencia de los algoritmos. Esto es, es posible pensar, que no es una soluci&#180;on al problema de eficiencia en el almacenamiento o procesamiento de un CPU5 , en cambio, multiplicar el n&#180;umero de unidades de CPU que realizan una tarea (Jules, 2019). </P><P>En el medio computacional (Google, IBM o Microsoft) sigue sin respuesta consensuada la pregunta de qu&#180;e es Big Data, como se precisa en (Davenport, 2014). </P><P>Sin embargo, existe un consenso en que debe de tratarse de un conjunto de t&#180;ecnicas enfocadas a solucionar problemas que no se pueden resolver en un servidor o equipo personal com&#180;un por temas de capacidad de memoria o tiempo (Jules, 2019) y (Caballero, 2018). Adem&#180;as, se pueden a&#732;nadir otras especificaciones como variedad de datos que son formatos o estructuras dif&#180;&#305;ciles de registrar debidamente en bases de datos convencionales (im&#180;agenes, sonido, texto, etc.)6 . </P><P>Ya que se cuenta con la capacidad de c&#180;omputo suficiente para trabajar con grandes vol&#180;umenes de datos, es preciso encontrar software que trabaje de forma distribuida. </P><P>El software pionero en popularizar estos temas fue Hadoop creado por la empresa Google. Sin embargo, Spark ha generado mejoras sustanciales y es </P><P>5CPU son las siglas de: Central Processing Unit 6Es conocido en el medio las tres V: velocidad, variedad y volumen (Davenport, 2014). </P><Figure><ImageData src=""/><Caption><P>Figura 1.6: Ecosistema de las herramientas que se pueden utilizar en Spark. Fuente: (Eman, 2019). </P></Caption></Figure><P>mucho m&#180;as f&#180;acil de usar (a opini&#180;on del autor de este texto) que Hadoop (Jules, 2019). Adem&#180;as, es el software con el que se contaba y es con el que trabajan Datio, DataBricks y Horton. </P><P>Entre los algoritmos de Big Data m&#180;as conocidos, se encuentra Map and Reduce, creado y patentado por Google, el cual mapea una tarea y la reduce en peque&#732;nas tareas que le asigna a cada procesador. Como ejemplo, sup&#180;ongase que se requiere conocer el saldo total de todas las cuentas de todos los clientes de un banco en el menor tiempo posible. El algoritmo de Map and Reduce tomar&#180;a conjuntos de n registros de forma ordenada y a cada conjunto le asignar&#180;a un id nodo (identificador &#180;</P><P>unico de cada nodo) dependiendo del nodo al que se le asignar&#180;a la tarea (Map). Cada conjunto de datos se trasladar&#180;a a cada nodo (CPU) con que cuente el servidor. Cada nodo, sumar&#180;a los saldos de los clientes que le fueron asignados y devolver&#180;a el resultado. Posteriormente, se sumar&#180;an los resultados obtenidos en cada nodo (Reduce). </P><P>La principal diferencia entre Spark y Hadoop, es que Spark trabaja inmemori y no escribe la informaci&#180;on distribuida en los discos duros de cada servidor del sistema distribuido; esto permite una ganancia sustancial en tiempo. </P><P>Por otra parte, es posible programar en los lenguajes de programaci&#180;on R, SCALA y Python (Bill, 2017). Lo cual hace de Spark, la plataforma de Big Data m&#180;as usada hasta el momento. Para mayor detalle de Spark, se pueden obtener los manuales que se encuentran en su sitio web (spark.apache.org, 2021). </P><P>En la Figura 1.6 se puede apreciar que Spark cuenta con herramientas para trabajar los datos en forma distribuida, pero con los lenguajes m&#180;as comunes. Por ejemplo, Java, R, SQL o Python. Por otra parte, permite, que Bibliotecas de manejo de datos o de Machine Learning sean programadas en estos lenguajes como MLlib que permitir&#180;a programar en Python modelos de Machine Learning pero haciendo el procesamiento en un ambiente distribuido. </P><P>En la Figura 1.7, se presenta una descripci&#180;on del procesamiento interno de Spark, se programa en un lenguaje (Python, Scala, R, etc.) una aplicaci&#180;on, despu&#180;es, el m&#180;odulo de Spark Context, traduce ese programa en algoritmos Map and Reduce y lleva este procesamiento al Cluster Manager quien asigna tareas ordenadas y recibe las respuestas de cada Nodo ordenando la informaci&#180;on. </P><Figure><ImageData src=""/><Caption><P>Figura 1.7: Descripci&#180;on del funcionamiento distribuido de Spark. Fuente: (Eman, 2019). </P></Caption></Figure><P>Cap&#180;&#305;tulo 2 </P></Sect></Sect></Sect></Sect></Sect></Part><Part><H1>Marco Metodol&#180;ogico </H1><P>A continuaci&#180;on, se seguir&#180;an los pasos propuestos por la metodolog&#180;&#305;a SEMMA, por lo cual, las subsecciones seguir&#180;an el orden de la metodolog&#180;&#305;a y tendr&#180;an los respectivos nombres de las siglas de SEMMA. </P><Sect><H3>2.1. Sampling </H3><P>Los datos proporcionados y publicados a los participantes del Hackathon fueron usados por el autor para generar el modelo1 . Los datos proporcionados son descritos en la Tabla 2.1. </P><P>Si bien, como se precisa en (BBVA, 2021), se plantean diferentes problemas a resolver; Se eligi&#180;o el problema de encontrar un clasificador para las PyMES para saber si necesitan o no un cr&#180;edito revolvente (propensi&#180;on al cr&#180;edito revolvente) ya que esta fue la soluci&#180;on que se construy&#180;o y qued&#180;o en producci&#180;on en la empresa BBVA. </P><P>El total de registros es de 45,7182 y difieren de los datos entregados al Hackaton debido a que los desarrolladores del evento cambiaron algunos campos para poder hacer la tabla m&#180;as entendible para el p&#180;ublico en general. El autor de este texto, quien fue responsable de crear la tabla, se da la libertad de mejorarla con la experiencia adquirida en los &#180; as</P><P>ultimos meses. A saber, los cambios m&#180; importantes son, quitar el C&#180;odigo Postal y las ofertas hasta ese momento. En cambio, se agreg&#180;o la liquidez del cliente. </P><P>Sin embargo, debido a que este dato no forma parte de la tabla original, solo se har&#180;a menci&#180;on al campo y no se evaluar&#180;an sus descriptivos. Cabe se&#732;nalar que la variable Y fue incluida por el autor para el reto Hackaton pero fue quitada por los desarrolladores por razones de mala comunicaci&#180;on. </P><P>1Para el modelo final, el autor contaba con m&#180;as campos que ayudaron al desempe&#732;no del modelo. Sin embargo, no se pueden mostrar debido a la protecci&#180;on de secretos industriales. </P><P>2La tabla original presentada en el Hackaton ten&#180;&#305;a 60,048 registros, esta nueva tabla es un subconjunto de la original. </P><Table><TR><TD>Campo </TD><TD>Valores </TD><TD>Descripci&#180;on </TD></TR><TR><TD>NU-CTE </TD><TD>1-45,717 </TD><TD>N&#180;umero aleatorio para no mostrar datos confidenciales </TD></TR><TR><TD>Y </TD><TD>0,1 </TD><TD>Variable Objetivo (tiene cr&#180;edito en los pr&#180;oximos 3 meses) 1 si tiene cr&#180;edito 0 caso contrario. </TD></TR><TR><TD>IMY </TD><TD>0-14,000,000 </TD><TD>Variable Objetivo Monto en pesos Mexicanos (tiene cr&#180;edito en los pr&#180;oximos 3 meses) </TD></TR><TR><TD>MONTO-EXP </TD><TD>0-14,000,000 </TD><TD>Monto en pesos Mexicanos de Cr&#180;editos simples que se le han otorgado en 12 meses </TD></TR><TR><TD>CREDIS-EXP </TD><TD>0-15 </TD><TD>N&#180;umero de cr&#180;editos simples en 12 meses que se le han otorgado </TD></TR><TR><TD>MoraTarj </TD><TD>0-1 </TD><TD>Atraso de m&#180;as de 30 d&#180;&#305;as en tarjeta, 1 si cuenta cae en mora en ese rango de d&#180;&#305;as en el producto Tarjeta de Cr&#180;edito </TD></TR><TR><TD>MoraCS </TD><TD>0-1 </TD><TD>Atraso de m&#180;as de 30 d&#180;&#305;as en CS, 1 si cuenta cae en mora en ese rango de d&#180;&#305;as en el producto Cr&#180;edito Simple </TD></TR><TR><TD>SALIDAS-100 </TD><TD>0-2,019 </TD><TD>N&#180;umero de Salidas (cargos) de m&#180;as de 100 mil en un periodo de 3 meses </TD></TR><TR><TD>SALIDAS-300 </TD><TD>0-857 </TD><TD>N&#180;umero de Salidas (cargos) de m&#180;as de 300 mil en un periodo de 3 meses </TD></TR><TR><TD>SALIDAS-600 </TD><TD>0-746 </TD><TD>N&#180;umero de Salidas (cargos) de m&#180;as de 600 mil en un periodo de 3 meses </TD></TR><TR><TD>SALIDAS-1M </TD><TD>0-698 </TD><TD>N&#180;umero de Salidas (cargos) de m&#180;as de 1 M en un periodo de 3 meses </TD></TR><TR><TD>Liquidez-pyme </TD><TD>0-46M </TD><TD>Saldo en pesos Mexicanos con cuentas PyME </TD></TR><TR><TD>Liquidez-total </TD><TD>0-166M </TD><TD>Saldo en pesos Mexicanos en todas las cuentas </TD></TR><TR><TD>Bcom </TD><TD>0-1 </TD><TD>Canal digital , 1 si cuenta con acceso a banca en l&#180;&#305;nea, 0 otro caso </TD></TR><TR><TD>TDCN </TD><TD>0-1 </TD><TD>Tiene tarjeta, 1 si cuenta con tarjeta, 0 otro caso </TD></TR><TR><TD>TP-PERSONA </TD><TD>F,G,M </TD><TD>Tipo de persona SHCP F&#180;&#305;sica, Gobierno o Moral </TD></TR><Caption><P>Tabla 2.1: Breve descripci&#180;on de la tabla de datos proporcionada para generar el modelo. Fuente: Elaboraci&#180;on Propia. </P></Caption></Table><Figure><ImageData src=""/><Caption><P>Figura 2.1: Comparaci&#180;on del n&#180;umero de positivos antes (arriba) y despu&#180;es (abajo) del balanceo de la muestra. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><Sect><H3>2.2. Explore </H3><P>El primer paso para explorar los datos consiste en encontrar la proporci&#180;on de positivos versus negativos para poder balancear la muestra de aprendizaje y poder encontrar mejor las relaciones. Este paso es poco mencionado, pero es crucial para mejorar los modelos. No solo funciona para que los modelos de Machine Learning aprendan mejor, tambi&#180;en, para valorar mejor las relaciones entre las variables. Es por esto &#180;</P><P>ultimo, que es preciso desarrollar este paso primero. La l&#180;ogica detr&#180;as de este paso es que un modelo que aprende de una muestra con una proporci&#180;on de positivos muy peque&#732;na, por ejemplo, 1 %, aprender&#180;a que lo mejor es marcar cada registro como falso; obteniendo una efectividad del 99 %. En las Figura 2.1, se puede ver un comparativo de c&#180;omo queda la muestra cuando balanceamos las cargas de aprendizaje: </P><P>En este caso, se ha utilizado una proporci&#180;on de positivos del 20 %. Sin embargo, es necesario precisar, que la elecci&#180;on de las proporciones debe de hacerse con un ejercicio de prueba y error para alcanzar la mejor muestra de aprendizaje. El c&#180;odigo en Spark con Python para balancear la muestra queda de la siguiente forma: </P><P>1 A=df .filter (df.Y ==0) 2 B=df . filter (df.Y ==1) 3 tamb =B. count () 4 tama =tamb *(0.8/0.2) 5 propa = tama /(A. count ()) 6 (A1, A2) = A. randomSplit([1 -propa , propa]) 7 df2 = B. union(A2) </P><Figure><ImageData src=""/><Caption><P>Figura 2.2: Comparaci&#180;on del n&#180;umero de positivos antes del balanceo de muestra. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><P>C&#180;odigo 2.1: Balanceo de la muestra. Fuente: Elaboraci&#180;on propia. </P><P>Uno de los argumentos en contra de esta metodolog&#180;&#305;a es que reduce el tama&#732;no de la muestra. En las Figuras 2.2 y 2.3, se muestra un ejemplo de mejora en la obtenci&#180;on de correlaciones entre la variable objetivo y las variables de entrada usando el balanceo de la muestra. </P><P>En la Figura 2.3, podemos apreciar que las variables que m&#180;as se relacionan </P><P>con la variable Y (bajo el coeficiente de correlaci&#180;on de Pearson), son las variables </P><P>de salidas en los tres &#180; as si el cliente cuenta ya con unaultimos meses. Adem&#180; </P><P>tarjeta de cr&#180;edito o con la experiencia previa en el uso d cr&#180;edito se aprecia una </P><P>correlaci&#180;on m&#180;as alta con la variable Y. </P><P>Sin embargo, ser&#180;a necesario buscar otro tipo de relaciones basadas en distribuciones conjuntas. Una metodolog&#180;&#305;a para lograr esto es correr un algoritmo random forest en m&#180;ultiples ocasiones (se recomienda unas 500 ocasiones para este experimento debido a que si se corr&#180;&#305;a en m&#180;as ocasiones no se obten&#180;&#305;an cambios en los resultados, en cambio, s&#180;&#305; se corr&#180;&#305;a en menos ocasiones, se obten&#180;&#305;an variaciones en los resultados). Para poder obtener las mejores variables (las que m&#180;as explican Y) el algoritmo random forest (usando combinaciones aleatorias y la medida de ganancia de la informaci&#180;on) permitir&#180;a saber qu&#180;e variable o conjunto de variables son las m&#180;as importantes para predecir la variable objetivo Y. </P><P>Sin embargo, este proceso, por su naturaleza ser&#180;a presentado m&#180;as adelante. </P><P>No ser&#180;a necesario abundar m&#180;as sobre las relaciones entre variables, dejando de </P><P>lado temas como c&#180;opulas o la correlaci&#180;on de t de Kendal ya que se espera que los algoritmos aprendan sobre las relaciones entre las variables y nos muestren los resultados posteriormente3 . </P><Figure><ImageData src=""/><Caption><P>Figura 2.3: Comparaci&#180;on del n&#180;umero de positivos despu&#180;es del balanceo de muestra. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><P>En la Figura 2.4 se pueden observar las correlaciones gr&#180;aficamente. Sin embargo, no ser&#180;a necesario profundizar en el an&#180;alisis ya que la matriz de correlaciones dejar&#180;a m&#180;as informaci&#180;on que una inspecci&#180;on visual de las distribuciones conjuntas. Se puede ver que las variables de gastos y liquidez se encuentran altamente correlacionadas. En la diagonal de la matriz de dispersiones, se gr&#180;afica el histograma de cada variable. </P><P>Una forma adecuada de evaluar las relaciones entre las variables es genera un diagrama de &#180; on condicional, en donde se podr&#180; </P><P>arbol de decisi&#180; an encontrar las correlaciones condicionales entre las variables. Lamentablemente, este tipo de gr&#180;aficos, no pueden ser generados en todas las plataformas. Una de estas plataformas que no cuentan con la capacidad para graficarlos es Datio, por lo que se recurrir&#180;a al uso del lenguaje R para poder mostrar los beneficios de este diagrama en el an&#180;alisis de la informaci&#180;on. </P><P>En la Figura 2.5 se pueden apreciar las relaciones que ha construido el algoritmo con los datos de entrenamiento, debido a que el formato de salida de R cuenta con una letra peque&#732;na, no se puede apreciar el resultado de cada rama en la imagen de este texto, el lector interesado podr&#180;a ver la imagen en formato PDF y legible en (Apodaca, 2022). En la parte de abajo de la Figura 2.5 se puede apreciar una barra; cuando la barra tiene m&#180;as color oscuro que claro, se entender&#180;a que es m&#180;as probable obtener un cr&#180;edito. </P><P>En la Figura 2.6 se pueden apreciar las relaciones que ha construido el algoritmo con los datos de entrenamiento, pero en un nivel de acercamiento en el que podemos dimensionar y apreciar las relaciones entre las variables. Por </P><P>3Para mayor informaci&#180;on sobre medidas de dependencia se puede ver (Apodaca, 2014). </P><Figure><ImageData src=""/><Caption><P>Figura 2.4: Diagramas de dispersi&#180;on de las variables que se usaran en el modelo. Fuente: Elaboraci&#180;on propia. </P></Caption></Figure><Figure><ImageData src=""/><Caption><P>Figura 2.5: . Esbozo del resultado del &#180; on condicional generado</P></Caption></Figure><P>arbol de decisi&#180; en R, para ver el &#180;arbol de decisi&#180;on con mayor precisi&#180;on visitar el sitio web (Apodaca, 2022). </P><Figure><ImageData src=""/><Caption><P>Figura 2.6: . Acercamiento al &#180; on condicional generado en R. Fuen</P></Caption></Figure><P>arbol de decisi&#180; te: Elaboraci&#180;on Propia. </P><P>ejemplo, mientras m&#180;as salidas contra liquidez realice una PyME, m&#180;as probable ser&#180;a que requiera un pr&#180;estamo, pero esto depende de otras variables como mora </P><P>o experiencia en el producto como se muestra en los niveles m&#180;as altos del &#180;arbol </P><P>de decisi&#180;on. El c&#180;odigo utilizado para generar las Figuras 2.5 y 2.6 se encuentra </P><P>en el anexo. </P><P>Las relaciones encontradas en el &#180;</P><P>arbol condicional nos ayudaran a determinar qu&#180;e es lo que los algoritmos de Machine Learning est&#180;an aprendiendo de la informaci&#180;on proporcionada y c&#180;omo los patrones encontrados podr&#180;an traducirse en un futuro en informaci&#180;on para mejorar las estrategias de venta. Los patrones que ha encontrado el algoritmo de &#180;</P><P>arbol condicional son los siguientes: </P><L><LI><Lbl>1 </Lbl><LBody>1) TDCN &lt;= 0; </LBody></LI><LI><Lbl>2 </Lbl><LBody>2)* weights = 51843 </LBody></LI><LI><Lbl>3 </Lbl><LBody>1) TDCN &gt;0 </LBody></LI><LI><Lbl>4 </Lbl><LBody>3) Bcom &lt;= 0; </LBody></LI><LI><Lbl>5 </Lbl><LBody>4) CREDIS _EXP &lt;= 0; </LBody></LI><LI><Lbl>6 </Lbl><LBody>5) SALIDAS _100 &lt;= 7; </LBody></LI><LI><Lbl>7 </Lbl><LBody>6)* weights = 1348 </LBody></LI><LI><Lbl>8 </Lbl><LBody>5) SALIDAS _100 > 7 </LBody></LI><LI><Lbl>9 </Lbl><LBody>7)* weights = 159 </LBody></LI><LI><Lbl>10 </Lbl><LBody>4) CREDIS _EXP > 0 </LBody></LI><LI><Lbl>11 </Lbl><LBody>8)* weights = 32 </LBody></LI><LI><Lbl>12 </Lbl><LBody>3) Bcom &gt;0 </LBody></LI><LI><Lbl>13 </Lbl><LBody>9) CREDIS _EXP &lt;= 0; 14 10) SALIDAS _100 &lt;= 0; </LBody></LI></L><P>15 11) Liquidez _total &lt;= 175107.9; 16 12) CARGOS &lt;= 99561.87; </P><Table><TR><TH>17 </TH><TD>1 3 ) * w e i g h t s = 3 7 0 </TD></TR><TR><TH>18 </TH><TD>1 2 ) C A R G O S > 9 9 5 6 1 . 8 7 </TD></TR><TR><TH>19 </TH><TD>1 4 ) L i q u i d e z _ t o t a l &lt;= 2 3 7 8 3 . 2 9 ; </TD></TR><TR><TH>20 </TH><TD>1 5 ) * w e i g h t s = 1 0 2 9 </TD></TR><TR><TH>21 </TH><TD>1 4 ) L i q u i d e z _ t o t a l > 2 3 7 8 3 . 2 9 </TD></TR><TR><TH>22 </TH><TD>1 6 ) * w e i g h t s = 1 3 0 1 </TD></TR><TR><TH>23 </TH><TD>1 1 ) L i q u i d e z _ t o t a l > 1 7 5 1 0 7 . 9 </TD></TR><TR><TH>24 </TH><TD>1 7 ) * w e i g h t s = 2 5 7 </TD></TR><TR><TH>25 </TH><TD>1 0 ) S A L I D A S _ 1 0 0 > 0 </TD></TR><TR><TH>26 </TH><TD>1 8 ) L i q u i d e z _ p y m e &lt;= 8 8 4 6 0 7 . 2 ; </TD></TR><TR><TH>27 </TH><TD>1 9 ) S A L I D A S _ 1 0 0 &lt;= 6 ; </TD></TR><TR><TH>28 </TH><TD>2 0 ) S A L I D A S _ 3 0 0 &lt;= 1 ; </TD></TR><TR><TH>29 </TH><TD>2 1 ) L i q u i d e z _ p y m e &lt;= 3 0 3 4 7 4 ; </TD></TR></Table><Table><TR><TH>30 </TH><TD>2 2 ) * w e i g h t s = 2 2 8 5 </TD></TR><TR><TH>31 </TH><TD>2 1 ) L i q u i d e z _ p y m e > 3 0 3 4 7 4 </TD></TR><TR><TH>32 </TH><TD>2 3 ) * w e i g h t s = 1 5 5 </TD></TR><TR><TH>33 </TH><TD>2 0 ) S A L I D A S _ 3 0 0 > 1 </TD></TR><TR><TH>34 </TH><TD>2 4 ) * w e i g h t s = 2 4 8 </TD></TR><TR><TH>35 </TH><TD>1 9 ) S A L I D A S _ 1 0 0 > 6 </TD></TR><TR><TH>36 </TH><TD>2 5 ) * w e i g h t s = 4 6 7 4 </TD></TR><TR><TH>37 </TH><TD>1 8 ) L i q u i d e z _ p y m e > 8 8 4 6 0 7 . 2 </TD></TR><TR><TH>38 </TH><TD>2 6 ) * w e i g h t s = 8 8 3 </TD></TR><TR><TH>39 </TH><TD>9 ) C R E D I S _ E X P > 0 </TD></TR><TR><TH>40 </TH><TD>2 7 ) S A L I D A S _ 6 0 0 &lt;= 1 ; </TD></TR><TR><TH>41 </TH><TD>2 8 ) * w e i g h t s = 9 9 1 </TD></TR><TR><TH>42 </TH><TD>2 7 ) S A L I D A S _ 6 0 0 > 1 </TD></TR><TR><TH>43 </TH><TD>2 9 ) * w e i g h t s = 1 0 1 6 </TD></TR></Table><P>C&#180;odigo 2.2: Resultados de las relaciones entre variables por un &#180; on</P><P>arbol de decisi&#180; condicional. Fuente: Elaboraci&#180;on Propia. </P><P>El patr&#180;on m&#180;as fuerte (al tener la mayor ganancia de informaci&#180;on con base en el resultado de la f&#180;ormula uno) es el de experiencia previa del cliente con el uso de cr&#180;editos, se puede apreciar, que el uso de tarjeta previo, predispone al consumo futuro del cliente (ramas uno y nueve). </P><P>Posteriormente, otra variable ser&#180;a de gran ayuda para medir la propensi&#180;on del cliente a tomar un cr&#180;edito, pues una alta liquidez de un cliente (ramas 11, 14,18 y 21) muestran que, al aumentar la liquidez, el cliente ser&#180;a menos propenso a solicitar un cr&#180;edito. </P><P>Tambi&#180;en, el algoritmo detect&#180; ultimos</P><P>o que los gastos acumulados durante los &#180; meses pueden generar la necesidad de cr&#180;edito como se aprecia en las ramas que cuentan con salidas mayores a 600 mil, a 100 mil o con cargos en sus cuentas. </P><P>Una de las ventajas del uso de &#180; on condicional con respecto </P><P>arboles de decisi&#180; al an&#180;alisis de regresi&#180;on, es que para las regresiones se suele considerar que las variables usadas en el modelo tienen una relaci&#180;on lineal con la variable objetivo, en el caso de los &#180; on condicional, esto no es necesario. Adem&#180;</P><P>arboles de decisi&#180; as, se puede observar c&#180;omo estas variables interact&#180;uan de forma unida y no por separado para llegar a un resultado, por ejemplo, la experiencia previa del cliente con el uso de cr&#180;edito combinado con las salidas acumuladas mayores a 600 mil pesos durante tres meses como se aprecia en la rama 27. </P><P>Adem&#180;as, el algoritmo del &#180;arbol de decisi&#180;on condicional ha podido generar </P><P>1 2 3 </P><P>puntos de corte obtenidos con funci&#180;on de ganancia de informaci&#180;on cuando es m&#180;axima. De esta forma, se podr&#180;a asignar una estrategia comercial a cada tipo de cliente ya que un cliente que ha tenido muchos gastos en un periodo de tiempo y tiene poca liquidez, es diferente a un cliente que ha tenido los mismos gastos, pero mayor liquidez (en este caso, por mayor, o menos liquidez, se entender&#180;a que un cliente sobrepasa o no el punto de corte determinado por el algoritmo con base en la funci&#180;on de ganancia de la informaci&#180;on). </P><P>Otra de las ventajas de este algoritmo es que puede incluir informaci&#180;on categ&#180;orica o continua, adem&#180;as de poder trabajar con valores nulos en la informaci&#180;on, proporcionando una ventaja con respecto a otros algoritmos debido a que disminuye la cantidad de tiempo dedicado a limpiar o transformar los datos. </P><Sect><H3>2.3. Modify </H3><P>Para modificar los datos antes de entrenar los modelos con ellos, ser&#180;a preciso elegir las variables y transformarlos para una mejor efectividad. En concreto, no ser&#180;an seleccionadas las variables categ&#180;oricas, (tipo de persona y giro) por no mostrar una alta correlaci&#180;on. Sin embargo, se pueden incluir dentro de un experimento para poder validar con los resultados del modelo si fue efectivo o no el hecho de incluir la variable. Tambi&#180;en, se quitaron por tener poca efectividad con el an&#180;alisis de relaci&#180;on con la variable objetivo con un random forest que se mostrar&#180;a m&#180;as adelante. </P><P>En el caso de la transformaci&#180;on de datos, usaremos la estandarizaci&#180;on de la muestra; En concreto se trata de aplicar la siguiente f&#180;ormula a cada variable: </P><P>x1 &#8722; &#181; </P><P>x2 = (2.1)</P><P>&#963; En donde x1 es un valor de la variable x1 a transformar, x2 es el valor resultante. Los valores &#181; y &#963; son la media y desviaci&#180;on est&#180;andar de la variable x1 respectivamente Para aplicar estas transformaciones se puede usar el siguiente c&#180;odigo que es simple y se explica en (spark.apache.org, 2021) y (Bill, 2017): </P><P>from pyspark .ml. feature import StandardScaler </P><P># Normalizamos las variables standard _scaler = StandardScaler(inputCol =&#8217;features &#8217;, outputCol =&#8217; </P><P>standardized _features &#8217;) </P><P>C&#180;odigo 2.3: Aplicar la funci&#180;on standard a los campos para normalizarlos. Fuente: Elaboraci&#180;on Propia. </P><P>De esta forma, los resultados del modelo ser&#180;an m&#180;as precisos debido a que se estar&#180;an dimensionando los datos en una sola m&#180;etrica. Por ejemplo, no se comparar&#180;a monto de experiencia de cuatro millones contra la variable de tarjeta que arroja valores uno o cero. </P><P>Existen otras transformaciones que se pueden aplicar a los datos. Una recomendaci&#180;on ser&#180;a hacer pruebas en un mismo modelo cambiando estas transformaciones para elegir la m&#180;as adecuada. Las transformaciones que se pueden encontrar en las bibliotecas de Python y Spark (que generan menos errores al momento de enviar un dato transformado a los algoritmos de Tensor Flow debido a que se encuentran aceptadas y programadas en Spark), son las transformaciones de Box Cox y Yeo Jhonson (Weisberg, 2001). Las cuales se definen </P><P>de la siguiente forma: = </P><P>&#63729;&#63730;&#63731;</P><P>&#955;</P><P>y &#8722; 1</P><P>i if &#955; &#824;=0,</P><P>(&#955;) </P><P>(2.2)</P><P>y &#955;</P><P>i </P><P>ln yi if &#955; =0, </P><P>La funci&#180;on 2.2 es la transformaci&#180;on Box Cox del dato y, en donde &#955; es un n&#180;umero positivo que puede ser encontrado con un algoritmo de optimizaci&#180;on que busca como objetivo que la distribuci&#180;on sea lo m&#180;as estandarizada posible (media cero y mejor simetr&#180;&#305;a). Es preciso notar que esta transformaci&#180;on requiere que y sea positiva, lo cual ha propiciado el surgimiento de nuevas transformaciones que adicionan par&#180;ametros u operaciones para lograr esto; por ejemplo, sumar un n&#180;umero muy alto a y para asegurar que sea positiva. Sin embargo, una soluci&#180;on m&#180;as apropiada a este problema se encuentra en la transformaci&#180;on Yeo Jhonson: </P><P>= </P><P>&#63729;&#63732;&#63730;&#63732;&#63731;</P><P>((yi + 1)&#955; &#8722; 1)/&#955; if &#955; =&#824; 0,y &#8805; 0 log(yi + 1) if &#955; =0,y &#8805; 0 </P><P>&#8722;((&#8722;yi + 1)(2&#8722;&#955;) &#8722; 1)/(2 &#8722; &#955;) if &#955; =&#824; 2,y < 0 &#8722; log(&#8722;yi + 1) if &#955; =2,y < 0 (2.3)</P><P>(&#955;)</P><P>y</P><P>i </P><P>En donde &#955; es un par&#180;ametro que se puede encontrar con un algoritmo de optimizaci&#180;on, buscando que la distribuci&#180;on resultante sea lo m&#180;as estandarizada posible. Como ejemplo de la aplicaci&#180;on de estas transformaciones a los conjuntos de datos, se muestra en el C&#180;odigo 2.4 el cambio en las distribuciones de acuerdo </P><Table><TR><TH>a un experimento realizado en (scikit-learn, 2022): </TH></TR><TR><TH>1 </TH><TD>f r o m </TD><TD>s k l e a r n . p r e p r o c e s s i n g </TD><TD>i m p o r t </TD><TD>P o w e r T r a n s f o r m e r </TD></TR><TR><TH>2 </TH><TD>f r o m </TD><TD>s k l e a r n . p r e p r o c e s s i n g </TD><TD>i m p o r t </TD><TD>Q u a n t i l e T r a n s f o r m e r </TD></TR><TR><TH>3 </TH><TD>f r o m </TD><TD>s k l e a r n . m o d e l _ s e l e c t i o n </TD><TD>i m p o r t </TD><TD>t r a i n _ t e s t _ s p l i t </TD></TR><TR><TH>4 </TH><TD>bc </TD><TD>= </TD><TD>P o w e r T r a n s f o r m e r ( m e t h o d = &#8217; bo x -c o x &#8217; ) </TD></TR><TR><TH>5 </TH><TD>yj </TD><TD>= </TD><TD>P o w e r T r a n s f o r m e r ( m e t h o d = &#8217; ye o -j o h n s o n &#8217; ) </TD></TR><TR><TH/><TD>C&#180;odigo </TD><TD>2.4: </TD><TD>Aplicar </TD><TD>transformaciones </TD><TD>a </TD><TD>los </TD><TD>campos </TD><TD>para </TD><TD>obtener </TD><TD/><TD>mejores </TD></TR><TR><TH/><TD>resultados. </TD><TD>Fuente: </TD><TD>Elaboraci&#180;on </TD><TD>propia </TD><TD>con </TD><TD>las </TD><TD>funciones </TD><TD>de </TD><TD>la </TD><TD>librer&#180;&#305;a </TD></TR><TR><TH/><TD>PowerTransformer. </TD><TD/><TD/><TD/><TD/></TR><TR><TH/><TD>2.4. </TD><TD>Model </TD><TD/><TD/><TD/><TD/></TR></Table><P>Ha llegado el momento de modelar, esto es, aplicar modelos a los datos analizados y transformados. El primer modelo ser&#180;a una regresi&#180;on log&#180;&#305;stica, que corre con el C&#180;odigo 3.5 que funcionar&#180;a como base para los siguientes modelos. Este c&#180;odigo es generado f&#180;acilmente leyendo el manual de SPARK (spark.apache.org, 2021) y en donde se encontrar&#180;an m&#180;as detalles y modelos para probar. </P><P>Para poder encontrar cu&#180;ales son las caracter&#180;&#305;sticas de cada uno de los modelos se deben realizar m&#180;ultiples simulaciones de cada modelo con diferentes par&#180;ametros. Para hacer esto, se utiliz&#180;o la librer&#180;&#305;a GridSearchCV de Python que a cada posible combinaci&#180;on de par&#180;ametros entrena un modelo y &#180;este es probado en un n&#180;umero finito de muestras distintas del conjunto de validaci&#180;on (validaci&#180;on cruzada) y, de esta forma, calcula el promedio y la desviaci&#180;on est&#180;andar de una funci&#180;on de costo. Como se mencion&#180;o, este proceso puede tomar horas, d&#180;&#305;as, meses u a&#732;nos, dependiendo del n&#180;umero de par&#180;ametros que se requiera combinar para probar diferentes modelos. Los par&#180;ametros de los modelos presentados en este caso de estudio son el resultado de aplicar la librer&#180;&#305;a GridSearchCV de Python para encontrar el modelo que m&#180;as se adapte al fen&#180;omeno que se estudi&#180;o. El c&#180;odigo para realizar este ejercicio se muestra en el Anexo. </P><P>En el C&#180;odigo 2.5 se muestran las sentencias para entrena un modelo en un ambiente distribuido con el lenguaje Spark con el ejemplo de la Regresi&#180;on Log&#180;&#305;stica. Se puede observar que se ha definido un pipeline que permite ordenar los procesos que seleccionan y modifican los datos para despu&#180;es entrenar el modelo. De la misma forma se aplica el c&#180;odigo para los diferentes modelos mencionados anteriormente. Los resultados de los modelos se mostrar&#180;an en la siguiente secci&#180;on. </P><P>1 # Definimos el modelo: 2 log _reg = LogisticRegression(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217;Yfinal &#8217;) #recibe s f de la funcion normalizadora 3 #Generamos un vector (unimos todas las variables en una) para que Spark pueda correr el modelo </P><P>4 5 vectorAssembler = VectorAssembler(inputCols = 6 [&#8217; MONTO _EXP &#8217;,&#8217; CREDIS _EXP &#8217;,&#8217; MoraTarj &#8217;,&#8217;MoraCS &#8217;,&#8217;SALIDAS _100 &#8217;,&#8217; </P><P>SALIDAS _300 &#8217;,&#8217;SALIDAS _600 &#8217;,&#8217; 7 SALIDAS _1M &#8217;,&#8217;Liquidez _pyme &#8217;,&#8217; Liquidez _total &#8217;,&#8217;Bcom &#8217;,&#8217;TDCN &#8217;], </P><P>outputCol = &#8217;features &#8217;) </P><P>8 #Generamos una nueva tabla para ingestar al modelo </P><P>9 vdf = vectorAssembler .transform(df) </P><P>10 vdf = vdf .select([ &#8217;features &#8217;, &#8217;Yfinal &#8217;]) </P><P>11 #Dividimos la muestra en entrenamiento y en validaci n </P><P>12 (trainingData , testData) = vdf .randomSplit([0.7, 0.3]) </P><P>13 # Lo ponemos en cola de producci n en Pipeline </P><P>14 pipeline _log _reg = Pipeline(stages =[standard _scaler ,log _reg]) </P><P>15 #Entrenamos el modelo </P><P>16 pipeline _model _log _reg = pipeline _log _reg .fit(trainingData)3 ki </P><P>17 #Calificamos la muestra de test para validar el modelo </P><P>18 tarjeta _test _log _reg = pipeline _model _log _reg .transform(testData) </P><P>C&#180;odigo 2.5: C&#180;odigo en Spark para entrenar los modelos en un ambiente distribuido (ejemplo con la Regresi&#180;on Log&#180;&#305;stica). Fuente: Elaboraci&#180;on propia. </P><P>Los par&#180;ametros y funciones usadas para generar los modelos se muestran a continuaci&#180;on: </P><P>1 #Red Neuronal: 2 layers = [12 ,45 ,25 ,2] 3 MultilayerPerceptronClassifier ( featuresCol =&#8217; standardized _features &#8217;, </P><P>labelCol = &#8217;Yfinal &#8217;, </P><P>4 maxIter =100, layers =layers , 5 seed =1234 , ) 6 7 #Ada Boost : 8 GBTClassifier(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217;Yfinal </P><P>&#8217;, maxIter =10) </P><P>9 </P><P>10 # Arbol de decision : </P><P>11 DecisionTreeClassifier(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217;Yfinal &#8217;) </P><P>12 </P><P>13 # Random Forest : </P><P>14 RandomForestClassifier(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217;Yfinal &#8217;) </P><P>15 </P><P>16 #Regresi n Logistica: </P><P>17 LogisticRegression(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217; Yfinal &#8217;) </P><P>18 </P><P>19 #SVM : </P><P>20 LinearSVC(featuresCol =&#8217;standardized _features &#8217;, labelCol =&#8217;Yfinal &#8217;) </P><P>C&#180;odigo 2.6: Definici&#180;on de los modelos en SPARK. Fuente: Elaboraci&#180;on propia. </P><P>En el caso de la Red Neuronal, fue seleccionada una estructura descendente, esto es, las neuronas van disminuyendo capa a capa. Despu&#180;es de realizar diferentes experimentos, la efectividad del modelo no cambiaba con un aumento en el n&#180;umero de neuronas en cada capa, es por ello que se eligi&#180;o esta topolog&#180;&#305;a. </P><P>Para poder evaluar m&#180;as par&#180;ametros del modelo, ser&#180;a necesario evaluar diferentes escenarios. Para ello, se utiliz&#180;o la Biblioteca TensoFlow que proporciona facilidades para simular diferentes escenarios de una red neuronal. En el C&#180;odigo 2.7, se aprecia la definici&#180;on de una red neuronal de cuatro capas, con 12 entradas, y una salida, as&#180;&#305; como dos capas de 45 y 25 neuronas. </P><P>1 inputs = tf. keras .layers .Input(shape =(12)) # es el n mero de entradas </P><P>2 h1 = tf .keras .layers .Dense(45, activation =&#8217;relu &#8217;)(inputs) # capa </P><P>oculta 1 </P><P>3 h2 = tf .keras .layers .Dense(25, activation =&#8217;sigmoid &#8217;)(h1) # capa </P><P>oculta 2 </P><P>4 outputs = tf. keras .layers .Dense(1, activation =&#8217;sigmoid &#8217;)(h2) # </P><P>salidas </P><P>5 model = tf . keras . models . Model ( 6 inputs = inputs , 7 outputs = outputs ) 8 9 model .compile (optimizer =&quot;Adam &quot;, loss =&quot;binary _crossentropy &quot;, metrics =[ " acc &quot;]) </P><P>10 model . metrics _names </P><P>C&#180;odigo 2.7: Definici&#180;on de una red neuronal con la librer&#180;&#305;a Tensor Flow. Fuente: Elaboraci&#180;on propia&#8221;. </P><P>Tambi&#180;en se observa, c&#180;omo se puede definir la funci&#180;on de salida Sigmoidal o </P><P>ReLU para cada capa. Se ha elegido el m&#180;etodo de optimizaci&#180;on ADAM y se ha </P><P>seleccionado la funci&#180;on de costo CE. As&#180;&#305; mismo, es posible definir las m&#180;etricas para poder evaluar el modelo. En la Figura 2.7, ser&#180;a posible ver los resultados de cinco entrenamientos de la Red Neuronal con los par&#180;ametros previamente definidos. Se aprecia que, en este caso, que la efectividad del modelo queda en 0.85. </P><Figure><ImageData src=""/><Caption><P>Figura 2.7: Salida de c&#180;odigo al definirse una Red Neuronal multicapa. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><P>En la Figura 2.7, se puede apreciar c&#180;omo se generan cinco iteraciones de entrenamiento (repite el proceso de entrenamiento cinco ocasiones) con tres muestras aleatorias del grupo de entrenamiento. Este tipo de entrenamiento suele llamarse validaci&#180;on cruzada. </P><Sect><H3>2.5. Asses </H3><P>A continuaci&#180;on, se mostrar&#180;a en resumen las diferentes m&#180;etricas aplicadas a los modelos que fueron generados y aplicados a la muestra de prueba. En espec&#180;&#305;fico, se muestra el Recall, Precision, Efectividad y los valores de la matriz de confusi&#180;on, se muestra en la Tabla 2.2. </P><P>Se puede observar que los diferentes modelos muestran diferentes resultados. Si bien el Random Forest muestra la mejor efectividad tanto en valores positivos </P><P>o negativos, para el pron&#180;ostico de los valores de inter&#180;es (positivos) queda por &#180; </P><P>debajo de otros modelos como la Red Neuronal y el Arbol de decisi&#180;on. En este caso, buscamos un mejor Recall. Por otra parte, la Regresi&#180;on Log&#180;&#305;stica y la M&#180;aquina de Soporte Vectorial parecen ser un modelo promedio, pero se puede apreciar que es porque le da mayor peso a pronosticar los negativos que no son de inter&#180;es. </P><P>Para poder valorar mejor qu&#180;e modelo es m&#180;as preciso, se puede apreciar en la Figura 3.8 que la curva ROC proporciona un panorama visual que puede ayudar a mostrar la efectividad del modelo. </P><P>A continuaci&#180;on, se analizar&#180;an las curvas de los modelos puestos a prueba para compararlos. En el caso de la Red Neuronal y la SVM, no se generaron las curvas debido a que la versi&#180;on de Spark con la que se cuenta, no arroja el par&#180;ametro de probability que se encuentra en la salida del entrenamiento de los modelos y que representa el valor que el modelo le otorga al cliente para poder determinar si usar&#180;a cr&#180;edito o no. Sin embargo, se cuenta con las otras m&#180;etricas y no ser&#180;a necesaria su gr&#180;afica para poderla comparar con los otros modelos. </P><Table><TR><TH>Modelo </TH><TH>Random Forest </TH><TH>Ada Boost </TH><TH>Logit </TH><TH>Red Neuronal </TH><TH>&#180;Arbol Decisi&#180;on </TH><TH>SVM </TH></TR><TR><TH>Recall </TH><TD>0.7262 </TD><TD>0.7143 </TD><TD>0.754 </TD><TD>0.754 </TD><TD>0.7619 </TD><TD>0.6949 </TD></TR><TR><TH>Precision </TH><TD>0.7804 </TD><TD>0.7725 </TD><TD>0.751 </TD><TD>0.751 </TD><TD>0.7456 </TD><TD>0.7610 </TD></TR><TR><TH>Efectividad </TH><TD>0.9013 </TD><TD>0.8976 </TD><TD>0.8976 </TD><TD>0.8976 </TD><TD>0.8972 </TD><TD>0.8890 </TD></TR><TR><TH>Verdaderos Negativos </TH><TD>1834 </TD><TD>1831 </TD><TD>1864 </TD><TD>1811 </TD><TD>1806 </TD><TD>1810 </TD></TR><TR><TH>Falsos Negativos </TH><TD>138 </TD><TD>144 </TD><TD>138 </TD><TD>124 </TD><TD>120 </TD><TD>113 </TD></TR><TR><TH>Falsos positivos </TH><TD>103 </TD><TD>106 </TD><TD>73 </TD><TD>126 </TD><TD>131 </TD><TD>71 </TD></TR><TR><TH>Verdaderos positivos </TH><TD>366 </TD><TD>360 </TD><TD>366 </TD><TD>380 </TD><TD>384 </TD><TD>360 </TD></TR></Table><P>Tabla 2.2: Diferentes m&#180;etricas para evaluar los diferentes modelos puestos a prueba. Fuente: Elaboraci&#180;on Propia. </P><P>Se puede observar (curva azul) que la regresi&#180;on log&#180;&#305;stica genera mejor efectividad, pero cuenta con dificultades al momento de predecir a toda la poblaci&#180;on uniformemente (la curva azul se encuentra por debajo de las otras curvas cuando se aproxima a uno en el eje vertical); se observa que predice bien solo ciertos registros y otros no. Esto puede ser ocasionado por no contemplar la no-linealidad en este modelo. El c&#180;odigo para elaborar est&#180;a gr&#180;afica en Spark se muestra a continuaci&#180;on: </P><P>1 from pyspark .mllib .evaluation import BinaryClassificationMetrics 2 import matplotlib .pyplot as plt 3 class CurveMetrics(BinaryClassificationMetrics): 4 def __init __(self, *args): 5 super (CurveMetrics , self). __init __(*args) 6 def _to _list(self, rdd): 7 points = [] 8 for row in rdd .collect(): 9 points += [( float (row. _1()), float (row ._2()))] </P><P>10 return points </P><P>11 def get _curve(self, method): </P><P>12 rdd = getattr (self ._java _model , method)(). toJavaRDD() </P><P>13 return self ._to _list(rdd) </P><P>14 preds = tarjeta _test _log _reg .select( &#8217;Yfinal &#8217;,&#8217;probability &#8217;).rdd .map ( lambda row : </P><P>15 (float (row[ &#8217;probability &#8217;][1]), float (row[ &#8217;Yfinal &#8217;]))) </P><P>16 preds2 = tarjeta _test _rf .select( &#8217;Yfinal &#8217;,&#8217;probability &#8217;). rdd. map ( lambda row : </P><P>17 (float (row[ &#8217;probability &#8217;][1]), float (row[ &#8217;Yfinal &#8217;]))) </P><P>18 preds3 = tarjeta _test _tree .select( &#8217;Yfinal &#8217;,&#8217;probability &#8217;). rdd .map ( lambda row : </P><P>19 (float (row[ &#8217;probability &#8217;][1]), float (row[ &#8217;Yfinal &#8217;]))) </P><P>20 preds4 = tarjeta _test _gbt .select( &#8217;Yfinal &#8217;,&#8217;probability &#8217;).rdd .map ( lambda row : </P><P>21 (float (row[ &#8217;probability &#8217;][1]), float (row[ &#8217;Yfinal &#8217;]))) </P><P>22 preds5 = red _NN .select( &#8217;Yfinal &#8217;,&#8217;prediction &#8217;). rdd .map (lambda row: ( float (row[ &#8217;probability &#8217;][1]), </P><P>23 float ( row [ &#8217;Yfinal &#8217;]) )) </P><P>24 points = CurveMetrics(preds). get _curve( &#8217;roc &#8217;) </P><P>25 points2 = CurveMetrics(preds2). get _curve( &#8217;roc &#8217;) </P><P>26 points3 = CurveMetrics(preds3). get _curve( &#8217;roc &#8217;) </P><P>27 points4 = CurveMetrics(preds4). get _curve( &#8217;roc &#8217;) </P><P>28 #points5 = CurveMetrics(preds5). get _curve( &#8217;roc &#8217;) </P><P>29 plt .figure(figsize =(10,10)) </P><P>30 x_val = [x[0] for x in points] </P><P>31 y_val = [x[1] for x in points] </P><P>32 x_val2 = [x[0] for x in points2] </P><P>33 y_val2 = [x[1] for x in points2] </P><P>34 x_val3 = [x[0] for x in points3] </P><P>35 y_val3 = [x[1] for x in points3] </P><P>36 x_val4 = [x[0] for x in points4] </P><P>37 y_val4 = [x[1] for x in points4] </P><P>38 recta _x =[0 ,1] </P><P>39 recta _y =[0 ,1] </P><P>40 plt . plot ( x _val , y_val ) </P><P>41 plt .plot(x _val2 , y_val2) </P><P>42 plt .plot(x _val3 , y_val3) </P><Figure><ImageData src=""/><Caption><P>Figura 2.8: Curvas ROC de los modelos evaluados. Regresi&#180;on Log&#180;&#305;stica azul, &#180; </P></Caption></Figure><P>Arbol de Decisi&#180;on naranja, Ada Boost roja, Random Forest verde. Fuente: Elaboraci&#180;on Propia. </P><P>43 plt .plot(x _val4 , y_val4) </P><P>C&#180;odigo 2.8: C&#180;odigo en Spark para generar curva ROC. Fuente: Elaboraci&#180;on propia. </P><P>Por otra parte, se tienen los resultados de las correlaciones encontradas por </P><P>medio del m&#180;etodo de Random Forest. Como se explic&#180;o en la secci&#180;on anterior; </P><P>este m&#180;etodo genera centenares de &#180; on para poder determinar cu&#180; arboles de decisi&#180; al </P><P>es la variable m&#180;as importante. En este caso, el resultado en orden descendente </P><P>de importancia se muestra a continuaci&#180;on: </P><P>1 [( &#8217; SALIDAS _300 &#8217;) , 2 (&#8217;TDCN &#8217;), 3 (&#8217;SALIDAS _100 &#8217;), 4 (&#8217;SALIDAS _600 &#8217;)] </P><P>C&#180;odigo 2.9: Variables m&#180;as importantes con base en un algoritmo de Random Forest. Fuente: Elaboraci&#180;on propia. </P><P>Se puede observar, que las salidas mayores a 300 mil pesos son la variable m&#180;as importante para poder pronosticar si el cliente pedir&#180;a un cr&#180;edito en los siguientes tres meses. Por otra parte, la experiencia que el cliente tiene con el cr&#180;edito dentro del banco es muy importante, ya sea que cuente con el producto de tarjeta de cr&#180;edito PyME o con montos de cr&#180;edito simple en el pasado. Las salidas altas (mayores a 600 mil) son importantes, pero no tanto como las de 100 mil o 300 mil, esto puede generar la hip&#180;otesis que es m&#180;as importante para la PyME un efecto bola de nieve de gastos peque&#732;nos acumulados que una compra de un activo de m&#180;as de 600 mil pesos. Sin embargo, la discusi&#180;on de estos resultados se presentar&#180;a en la secci&#180;on de conclusiones. </P><P>Cap&#180;&#305;tulo 3 </P></Sect></Sect></Sect></Sect></Part><Part><H1>Implementaci&#180;on del modelo </H1><Sect><Sect><H3>3.1. Plan de implementaci&#180;on </H3></Sect><P>Para poder aplicar el modelo generado, se cre&#180;o una tabla de tiempos de respuesta de cada &#180; areas que</P><P>area implicada en el proceso. Se detectaron cuatro &#180; estar&#180;&#305;an implicadas y que tendr&#180;&#305;an diferentes actividades para poder aplicar el modelo y llevarlo a la fuerza de ventas. Antes de continuar con el plan, ser&#180;a necesario definir el objetivo del plan y definir algunos conceptos que son propios de la organizaci&#180;on. El objetivo de la implementaci&#180;on se muestra a continuaci&#180;on: </P><P>Definici&#180;on 3.1.1 (Objetivo de implementaci&#180;on.) Generar un ranking (ordenamiento de mayor a menor de un conjunto de registros con base en un par&#180;ametro) de clientes que cuentan con campa&#732;na activa (t&#180;ermino usado para referirse a un cliente que tiene una oferta aprobada activa), cumpliendo con las siguientes caracter&#180;&#305;sticas: </P><L><LI><Lbl>1. </Lbl><LBody>El ranking deber&#180;a de ser por cada portafolio de cada promotor. </LBody></LI><LI><Lbl>2. </Lbl><LBody>Poner el ranking en la aplicaci&#180;on de Max Pyme para que la fuerza de ventas (cada promotor en el pa&#180;&#305;s) pueda visualizar cu&#180;ales son los clientes por los que puede ir primero antes que otros. </LBody></LI><LI><Lbl>3. </Lbl><LBody>Obtener un incremento en la productividad del gestor al priorizar los clientes a los que debe ofrecerle un cr&#180;edito. </LBody></LI><LI><Lbl>4. </Lbl><LBody>El ranking debe de ser actualizado cada mes cuando sean entregadas las campa&#732;nas mensuales. </LBody></LI></L><P>Por ranking, se entender&#180;a una lista ordenada por importancia (propensi&#180;on a tomar el cr&#180;edito) por cada promotor de ventas. El software Max Pyme es una plataforma que muestra informaci&#180;on de los clientes a la fuerza de ventas. Un cliente con campa&#732;na activa es aquel que cuenta con una o m&#180;as ofertas durante un mes y estas ofertas son calculadas de acuerdo a su comportamiento en pagos y uso de los productos financieros ofrecidos. </P><Sect/><Table><TR><TD>Periodo </TD><TD>Actividad </TD><TD>&#180;Area encargada </TD><TD>Tiempo (horas) </TD><TD>Software </TD></TR><TR><TD>T-4 </TD><TD>Generaci&#180;on del modelo </TD><TD>Analytics </TD><TD>2 </TD><TD>Spark </TD></TR><TR><TD>T-4 </TD><TD>Etiquetar universo de clientes </TD><TD>Analytics </TD><TD>2 </TD><TD>Spark </TD></TR><TR><TD>T-3 </TD><TD>Ponerles plantilla de ventas </TD><TD>Analytics </TD><TD>2 </TD><TD>Spark </TD></TR><TR><TD>T-3 </TD><TD>Etiquetar campa&#732;nas </TD><TD>Analytics </TD><TD>2 </TD><TD>Spark </TD></TR><TR><TD>T-2 </TD><TD>Enviar a CRM </TD><TD>CRM </TD><TD>4 </TD><TD>Excel </TD></TR><TR><TD>T-2 </TD><TD>Subir etiquetas a sistema </TD><TD>CRM </TD><TD>2 </TD><TD>MaxPyME </TD></TR><TR><TD>T-1 </TD><TD>Validaci&#180;on de Implementaci&#180;on </TD><TD>CRM </TD><TD>2 </TD><TD>MaxPyME </TD></TR><TR><TD>T-0 </TD><TD>Entrega al gestor </TD><TD>Ventas </TD><TD>6 </TD><TD>MaxPyME </TD></TR><TR><TD>T+1 </TD><TD>Contacto con el cliente </TD><TD>Ventas </TD><TD>1 </TD><TD>Canal de ventas </TD></TR><TR><TD>T+2 </TD><TD>Visita al cliente </TD><TD>Ventas y Cliente </TD><TD>2 </TD><TD>Canal de ventas </TD></TR></Table><Sect><P>Tabla 3.1: Mapa del proceso en &#180;areas, recursos necesarios y tiempos de respuesta para su implementaci&#180;on. Fuente: Elaboraci&#180;on Propia. </P></Sect><P>Ya que se han definido algunos conceptos clave y de igual forma el objetivo final del modelo, ser&#180;a necesario mapear las actividades de las cuatro areas&#180; involucradas y los tiempos de producci&#180;on para poder implementar el modelo. En resumen, se tiene la siguiente la Tabla 3.1 con los datos mapeados: </P><P>La Tabla 3.1, muestra en orden descendente la prioridad con la que las diferentes &#180;</P><P>areas reciben insumos para poder implementar el modelo. En la columna Tiempo es expresada la variable T que toma valores enteros entre menos cuatro y dos, ya que expresa en d&#180;&#305;as antes o despu&#180;es de que es lanzado el modelo en la plataforma MaxPyME (puesto en producci&#180;on). De tal forma que el d&#180;&#305;a de lanzamiento es T-0. De esta forma se podr&#180;a aprovisionar el tiempo de trabajo anterior para no tener retrasos en las entregas. </P><P>La metodolog&#180;&#305;a AGILE que ha implementado BBVA (BBVA, 2019) mejora la eficiencia y efectividad para poder implementar un nuevo proyecto. Con ella, se forman equipos multidisciplinarios que solo se dedican a un conjunto de tareas espec&#180;&#305;ficas (Rasmusson, 2010), como es en este caso. De tal forma que un nuevo proyecto es implementado en el flujo preconcebido para lanzamientos. Cada &#180;</P><P>area recibe un insumo de otra y ya cuenta con las tecnolog&#180;&#305;as y conocimiento para hacer su parte. De esta forma, la persona que sube el modelo a la plataforma no necesita saber c&#180;omo se ha generado el modelo, solo sabe que recibir&#180;a en tal fecha una lista de clientes que debe subir a la plataforma. </P><P>Por otra parte, la autogesti&#180;on de los equipos definidos con la metodolog&#180;&#305;a AGILE permite dejar de lado la burocracia corporativa, permitiendo que nuevas ideas como &#180;esta sean implementadas f&#180;acilmente y sin encontrar problemas pol&#180;&#305;ticos dentro de la empresa. De esta forma, los Directores se convierten en proveedores de herramientas para cada una de las &#180;</P><P>areas y esperan de los equipos nuevas ideas para poder implantarse. </P><P>Adem&#180;as, la metodolog&#180;&#305;a AGILE permite minimizar costos puesto que la infraestructura ya est&#180;a puesta para solo recibir nuevas ideas. En cambio, en otro tipo de gesti&#180;on, en cada proyecto nuevo, habr&#180;&#305;a que organizar un equipo y comprar infraestructura o contratar proveedores que lo hagan. En cambio, la misma infraestructura es usada para varios proyectos. </P><P>Sobre los retos que present&#180;o la puesta en marcha de la implementaci&#180;on, fue necesario convencer a los tomadores de decisiones que este modelo podr&#180;&#305;a mejorar la productividad de la fuerza de ventas. Sin embargo, usando el hecho de que el costo ser&#180;&#305;a m&#180;&#305;nimo debido a que ya se cuenta con la infraestructura y que lo mejor ser&#180;&#305;a probar el uso de esta nueva herramienta en la fuerza de ventas para ver c&#180;omo aceptaba el usuario final (la fuerza de ventas) la herramienta; antes de desechar la idea, entonces, no se tuvieron mayores obst&#180;aculos para la aprobaci&#180;on de la puesta en marcha del proyecto. La herramienta fue aceptada f&#180;acilmente y de forma positiva por la fuerza de ventas como se mostrar&#180;a posteriormente. </P><P>La descripci&#180;on del proceso que se muestra resumido en la Tabla 3.1 comienza en un primer paso con la actualizaci&#180;on del modelo para calificar a todos los clientes que se tienen con una puntuaci&#180;on que es el resultado de la variable probability que nos da el output del modelo de &#180; on (el que mayor </P><P>arbol de decisi&#180; efectividad tiene en verdaderos positivos). Ya que se obtiene este campo que representa la propensi&#180;on de un cliente a pedir un cr&#180;edito, se cruza esta informaci&#180;on con la plantilla de colaboradores que se tienen asignados a los clientes, esto es, se obtiene el colaborador que gestionar&#180;a al cliente. </P><Sect/><P>Ya que se tiene esta lista, se esperan las ofertas por parte del &#180;</P><P>area de Riesgos para poder filtrar solo a los clientes que tienen una oferta en espec&#180;&#305;fico. Ya que el &#180; tiene esta lista, ordena de mayor a menor la variable de</P><P>area de Analytics1 probability y por promotor. De esta manera se obtiene el ranking para poder enviar al &#180;area de CRM que sube la informaci&#180;on a la herramienta de visualizaci&#180;on de ofertas MaxPyMe. </P><P>El proceso no termina con la carga en la herramienta; el siguiente paso es que cada promotor contacte en orden del ranking a los clientes que aparecen con mayor necesidad de un cr&#180;edito. </P><P>Posteriormente, el promotor cierra el trato con el cliente, y con ello, un mes despu&#180;es, ser&#180;a necesario medir la efectividad del modelo. Bajo este proceso, surgen preguntas, principalmente: &#191;cu&#180;anto fue el aumento en productividad traducido a t&#180;erminos monetarios? </P><P>Resulta, que se tuvo un aumento mayor del 0,01 en la efectividad de &#180;estas, posiblemente, por dedicar m&#180;as tiempo a cada una de las ofertas con mayor probabilidad de formalizarse en lugar de dedicar tiempo a clientes que no ten&#180;&#305;an la intenci&#180;on de pedir un pr&#180;estamo. </P><Sect><Sect><H3>3.2. Monetizaci&#180;on del proyecto </H3></Sect><P>Se sabe que el consumo de bebidas gaseosas genera propensi&#180;on a que las personas que las consumen obtengan obesidad. Sin embargo, la pregunta de &#191;cu&#180;anto aportan estas bebidas a la obesidad de las personas? es m&#180;as compleja de responder debido a que son m&#180;as variables las que intervienen en el resultado; por ejemplo, la gen&#180;etica de la persona, su actividad laboral, la educaci&#180;on que ha recibido, su estado an&#180;&#305;mico, su dieta, etc. Es por ello que definir o probar con certeza c&#180;omo una variable afecta a un fen&#180;omeno es complicado a&#180;un con todas las herramientas estad&#180;&#305;sticas con que se cuenta debido a que son muchos otros los factores que intervienen en los fen&#180;omenos complejos. </P><P>Sin embargo, no es necesario descartar las variables por completo; Por ejemplo, un vigilante parece poco productivo a la entrada de una empresa, pero no deber&#180;&#305;a ser quitado jam&#180;as. De la misma forma, se tratar&#180;a de mostrar la necesidad del uso de este modelo si es usado correctamente, y, por otra parte, si bien se tienen los resultados estad&#180;&#305;sticos de la mejora en la productividad, estos son considerados por el autor como estrat&#180;egicos de la empresa y no se mostrar&#180;an en este texto ya que este an&#180;alisis est&#180;a basado en la mejora de la efectividad de las ofertas que se encuentran en las primeras 10 que se presentan en el ranking. </P><P>Con los precedentes del p&#180;arrafo anterior, se gener&#180;o el siguiente modelo econ&#180;omico para probar la utilidad de la herramienta: </P><Sect><P>Sean las siguientes variables: </P></Sect><P>1 &#180; on y proponer estrategias de negocio basadas en</P><Sect><P>Area encargada de analizar la informaci&#180; informaci&#180;on. </P></Sect><L><Sect><LI><Lbl>1. </Lbl><LBody>C: Costo por hora por promotor </LBody></LI></Sect><LI><Lbl>2. </Lbl><LBody>U: N&#180;umero de clientes promedio asignados a un promotor </LBody></LI><Sect><LI><Lbl>3. </Lbl><LBody>P: N&#180;umero de promotores en la empresa </LBody></LI></Sect><LI><Lbl>4. </Lbl><LBody>T: Tiempo en horas invertidas para analizar un cliente </LBody></LI><Sect><LI><Lbl>5. </Lbl><LBody>i : La tasa de inter&#180;es </LBody></LI><LI><Lbl>6. </Lbl><LBody>w: Costo de capital (TIIE 4 a semanas) </LBody></LI><LI><Lbl>7. </Lbl><LBody>r: Porcentaje a reserva de riesgo </LBody></LI></Sect><LI><Lbl>8. </Lbl><LBody>b: Porcentaje de prima pagada al promotor por generar el cr&#180;edito </LBody></LI><LI><Lbl>9. </Lbl><LBody>g: Costo mensual del cliente (solo la parte que concierne al producto) </LBody></LI><Sect><LI><Lbl>10. </Lbl><LBody>M: Monto promedio del pr&#180;estamo </LBody></LI></Sect></L><P>La ganancia neta ser&#180;a dada por la siguiente f&#180;ormula: </P><P>G1 =(i &#8722; r &#8722; w &#8722; b)M(vp + fn) &#8722; TUC &#8722; gU (3.1) </P><P>En donde f&#180;acilmente podemos traducirla como las ganancias brutas menos los gastos por evaluar todos los clientes. Aplicando el modelo tendr&#180;&#305;amos los siguientes cambios: </P><P>G2 =(i &#8722; r &#8722; w &#8722; b)M(vp &#8722; fn) &#8722; T (vp + fp)C &#8722; gU (3.2) </P><P>En esta nueva f&#180;ormula solo se tienen las ganancias brutas por motivo de los vp y se descuentan las ganancias por los fn (costo de oportunidad por aplicar el modelo). Por otra parte, solo son descontados los costos por evaluar los vp+fp y no toda la cartera de clientes. </P><P>De Ecuaci&#180;on 3.2, se observa que el mejor modelo ser&#180;a el que obtenga la mayor diferencia vp &#8722; fn. Es por ello que se seleccion&#180;o como uno de los mejores modelos al &#180; on ya que cuenta con una diferencia de 264. Aunque</P><P>arbol de decisi&#180; una aproximaci&#180;on al problema consistir&#180;&#305;a en disminuir costos, esto es, utilizar el modelo que tenga menor vp+fp que en este caso, se eligi&#180;o por querer maximizar la ganancia bruta por temas de rentabilidad en el momento de la aplicaci&#180;on del modelo, pero la decisi&#180;on debe tomar en cuenta qu&#180;e tasa es mayor (la de rentabilidad o la de costo). </P><P>El modelo tendr&#180;a beneficios si sucede lo siguiente: </P><P>1. vp > fn (3.3) </P><P>2. (i &#8722; r &#8722; w &#8722; b)M(vp &#8722; fn) &#8722; T (vp + fp)C &gt;gU (3.4) </P><Sect/><P>3. (i &#8722; r &#8722; w &#8722; b)M(vp &#8722; fn) > gU + T (vp + fp)C (3.5) </P><P>En caso de que alguna de estas desigualdades no se cumpla, el modelo no podr&#180;a mostrar rentabilidad si se aplica de esa forma. Aunque el punto de vista que se puede tener respecto a la monetizaci&#180;on del modelo pueda cambiar si el enfoque es distinto; por ejemplo, si solo se le asignan al promotor los clientes con baja propensi&#180;on, ya que, si el cliente necesita el cr&#180;edito y lo va a pedir, no tendr&#180;&#305;a sentido pagarle al gestor por ese trabajo. Bajo ese supuesto, el modelo quedar&#180;&#305;a as&#180;&#305;: </P><P>G3 =(i &#8722; r &#8722; w)M (vp) &#8722; (i &#8722; r &#8722; w &#8722; b)M(fn) &#8722; T (fn + vn)C &#8722; gU (3.6) </P><P>En este caso, la ganancia incrementar&#180;a por no pagar beneficio por los clientes que son propensos a solicitar el cr&#180;edito. Como tanto la primera propuesta como la segunda ser&#180;&#305;an irreales de aplicar, se supondr&#180;a que el modelo servir&#180;a de herramienta para mejorar la productividad del gestor d&#180;andole m&#180;as tiempo para gestionar mejor y m&#180;as r&#180;apido los cr&#180;editos. En este caso, la ganancia monetaria ser&#180;a TUC &#8722; T (1 &#8722; q)(vp + fp)C, con q como la proporci&#180;on de T que el promotor invierte en estudiar al cliente gracias al modelo y a priorizar sus tareas. Esta proporci&#180;on deber&#180;&#305;a de obtenerse por medio de la observaci&#180;on, pero hasta ahora no se tienen resultados concretos sobre ella. </P><P>Otra forma de monetizar el modelo es aumentando un valor z a la tasa de inter&#180;es a los clientes propensos debido a que cuentan con mayor demanda del cr&#180;edito. O en caso de que se requiera premiarles por quedarse en el Banco y no ir a la competencia, disminuir la tasa a estos clientes. En el primer caso, la ganancia ser&#180;&#305;a de la forma: </P><P>G4 =(i + z &#8722; r &#8722; w &#8722; b)M(vp) &#8722; (i &#8722; r &#8722; w &#8722; b)M(fn) &#8722; TUC &#8722; gU (3.7) </P><P>Obteniendo una ganancia por incremento de tasa a los clientes que necesitan el cr&#180;edito. Sin embargo, se recomienda estudiar las posibilidades de aumento de tasa para este tipo de clientes antes de aplicar la Ecuaci&#180;on 3.7. Si bien, todos estos modelos muestran formas de monetizar la aplicaci&#180;on del modelo, en el caso del Banco, el modelo se aplic&#180;o sin estos puntos de vista financieros ya que se encontr&#180;o que el modelo es m&#180;as valioso para generar una mejor experiencia al cliente y no, por el contrario, aprovecharse de su necesidad. El modelo fue aceptado para anticiparse a las necesidades del cliente y ofrecer un mejor servicio, lo cual, a largo plazo generar&#180;a fidelidad y rentabilidad constante. </P><Sect><H3>3.3. Evidencia de la puesta en producci&#180;on </H3><P>Para mostrar el resultado final, se presenta la Imagen 4.1, en donde se puede observar la lista de clientes en orden por prioridad en la que los promotores pueden consultar cada d&#180;&#305;a a cada uno de sus clientes. </P><Sect/><Figure><ImageData src=""/><Caption><P>Imagen 4.1: Resultado final de la implementaci&#180;on. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><P>Por otra parte, se muestra la Imagen 4.2, en donde la carga de los clientes fall&#180;o y, por lo tanto, esta imagen la ha enviado un promotor al que le urg&#180;&#305;a tener el ranking para gestionar mejor su cartera. Este hallazgo muestra la necesidad generada en la fuerza de ventas y su funcionalidad. </P><Sect><P>Por &#180;</P></Sect><P>ultimo, se muestra la Imagen 4.3 de un correo en el que el autor de este trabajo env&#180;&#305;a al CRM la lista generada para cargarla en el sistema. </P><P>Con estas im&#180;agenes podemos observar la puesta en marcha del modelo aplic&#180;andolo a una herramienta que es apreciada y usada por la fuerza de ventas para mejorar la experiencia del cliente. </P><Sect/><Figure><ImageData src=""/><Caption><P>Imagen 4.2: Queja sobre problemas en la carga. Fuente: Elaboraci&#180;on Propia. </P></Caption></Figure><Figure><ImageData src=""/></Figure><P>Imagen 4.3: Parte del proceso de generaci&#180;on del ranking. Fuente: Elaboraci&#180;on Propia. </P><Sect><P>Cap&#180;&#305;tulo 4 </P></Sect></Sect></Sect></Sect></Part><Part><H1>Discusi&#180;on y conclusiones </H1><Sect><H3>4.1. Sobre la IA y su implementaci&#180;on </H3><P>El Machine Learning ha tomado relevancia en los &#180; nos debido a la</P><P>ultimos a&#732; facilidad con que pueden ser generados los modelos con algoritmos de aprendizaje y aprovechando el auge de las plataformas de BigData. Sin embargo, es necesario tener conocimiento del fen&#180;omeno a modelar e investigar la mayor&#180;&#305;a de las fuentes de informaci&#180;on que puedan nutrir y abundar al resultado del modelo, pues no importa el tama&#732;no del de la Red Neuronal si no se cuenta con la informaci&#180;on que le proporcione aprendizaje. </P><P>Por otra parte, cada que se tenga oportunidad, ser&#180;a buena pr&#180;actica incluir nuevos modelos y valorar diferentes simulaciones de sus par&#180;ametros debido a que no se tiene certeza a&#180;un sobre una metodolog&#180;&#305;a segura para determinar el conjunto de par&#180;ametros de los modelos; por ejemplo, la cantidad de neuronas o capas o el tama&#732;no final de los &#180; on (Br&#305;o, 2007). </P><P>arboles de decisi&#180; &#180; </P><P>El balanceo de la muestra usando la variable objetivo cuando toma un valor positivo es muy importante para mejorar el aprendizaje del modelo y evitar el sobreajuste. Sin embargo, disminuye en gran medida el tama&#732;no de la muestra de aprendizaje. </P><Sect><H3>4.2. Sobre los resultados de los modelos </H3><P>Los diferentes resultados de los modelos proporcionan aplicaciones distintas. Esto es, dependiendo de la m&#180;etrica que se eval&#180;ue o el objetivo del modelo, ser&#180;a necesario elegir una u otra m&#180;etrica para determinar cu&#180;al es el mejor modelo que represente un fen&#180;omeno o que sea util para aplicarlo en la vida real. Como en</P><P>&#180; el ejemplo que se mostr&#180;o en este trabajo, el mejor modelo result&#180; &#180;</P><P>o ser un arbol de decisi&#180;on debido a que el fen&#180;omeno econ&#180;omico en el que se aplicaba as&#180;&#305; lo requer&#180;&#305;a. </P><P>De la misma forma que se recomienda entrenar los modelos bajo diferentes par&#180;ametros, se recomienda evaluar el modelo bajo diferentes m&#180;etricas. </P><P>Una de las formas de evaluar el modelo para futuras investigaciones es la validaci&#180;on cruzada, en la que se eval&#180;uan los modelos bajo diferentes muestras aleatorias diferentes entre s&#180;&#305;. Esto permite obtener mayor certeza en los resultados del modelo. </P><Sect><H3>4.3. Sobre la implementaci&#180;on </H3><P>La metodolog&#180;&#305;a AGILE permite aumentar la creatividad del area&#180; de Analytics debido a que proporciona el ambiente adecuado y la infraestructura para poder probar e implementar modelos que ayuden a obtener mejores resultados en la empresa. El flujo de informaci&#180;on durante todo el proceso fue siempre claro para todas las partes involucradas y el tiempo de planeaci&#180;on fue menor debido a que la aplicaci&#180;on del modelo es parecida a la aplicaci&#180;on de otros en producci&#180;on. </P><P>Por otra parte, la evaluaci&#180;on del desempe&#732;no del modelo no se puede obtener desde el punto de vista econ&#180;omico debido a que se trata de una aplicaci&#180;on que tiene como objetivo mejorar la experiencia del cliente y la vida laboral del promotor. Estos objetivos son intangibles en muchas ocasiones por lo que pueden no siempre ser medidos los resultados. Sin embargo, se muestran diferentes formas de sacar ventaja econ&#180;omica del modelo (Secci&#180;on 4.2.). </P><P>Si bien, se puede usar para desplazar campos de trabajo o sacar provecho de las necesidades encontradas de los clientes, en cambio, se le puede dar un enfoque en el que todos sean beneficiados. </P><P>Con este modelo, se permitir&#180;a realizar trabajo futuro para la mejora de la productividad del promotor y ayudar al cliente a tener una mejor experiencia, pero ser&#180;a necesario aplicar nuevos modelos y obtener mayor informaci&#180;on sobre el cliente que permita desarrollar nuevas ideas. </P><P>En un futuro, se propone indagar en la informaci&#180;on de redes sociales o de navegaci&#180;on del cliente para poder ayudarlo a tomar mejores decisiones econ&#180;omicas. En este caso, el modelo ser&#180;&#305;a enfocado en mostrar a la PyME cu&#180;al es la mejor tasa y plazo para sus diferentes proyectos de inversi&#180;on. </P><P>Una variable importante, que se plantea utilizar en un futuro es la situaci&#180;on del giro del negocio en un momento y lugar dados para saber si la correlaci&#180;on con el aumento o disminuci&#180;on de la demanda de cierto producto puede generar propensi&#180;on a la obtenci&#180;on del cr&#180;edito. Por ejemplo, si un cliente PyME se dedica al hospedaje de personas en una zona vacacional, necesitar&#180;a del cr&#180;edito para mejorar sus instalaciones algunos meses antes de la temporada alta de turismo. Analizando estas correlaciones, se le podr&#180;a generar un mayor servicio anticipando sus necesidades y generando estrategias diferenciadas. </P></Sect></Sect></Sect></Part><Part><H1>Bibliograf&#180;&#305;a </H1><P>Apodaca, J. (2014). Simulaci&#180;on por Computadora de Modelos Estoc&#180;asticos. UNAM. </P><P>Apodaca, J. (2022). Arbolito Propen. Consultado el 1 de marzo de 2022, desde https://github.com/Elyorch35/ML/blob/main/Arbolito Propen.pdf </P><P>BBVA. (2019). innovation BBVA. Consultado el 1 de julio de 2021, desde https: //www.youtube.com/watch?v=xooKa-uwxI </P><P>BBVA. (2021). BBVA Open Innovation. Consultado el 22 de junio de 2021, desde https://openinnovation.bbva.com/es/evento/hackathon-bbva-2020 </P><P>Bill, C. (2017). Spark: The Definitive Guide: Big Data Processing Made Simple. USA O&#180;reilly. </P><P>Br&#180;&#305;o, B. M. (2007). Redes Neuronales y Sistemas Borrosos. Alfaomega, Madrid, Espa&#732;na. </P><P>Caballero, R. (2018). Big Data con Python. Espa&#732;na Alfaomega. </P><P>Davenport, T. (2014). Big data at work: dispelling the myths, uncovering the opportunities. Harvard Business Review Press. </P><P>Eman, S. (2019). Apache Spark: A Big Data Processing Engine. Ingenier&#305;a, investigaci&#180;on y tecnolog&#305;a. </P><P>Espinosa-Z&#180;u&#732;niga, J. J. (2020). Aplicaci&#180;on de metodolog&#305;a CRISP-DM para segmentaci&#180;on geogr&#180;afica de una base de datos p&#180;ublica. Ingenier&#305;a, investigaci&#180;on y tecnolog&#305;a, 21 (1). </P><P>Freund, Y., Schapire, R., & Abe, N. (1999). A short introduction to boosting. Journal-Japanese Society For Artificial Intelligence, 14 (771-780), 1612. </P><P>Fuentes, E. J. (2020). Introducci&#180;on a los m&#180;etodos Deep Learning. Espa&#732;na, Universidad de Vigo. </P><P>Guerra, P., & Castelli, M. (2021). Machine learning applied to banking supervision a literature review. Risks, 9 (7), 136. </P><P>Hamstra, M., & Zaharia, M. (2013). Learning Spark: lightning-fast big data analytics. O&#8217;Reilly. </P><P>Hansen, V. L. (1999). Fundamental Concepts in Modern Analysis. World Scientific Publishing, USA. </P><P>Jules, D. (2019). Learning Spark: Lightning-Fast Data Analytics. USA O&#180;reilly. </P><P>Kaminskyi, A., Nehrey, M., & Zomchak, L. (2021). Machine learning methods application for consumer banking. SHS Web of Conferences, 107, 12001. </P><P>Klein, J. (2017). Santiago Ram&#180;on y Cajal, el hombre que dibuj&#180;o los secretos del cerebro. </P><P>Leo, M., Sharma, S., & Maddulety, K. (2019). Machine learning in banking risk management: A literature review. Risks, 7 (1), 29. </P><P>Rasmusson, J. (2010). The agile samurai: How agile masters deliver great software. The Agile Samurai, 1-264. </P><P>Rim, P., & Liu, E. (2020). Optimizing the C4. 5 Decision Tree Algorithm using MSD-Splitting. International Journal of Advanced Computer Science and Applications, 11 (10), 41-47. </P><P>Rodrigo, J. A. (2017). M&#180;aquinas de Vector Soporte (Support Vector Machines, SVMs). Consultado el 1 de julio de 2022, desde https://rpubs.com/ Joaquin AR/267926 </P><P>Sarkar, M. A. (2012). Events identification using Box-Jenkins methodology with application to accelerated durability tests of ground vehicles (Tesis de maestr&#180;&#305;a). </P><P>SAS, I. (2011). Applied Analytics Using SAS. NC, USA: SAS Institute. </P><P>Schapire, R. E. (2013). Explaining adaboost. Springer. </P><P>scikit-learn. (2022). scikit-learn. Consultado el 1 de marzo de 2022, desde https: / / scikit -learn . org / stable / auto examples / preprocessing / plot map data to normal.html </P><P>spark.apache.org. (2021). spark.apache.org. Consultado el 6 de julio de 2021, desde https://spark.apache.org/docs/latest/ml-classification-regression. html#multilayer-perceptron-classifier </P><P>Taha, H. A. (2011). Operations research: an introduction (Vol. 790). Pearson/-Prentice Hall Upper Saddle River, NJ, USA. </P><P>Weisberg, S. (2001). Yeo-Johnson power transformations. Department of Applied Statistics, University of Minnesota. Retrieved June, 1, 2003. </P><P>Ap&#180;endice A </P></Part><Part><H1>Anexo de C&#180;odigos en R y Python </H1><P>1 # Lenguaje R 2 # install package 3 install . packages (" neuralnet &quot;) 4 # Crear datos de entrada 5 input1 =c (20 ,10 ,30 ,20 ,80 ,30 ,20 ,10 ,10 ,30 ,40 ,60) 6 input2 =c (90 ,20 ,40 ,50 ,50 ,80 ,20 ,10 ,10 ,30 ,40 ,60) 7 Resultado =c(1 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1) 8 # Generar dataframe 9 df =data .frame (input1 ,input2 ,Resultado) </P><P>10 # Cargar libraria 11 require ( neuralnet ) 12 # Entrenar Red 13 nn =neuralnet(Resultado ~input1+input2 ,data =df , hidden =c(7,4),act .fct </P><P>= &quot;logistic &quot;,linear .output = FALSE) </P><P>C&#180;odigo A.1: C&#180;odigo en R para generar red neuronal Fuente: Elaboraci&#180;on propia. </P><Table><TR><TH>1 </TH><TD>l i b r a r y ( p a r t y , q u i e t l y = T R U E ) </TD></TR><TR><TH>2 </TH><TD>A r b o l i n _ P r o p e n 1 < c t r e e ( </TD></TR><TR><TH>3 </TH><TD>Y ~ </TD></TR><TR><TH>4 </TH><TD>M O N T O _ E X P + </TD></TR><TR><TH>5 </TH><TD>C R E D I S _ E X P + </TD></TR><TR><TH>6 </TH><TD>M o r a T a r j + </TD></TR><TR><TH>7 </TH><TD>M o r a C S + </TD></TR><TR><TH>8 </TH><TD>P e r d i d a s + </TD></TR><TR><TH>9 </TH><TD>U N O + </TD></TR><TR><TH>10 </TH><TD>D O S + </TD></TR><TR><TH>11 </TH><TD>T R E S + </TD></TR><TR><TH>12 </TH><TD>C U A T R O + </TD></TR><TR><TH>13 </TH><TD>L i q u i d e z _ p y m e + </TD></TR></Table><Table><TR><TH>14 </TH><TD>L i q u i d e z _ t o t a l + </TD></TR><TR><TH>15 </TH><TD>B c o m + </TD></TR><TR><TH>16 </TH><TD>T D C N + </TD></TR><TR><TH>17 </TH><TD>b u r o _ a n t e s + </TD></TR><TR><TH>18 </TH><TD>b u r o _ vs _ s a l i d a s + </TD></TR></Table><P>19 Salidas _vs _liquidez+ TP _PERSONA 20 ,data = datos 21 , control = ctree _ control ( maxdepth =5) ) </P><P>C&#180;odigo A.2: C&#180;odigo en R para generar &#180;arboles de decisi&#180;on. Fuente: Elaboraci&#180;on propia. </P><P>1 </P><P>2 modelo _svm &lt;-svm( formula = y ~ X1 + X2, data = datos , kernel = " </P><P>linear " , 3 cost = 10 , scale = FALSE ) 4 5 rango _X1 &lt;-range (datos $X1) 6 rango _X2 &lt;-range (datos $X2) 7 8 new _x1 &lt;-seq (from = rango _X1[1], to = rango _X1[2], length = 75) 9 new _x2 &lt;-seq (from = rango _X2[1], to = rango _X2[2], length = 75) </P><P>10 nuevos _puntos &lt;-expand .grid (X1 = new _x1, X2 = new _x2) </P><P>11 </P><P>12 predicciones &lt;-predict (object = modelo _svm, newdata = nuevos _ puntos ) </P><P>13 </P><P>14 colores &lt;-data .frame (nuevos _puntos , y = predicciones) </P><P>15 </P><P>16 beta &lt;-drop (t(modelo _svm $coefs) %*% as .matrix (datos[, c(&quot;X1 &quot;,&quot;X2 &quot;) ])[ modelo _ svm $index ,]) </P><P>17 beta0 &lt;-modelo _ svm $rho </P><P>18 </P><P>19 </P><P>20 ggplot () + </P><P>21 geom _point( data = colores , aes(x = X1, y = X2, color = as .factor ( </P><P>y)), 22 size = 1) + 23 geom _point( data = datos , aes(x = X1, y = X2, color = as .factor (y) </P><P>), 24 size = 6) + 25 geom _ point ( data = datos [ modelo _ svm $index , ], 26 aes(x = X1, y = X2, color = as .factor (y)), 27 shape = 21, colour = &quot;black &quot;, 28 size = 6) + 29 theme _bw() + 30 theme( legend .position = &quot;none &quot;) </P><P>C&#180;odigo A.3: C&#180;odigo en R para las gr&#180;aficas de Maquina de Soporte Vectorial. Fuente: Elaboraci&#180;on propia con c&#180;odigo base de (Rodrigo, 2017). </P><P>1 2 # Ejemplo de selecci n de par metros con GridSearchCV para un r ndom Forest y con validaci n cruzada </P><P>3 4 parameters = { 5 &#8217; max _depth &#8217;:[5 ,10 ,20] , 6 &#8217;min _samples _split &#8217;:[10,20,60], 7 &#8217; min _samples _leaf &#8217;:[10 ,20 ,60] , 8 &#8217;max _features &#8217;:[ &#8217;sqrt &#8217;, &#8217;log2 &#8217;, &#8217;None &#8217;] 9 </P><P>10 } 11 </P><P>12 rf = RandomForestClassifier() </P><P>13 clf = GridSearchCV(rf, parameters ,cv =10) </P><P>14 clf .fit(X _train , y_train) </P><P>16 # Ejemplo de selecci n de par metros con GridSearchCV para una m quina de soporte vectorial y con validaci n cruzada </P><P>17 </P><P>18 parameters = { </P><P>19 &#8217;kernel &#8217;:( &#8217;linear &#8217;, &#8217;poly &#8217;, &#8217;rbf &#8217;, &#8217;sigmoid &#8217;), &#8217;C &#8217;:[1, 10], </P><P>21 &#8217;degree &#8217;:[2 ,3 ,4] , </P><P>22 &#8217;gamma &#8217;:( &#8217;scale &#8217;, &#8217;auto &#8217;) </P><P>23 </P><P>24 } </P><P>svc = svm .SVC() 26 clf = GridSearchCV(svc, parameters ,cv =10) 27 clf .fit(X _train , y_train) 28 </P><P>29 # Ejemplo de selecci n de par metros con GridSearchCV para una red neuronal y con validaci n cruzada </P><P>31 </P><P>32 parameters = { </P><P>33 </P><P>34 &#8217;hidden _layer _sizes &#8217;:[(20,15,5) ,(40,20,10) ,(10,5,3)], &#8217;solver &#8217;:( &#8217;sgd &#8217;, &#8217;adam &#8217;), </P><P>36 &#8217;activation &#8217;:[ &#8217;relu &#8217;,&#8217;logistic &#8217;, &#8217;tanh &#8217;], </P><P>37 &#8217;learning _rate _init &#8217;:[0.001,0.01] , </P><P>38 &#8217;max _iter &#8217;:[300 ,500] </P><P>39 ,&#8217;learning _rate &#8217;:( &#8217;constant &#8217;, &#8217;invscaling &#8217;, &#8217;adaptive &#8217;) } </P><P>41 svc =MLPClassifier() </P><P>42 clf = GridSearchCV(svc, parameters ,cv =10) </P><P>43 clf .fit(X _train , y_train) </P><P>44 #clf . cv _results _ </P><P>46 df = pd .DataFrame(clf .cv _results _) 47 df2 =df[df. rank _test _score ==1]. params </P><P>C&#180;odigo A.4: C&#180;odigo en Python para evaluar diferentes par&#180;ametros de los modelos. Fuente: Elaboraci&#180;on propia con c&#180;odigo base de GridSearchCV. </P><P>Ap&#180;endice B </P></Part><Part><H1>Anexo de Definiciones Matem&#180;aticas </H1><Sect><H3>B.1. Algoritmo Ada Boost </H3><P>El algoritmo busca un resultado ponderado de un vector de entrada Xj =< x1, ..., xM > con M modelos (G1, ..., GM ) con la siguiente funci&#180;on: </P><P></P><P>M</P><P></P><P>AB(Xj)= &#966;&#945;iGi(Xj ) (B.1) i=1 </P><P>en donde j =1, 2, .., n (n es el tama&#732;no de la muestra de aprendizaje). &#966; es la funci&#180;on 1.7. </P><P>A continuaci&#180;on se muestran los pasos para pronosticar una clase con base en un modelo de Ada Boost que se ha mencionado. </P><P>Definici&#180;on B.1.1 (Algoritmo Ada Boost) Con base en un conjunto de datos de entrenamiento denominado A de tama&#732;no n con M variables. En donde yi es la respuesta categ&#180;orica (1 o 0) de cada registro i para cada registro de entrada Xi =&lt;x1, ..., xM &gt;. Mientras k&lt;T (T un n&#180;umero natural definido por el usuario) seguir los siguientes pasos: </P><P>1</P><P>1. Para k =0 asignar Ak &#8592; A y asignar un peso wi = para cada observa</P><P>n </P><P>ci&#180;on i de un conjunto de entrenamiento de tama&#732;no n. </P><P>2. Dada una muestra Ak, generar un &#180;arbol de decisi&#180;on Gm para cada variable m del modelo (G1, ..., GM ) con la restricci&#180;on de solo tener un nivel de nodos1 . </P><P>1Por un nivel de nodos, se entender&#180;a que el &#180;</P><P>arbol solo utiliza una variable de aprendizaje y solo se podr&#180;a encontrar una divisi&#180;on (dos clases) obteniendo un nodo y una rama para cada clase. </P><P>3. Calcular el &#180;&#305;ndice de Gini para cada &#180;arbol Gm y seleccionar al que tenga menor &#180;&#305;ndice de Gini y denominarlo G1 .</P><P>m </P><P>4. Calcular el error de este modelo para cada entrada: </P><P></P><P>n </P><P>= G1</P><P>&#824; (Xi))</P><P>i=1 wiI(yim</P><P>Em = (B.2)</P><P>n i=1 wi </P><P>5. Aplicar logaritmo al error para que no se disparen sus valores: </P><P></P><P>1 (1 &#8722; Em)</P><P>&#945;m = log (B.3)</P><P>2 Em </P><P>6. Asignar el nuevo valor de las ponderaciones: </P><P>&#8242; </P><P>(&#945;I(yi&#824;=G1 (Xi)))</P><P>m</P><P>w = wi exp (B.4)</P><P>i </P><P>7. Normalizar las ponderaciones: </P><P>&#8242; </P><P>w</P><P>i </P><P>wi = (B.5)</P><P>n &#8242; i=1 wi </P><L><LI><Lbl>8. </Lbl><LBody>Seleccionar una nueva muestra A de tama&#732;no n con repetici&#180;on con muestreo aleatorio ponderado por los pesos (w1, ..., wn). Asignar Ak+1 &#8592; A. </LBody></LI><LI><Lbl>9. </Lbl><LBody>Actualizar k (k = k +1) e ir a paso 2. </LBody></LI></L><P>La la f&#180;ormula B.3, es propuesta por los autores del algoritmo y se deriva de despejar &#945;m del gradiente del error exponencial: </P><P>&#8706;E </P><P>&#8722;yj (yj) </P><Table><TR><TH/><TH>&#8706;&#945;m </TH><TH>= 0 </TH><TH>(B.6) </TH></TR><TR><TD>en donde si </TD><TD/><TD/></TR><TR><TD/><TD/><TD></TD><TD>&#8242; </TD><TD></TD><TD>&#8242; </TD><TD/></TR><TR><TD/><TD>E = </TD><TD/><TD>wje &#8722;&#945;m + </TD><TD/><TD>wje &#945;m </TD><TD>(B.7) </TD></TR><TR><TD/><TD/><TD>yj =Gm(Xj) </TD><TD/><TD>yj =&#824; Gm(Xj ) </TD><TD/><TD/></TR><TR><TD/><TD>&#8242; </TD><TD/><TD>&#710; </TD><TD/><TD/><TD/><TD/></TR></Table><P>en donde w = e para m> 1 y 1 otro caso. Entonces, se tiene que:</P><P>j </P><P></P><P>1 (1 &#8722; Em)</P><P>&#945;m = log (B.8)</P><P>2 Em esto es, el resultado AB(Xj) ser&#180;a la ponderaci&#180;on de un conjunto de arboles&#180; de decisi&#180;on con base en la aportaci&#180;on del error m&#180;&#305;nimo de cada modelo. Existen diferentes versiones de este algoritmo, en este caso se trata de la versi&#180;on presentada en (Schapire, 2013). Existen dos aspectos clave en el algoritmo, el primero es aplicar logaritmo para hacer manejable el error pues de esta forma, el error no diverge cuando es muy grande y esto genera un apropiado aprendizaje del modelo. Por otra parte, en el paso seis, al aplicar la funci&#180;on exponencial se evita que los valores del error se disparen y el peso wi pueda mantenerse menor a uno lo que facilita el posterior c&#180;alculo y que se disparen los pesos en la muestra. </P></Sect><Sect><H3>B.2. Algoritmos de Optimizaci&#180;on </H3><P>Definici&#180;on B.2.1 (Algoritmo de Gradiente Descendiente) Dados los par&#180;ametros w(t) y la funci&#180;on de p&#180;erdida L(t), en donde t indexa el n&#180;umero de iteraci&#180;on (iniciando en 0) y sea m el n&#180;umero de iteraciones seleccionadas previamente, </P><P>(t+1)</P><P>el nuevo par&#180;ametro w se obtendr&#180;a al seguir los siguientes pasos: </P><P>(t)</P><L><LI><Lbl>1. </Lbl><LBody>Establecer aleatoriamente los par&#180;ametros w = wt1, ..., wtn </LBody></LI><LI><Lbl>2. </Lbl><LBody>Para cada iteraci&#180;on calcular el error con una funci&#180;on de costo y su gradiente de cada par&#180;ametro (derivada parcial de la funci&#180;on de costo respecto a cada par&#180;ametro wti para i =1,...,n): </LBody></LI></L><P>Et = L(t)(wt1, ..., wtn) (B.9) </P><P>&#8706;L(t)(wt1, ..., wtn)</P><P>&#8711;Eti = para t =1,...,m (B.10)&#8706;wti </P><P>3. Obtener el nuevo valor de los par&#180;ametros: </P><P>w(t+1)i = w(t)i &#8722;&#8711;Eti&#951; (B.11) </P><P>en donde &#951; es la tasa de aprendizaje, puede ser variable o constante con respecto a t. </P><P>4. Detener si el valor de la funci&#180;on de costo no disminuye lo deseado. </P><P>(t)</P><P>Definici&#180;on B.2.2 (Algoritmo ADAM) Dados los par&#180;ametros w =&lt;wt1, ..., wtn > y la funci&#180;on de p&#180;erdida L(t), en donde t indexa el n&#180;umero de iteraci&#180;on (iniciando en 0), el nuevo par&#180;ametro w(t+1) ser&#180;a estimado con las siguientes ecuaciones: </P><P>&#8706;L(t)(wt1, ..., wtn)</P><Table><TR><TD/><TD>&#8711;Eti = </TD><TD>&#8706;wti </TD><TD>(B.12) </TD></TR><TR><TD>. </TD><TD/><TD/><TD/></TR></Table><P>(t+1) (t)</P><P>m = &#946;1m + (1 &#8722; &#946;1)&#8711;Eti (B.13)</P><P>wi wi (t+1) (t)</P><P>v = &#946;2v + (1 &#8722; &#946;2)(&#8711;Eti)2 (B.14)</P><P>wi wi </P><P>(t+1)</P><P>m</P><P>wi </P><P>m&#710; wi =1 &#8722; &#946;1 t (B.15) </P><P>(t+1)</P><P>v</P><P>wi </P><P>v&#710;wi = (B.16)1 &#8722; &#946;2 t </P><P>(t+1) (t) m&#710; wi </P><P>w = w &#8722; &#951; &#8730; (B.17)</P><P>ii v&#710;wi + &#1013; </P><P>en donde &#1013; es un escalar peque&#732;no (e.g. 10&#8722;8) usado para prevenir la divisi&#180;on por 0. Los par&#180;ametros &#946;1 y &#946;2 son las tasas de aprendizaje para el primer y segundo momento de los gradientes respectivamente. &#951; es un valor arbitrario (usualmente cercano a cero) que es otra tasa de aprendizaje. Los valores iniciales </P><P>(0) (0)</P><P>m y v son cero (Fuentes, 2020).</P><P>wi wi </P></Sect><Sect><H3>B.3. Sobre Redes Neuronales </H3><P>En un modelo multi capa podr&#180;a apreciarse mejor el funcionamiento de una red neuronal, para ello, es preciso definir la funci&#180;on g(.) de flujo de informaci&#180;on: </P><P>Definici&#180;on B.3.1 (Funci&#180;on g(.) de flujo de informaci&#180;on) Un modelo de red neuronal puede ser descrito como el paso de informaci&#180;on de una capa a otra en un conjunto de capas con caracter&#180;&#305;sticas predefinidas. Sea k una capa con m neuronas a la cu&#180;al se le ha asignado la funci&#180;on de activaci&#180;on &#966;k, y sea (k &#8722; 1) la capa predecesora que cuenta con n neuronas y que le proporcionar&#180;a informaci&#180;on a la capa k, la funci&#180;on gk de traspaso de informaci&#180;on de una capa a otra se define como: </P><P>gk(gk&#8722;1)= gk(g1(k&#8722;1), ..., gn(k&#8722;1))= </P><P></P><P>nn</P><P>&#966;k , &#183;&#183;&#183; ,&#966;k (B.18)</P><P>i=1 wi1gi(k&#8722;1) + &#952;1 i=1 wimgi(k&#8722;1) + &#952;m </P><P>en donde gk es una funci&#180;on de Rn &#8594; Rm , ya que gk(g1(k&#8722;1), ..., gn(k&#8722;1))= (g1(k), ..., gm(k)), &#952;j es el bias de la neurona j en la capa k y g0 =(x1, ..., xl) en donde (x1, ..., xl) es la informaci&#180;on de entrada (l columnas de entrada de informaci&#180;on) del modelo. </P><P>Para que una Red Neuronal pueda aprender se puede utilizar el algoritmo de Back Propagation como se mencion&#180;o anteriormente y consiste en distribuir el error entre cada uno de los par&#180;ametros proporcionalmente desde la &#180;</P><P>ultima capa a la primera. Para calcular los nuevos par&#180;ametros, se puede utilizar alguno de los algoritmos de optimizaci&#180;on mencionados (GD o ADAM), con la peculiaridad de que el gradiente se le calcula a una funci&#180;on compuesta L(gk,y) para una red de k capas, es por ello que se hace uso de la regla de la cadena: </P><P>&#8706;p(q) &#8706;p &#8706;q </P><P>= (B.19)</P><P>&#8706;a &#8706;q &#8706;a </P><P>en donde p y q son funciones y a es una variable de la funci&#180;on q. Con esta f&#180;ormula ser&#180;a posible calcular el gradiente &#8711;Et(zij): </P><P>&#8706;L(gk &#9702; gk&#8722;1 &#9702;&#183;&#183;&#183;&#9702; gz &#9702;&#183;&#183;&#183;&#9702; g0,y)</P><P>&#8711;Et(zij) = (B.20)&#8706;w(zij) </P><P>para el par&#180;ametro w(zij) que representa el peso sin&#180;aptico que conecta a la neurona j en la capa z con la neurona i que se encuentra en la capa z &#8722;1.Usando la regla de la cadena recursivamente se pueden calcular las derivadas parciales para cada par&#180;ametro de la siguiente forma: </P><P>&#8706;L &#8706;gk &#8706;gz+1 &#8706;gz</P><P>&#8711;Et(zij) = &#183;&#183;&#183; (B.21)</P><P>&#8706;gk &#8706;gk&#8722;1 &#8706;gz &#8706;w(zij) </P><P>Se puede notar que si se selecciona la funci&#180;on de activaci&#180;on ReLU, su derivada ser&#180;a uno o cero dependiendo del valor de la variable independiente facilitando el c&#180;alculo del gradiente. </P><P>Podemos observar, que para el m&#180;etodo de aprendizaje de Back Propagation se ha utilizado una funci&#180;on de costo, un algoritmo de optimizaci&#180;on basado en Gradiente Descendiente con una tasa de aprendizaje. M&#180;ultiples experimentos cambiando estos hiperpar&#180;ametros podr&#180;an aportar mejoras en los resultados. </P></Sect><Sect><H3>B.4. M&#180;aquinas de Soporte Vectorial </H3><P>Sea el plano de la clase C1 definido como: </P><P>w&#8407; &#183; x&#8407;+ &#8722; b = 1 (B.22) </P><P>y el plano de la clase C2: </P><P>w&#8407; &#183; x&#8407;&#8722; &#8722; b = &#8722;1 (B.23) </P><P>en donde w&#8407; es un vector de valores &lt;w1, ..., wp > de los pesos para cada xi en donde i &#8712;{1, ..., p} para un problema de p variables de entrada. El escalar b orienta a los planos en una apropiada regi&#180;on del espacio y se buscar&#180;a su valor en un problema de optimizaci&#180;on. El vector &#8407;x tiene sub&#180;&#305;ndice + o &#8722; para denotar que pertenece a los puntos que resuelven las ecuaciones B.22 y B.23 respectivamente. Estos dos planos pueden ser representados por la siguiente funci&#180;on: </P><P>yi(w&#8407; &#183; x&#8407;i &#8722; b) &#8805; 1 (B.24) </P><P>en donde yi es igual a uno cuando &#8407;xi &#8712; C1 y a menos uno cuando &#8407;xi &#8712; C2 para cada &#8407;x1 elemento de una muestra de tama&#732;no n. Los planos B.22 y B.23 son paralelos entre s&#180;&#305;, debido a que cuentan con los mismos valores w&#8407; y b. Si se toma un vector x&#8407;+ que pertenece a B.22 y otro vector x&#8407;&#8722; que pertenece a B.23, la distancia entre ambos vectores ser&#180;a: </P><P>x&#8407;+ &#8722; x&#8407;&#8722; (B.25) </P><P>Si se encuentran dos vectores con el mismo &#180;</P><P>angulo desde el origen, entonces se podr&#180;a saber la distancia entre ambos planos, que ser&#180;a la distancia entre ambos vectores. Para encontrar dos vectores con estas caracter&#180;&#305;sticas, se puede encontrar la proyecci&#180;on de la resta B.25 con respecto a un plano definido por w&#8407; y que se sabe que es paralelo a B.22 y B.23: </P><P>(x&#8407;+ &#8722; x&#8407;&#8722;) &#183; w&#8407; </P><P>P roy(x&#8407;+ &#8722; x&#8407;&#8722;, w&#8407;) = (B.26)</P><P>&#8741;w&#8407;&#8741; x&#8407;+ &#183; w&#8407; &#8722; x&#8407;&#8722; &#183; w&#8407; </P><P>= (B.27)</P><P>&#8741;w&#8407; &#8741; 1+ b +1 &#8722; b </P><Table><TR><TD>= </TD><TD/><TD>&#8741; &#8407;w&#8741; </TD><TD>(B.28) </TD></TR><TR><TD/><TD>2 </TD><TD/><TD/></TR><TR><TD>= </TD><TD/><TD/><TD>(B.29)</TD></TR></Table><P>&#8741;w&#8407; &#8741; </P><P>y como se busca encontrar el plano que maximice la distancia entre los dos planos B.22 y B.23, el problema de optimizaci&#180;on quedar&#180;a de la siguiente forma: </P><P>2 </P><P>M&#180;ax&#8407; (B.30)</P><P>w,b </P><P>&#8741;w&#8407;&#8741; </P><P>Sujeto a: w&#8407; &#183; &#8407;x &#8722; b &#8805; 1 &#8704;&#8407;x &#8712; C1 (B.31) w&#8407; &#183; &#8407;x &#8722; b &#8804;&#8722;1 &#8704;&#8407;x &#8712; C2 (B.32) </P><P>2</P><P>Maximizar equivale a minimizar &#8741;w&#8407;&#8741; y esto a su ves es equivalente a</P><P>&#8741;w&#8407;&#8741; </P><P>minimizar 1 &#8741;w&#8407; &#8741;2 la cual se usar&#180;a en lo sucesivo por ser una expresi&#180;on matem&#180;ati</P><P>2 </P><P>camente conveniente para la determinaci&#180;on del gradiente. </P><P>Los multiplicadores de Lagrange (Hansen, 1999) que cambian la funci&#180;on de optimizaci&#180;on, permiten convertir el problema de optimizaci&#180;on en uno m&#180;as sencillo en el caso de que sea m&#180;as f&#180;acil (una ecuaci&#180;on m&#180;as sencilla) encontrar un &#180;</P><P>optimo local en las restricciones. Cuando se aplican los multiplicadores de Lagrange a un problema de optimizaci&#180;on, se obtiene uno segundo llamado dual y al primer problema que se ten&#180;&#305;a se le denomina primal. Aplicando los multiplicadores de Lagrange al problema de optimizaci&#180;on primal que se estaba tratando, se obtendr&#180;a el siguiente problema dual: </P><P>n</P><P></P><P>L(w, b, &#945;&#8407; )= 1 &#8741;w&#8407; &#8741;2 &#8722; &#945; [yi(w&#8407; &#183; x&#8407;i &#8722; b) &#8722; 1] (B.33)</P><P>2 </P><P>i=1 </P><P>para encontrar un m&#180;aximo de la funci&#180; w, b, &#945;) se requiere calcular los</P><P>on L( &#8407; gradientes: </P><Table><TR><TD/><TD>n&#8706;L( &#8407;w, b, &#945;) = &#8407;w &#8722; &#945;yi &#8407;xi = 0 &#8706; &#8407;w i=1 </TD><TD>(B.34) </TD></TR><TR><TD>y </TD><TD/><TD/></TR><TR><TD/><TD>n&#8706;L( &#8407;w, b, &#945;) = &#8722; &#945;yi = 0 &#8706;b i=1 </TD><TD>(B.35) </TD></TR></Table><P>De la ecuaci&#180;on B.34 se puede despejar w&#8407; y sustituir en la ecuaci&#180;on B.33 obteniendo la siguiente ecuaci&#180;on: </P><P>L( &#8407;w, b, &#945;)= </P><P>&#63723;&#63734;</P><P>nn</P><P></P><P>1 </P><P>&#945;iyix&#8407;i &#183; &#63725;&#945;j yjx&#8407;j &#63736;</P><P>2 </P><P>i=1 j=1 </P><P>&#63723;&#63734;</P><P>nn</P><P>&#63725;&#63736;</P><P>&#8722; &#945;iyix&#8407;i &#183; &#945;j yjx&#8407;j </P><P>i=1 j=1 </P><P>nn</P><P></P><P>&#8722; b&#945;iyix&#8407;i + &#945;i (B.36) i=1 i=1 </P><P>La ecuaci&#180;on B.36 puede resumirse en la siguiente: </P><P>n nn</P><P></P><P>1 </P><P>L( &#8407;&#945;i &#8722; xi &#8407; (B.37)</P><P>w, b, &#945;)= &#945;i&#945;jyiyj &#8407; &#183; xj</P><P>2 </P><P>i=1 i=1 j=1 </P><P>Se puede observar que el problema de optimizaci&#180;on depende de x&#8407;i &#183; x&#8407;j por lo que la elecci&#180;on de estos vectores deber&#180;a ser la apropiada. Para ello, se ide&#180;o el llamado Truco del Kernel. Se llama como Truco del Kernel o Truco del N&#180;ucleo cuando se aplica una de estas transformaciones a los datos lo cual permite mejorar la interpretaci&#180;on de estos en varias dimensiones debido a que crece su relaci&#180;on cuando se les aplican algunos tipos de transformaciones. Por ejemplo, y = x implica que existe una correlaci&#180;on lineal de uno entre y y x, si se aplica </P><P>2</P><P>la transformaci&#180;on y = x , se tendr&#180;a una relaci&#180;on no lineal, creciente a medida que x crece a diferencia de la relaci&#180;on (constante) de la ecuaci&#180;on inicial. Cuando se aplica una transformaci&#180;on (funci&#180;on) a un conjunto en Rn que resulta en un conjunto en Rm , se dice que esta funci&#180;on es un Kernel que mapea al espacio Rn en el espacio Rm . Dependiendo del Kernel elegido, se obtendr&#180;an resultados diferentes, es por ello que se recomienda realizar diferentes experimentos con diferentes n&#180;ucleos. Dos de ellos se definen a continuaci&#180;on: </P><P>1. Kernel Polinomial </P><P>T</P><P>K(x&#8407;i, x&#8407;j )=(x&#8407;i &#183; x&#8407;j &#8722; &#952;)d (B.38) </P><P>en donde &#952; y d son hiperpar&#180;ametros que se pueden obtener a trav&#180;es de m&#180;ultiples experimentos. </P><P>2. Kernel Gaussiano </P><P>1 </P><P>K(x&#8407;i, x&#8407;j) = exp 2&#963;2 &#8741;x&#8407;i &#8722; x&#8407;j&#8741;2 (B.39) </P><P>en donde &#963; es un hiperpar&#180;ametro que puede obtenerse por medio de m&#180;ultiples experimentos o con el c&#180;alculo de la desviaci&#180;on est&#180;andar de los datos. </P></Sect></Part></TaggedPDF-doc>