Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Nacional del Centro de la Prov. de Bs. As. Facultad de Ciencias Exactas Sistema de recomendación para profesionales de la econoḿıa y el derecho Trabajo final presentado por Laugas Nicolas Dirigido por Dr. Juan Manuel Rodriguez y Dra. Antonela Tommasel para obtener el titulo de Ingenieŕıa de Sistemas 2022 Índice general Agradecimientos 6 1. Introducción 7 1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3. Organización del informe . . . . . . . . . . . . . . . . . . . . . . . . . 9 2. Marco teórico 11 2.1. Sistemas de recomendación . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2. Clasificación de los sistemas de recomendación . . . . . . . . . . . . . 12 2.3. Filtrado basado en Contenido . . . . . . . . . . . . . . . . . . . . . . 12 2.4. Filtrado Colaborativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.1. Filtrado colaborativo basado en Memoria . . . . . . . . . . . . 18 2.4.2. Filtrado colaborativo Basado en Modelos . . . . . . . . . . . . 20 3. Propuesta 26 3.1. Descripción de la herramienta comercial . . . . . . . . . . . . . . . . 26 3.2. Propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3. Sistema de recomendación . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.1. Proceso de recomendación . . . . . . . . . . . . . . . . . . . . 31 3.3.2. Modelado de perfiles de clientes y generación de transacciones 34 3.3.3. Técnicas empleadas . . . . . . . . . . . . . . . . . . . . . . . . 36 4. Implementación 38 4.1. Arquitectura de la solución . . . . . . . . . . . . . . . . . . . . . . . . 38 2 Índice general 3 4.1.1. ETL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.2. API Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.1.3. Servicio de clusterización . . . . . . . . . . . . . . . . . . . . . 42 4.1.4. Servicio de reglas de asociación . . . . . . . . . . . . . . . . . 43 4.1.5. Servicio de recomendación . . . . . . . . . . . . . . . . . . . . 44 4.2. Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.1. Algoritmo Kmeans . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.2. Algoritmo KNN . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.3. Algoritmo Apriori . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3. Tecnoloǵıas Empleadas . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.3.1. Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.3.2. Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.3.3. Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.3.4. Scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3.5. React . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5. Evaluación experimental 53 5.1. Métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.2. División del Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.3. Ajuste de Parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6. Conclusiones 64 6.1. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.2. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Índice de figuras 2.1. Recomendación basada en contenido . . . . . . . . . . . . . . . . . . 13 2.2. Recomendación colaborativa . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Ejemplo de k vecinos cercanos al usuario activo (punto verde) . . . . 20 2.4. Clusters generado por k-means . . . . . . . . . . . . . . . . . . . . . . 22 2.5. Factorización de matrices . . . . . . . . . . . . . . . . . . . . . . . . 24 3.1. Herramienta comercial de búsqueda de documentos . . . . . . . . . . 28 3.2. Sistema de recomendación integrado a la herramienta comercial de la empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3. Esquema del proceso de recomendación . . . . . . . . . . . . . . . . . 31 3.4. Ejemplo del registro que guarda la herramienta comercial cuando un cliente accede a un documento . . . . . . . . . . . . . . . . . . . . . . 32 4.1. Esquema de la arquitectura del sistema de recomendación . . . . . . . 39 4.2. Clientes en el espacio multidimensional de secciones con reducción de dimensiones (t-SNE) y agrupados en 6 clústers diferentes . . . . . . . 46 4.3. Gráfico de los clientes representados en el espacio multidimensional de T́ıtulos de documentos con reducción de algoritmo (t-SNE). . . . . 47 4.4. Dashboard Login, Atributos, Direccion . . . . . . . . . . . . . . . . . 51 4.5. Secciones de los documentos . . . . . . . . . . . . . . . . . . . . . . . 52 5.1. Mapa de calor de cantidad de clientes en la República Argentina entre el año 2015 al 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.2. Frecuencia de lectura de documentos de los clientes F́ısicos de la pro- vincia de Buenos Aires . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4 Índice de figuras 5 5.3. Gráfico del método del codo. En donde se ve que a partir de valores de k mayores a 6 la distancia media de los clientes con los clústers permanece entre 0.01 y 0.017 . . . . . . . . . . . . . . . . . . . . . . . 60 Agradecimientos Quiero agradecer a la Universidad y sus docentes los cuales me trasmitieron todo su conocimiento para mi formación como profesional. Por una parte a la secretaria de extensión de la facultad por las becas de contraprestación como las ayudant́ıas a materias remunerativas. Por otra parte al departamento de bienestar quien me otorgó becas económicas durante toda la carrera. También quiero agradecer a mi familia y amigos quien me acompañaron en todos estos años de carrera. Por último, pero no menos importante quiero agradecer a mis directores, los cua- les brindaron su dedicación constante y fueron una gúıa indispensable durante el desarrollo de este trabajo, el cual me beneficio académicamente como laboralmente. 6 Caṕıtulo 1 Introducción En la práctica legal y contable, el acceso de los profesionales a la documentación juŕıdica (leyes, códigos, jurisprudencia y normativas, entre otros), es de vital impor- tancia. Tales accesos implican la realización de búsquedas exhaustivas o el análisis de la relevancia de los documentos y son dichos accesos los que pueden determinar el fracaso o el éxito de los profesionales. En este contexto, considerando la gran canti- dad de documentos existentes, facilitar el acceso a dicha información resulta cŕıtico para ayudar en la reducción de los esfuerzos requeridos para obtener la información relevante. La información legal de fuentes oficiales (por ejemplo, la publicada por el Go- bierno al promulgar las leyes, como en el caso de Infoleg1) se encuentra fácilmente disponible hoy en d́ıa a través de Internet y portales dedicados de diversas iniciativas comerciales. Sin embargo, la información en estas fuentes a menudo no se encuentra organizada ni vinculada, además de que el uso de sistemas de sugerencias o recomen- daciones no se encuentra ampliamente difundido. Esta situación limita la utilidad de dichas fuentes para los usuarios dado que presentan la información de una forma no curada, dificultando aśı su búsqueda. Asistentes legales, contadores, economistas y abogados necesitan contar con do- cumentos que se encuadren mejor dentro de su ámbito profesional y a la vez permi- tan especificidades, como por ejemplo “macroeconomı́a” o “civil y comercial”. Para cumplir con dichas premisas, en la actualidad se ofrecen sistemas de conocimiento 1http://www.infoleg.gob.ar/ 7 Caṕıtulo 1. Introducción 8 integrado que combinan información,actualidad y análisis a través de búsqueda, pu- blicaciones, aplicaciones tecnológicas, libros y seminarios. Como complemento, estas herramientas también ofrecen el contacto de profesionales especialistas, lo que genera una sobrecarga de información en las herramientas. En el contexto actual del problema de la sobrecarga de información, los sistemas de recomendación surgen como una alternativa para su mitigación. Los Sistemas de Recomendación [1] permiten proveer a los usuarios servicios personalizados en dis- tintas tareas que van desde el filtrado de información relevante hasta la selección de personas con las cuales establecer nuevos v́ınculos, de acuerdo a su perfil de intere- ses y comportamiento. Asimismo, la calidad las recomendaciones también resulta un determinante para que los usuarios permanezcan y retornen a la plataforma de consulta de contenido. 1.1. Motivación En Argentina existen servicios para abogados, contadores y economistas que ofre- cen acceso a documentos legales curados y actualizados para facilitar sus tareas. Para los accesos, dichas plataformas proveen sistemas de búsqueda por temas, palabras claves, sector de novedades, entre otros. Sin embargo, debido a la creciente cantidad de documentos, dichos sistemas de búsqueda pueden ser ineficientes. Por lo gene- ral todos los documentos no superan las tres páginas y en algunos casos contienen anexos a otros documentos logrando vinculaciones entre si. Sin embargo, la cantidad de documentos que se generan mensualmente rondan entre los 3000 y 3200. Los sistemas de recomendación resultan ser muy útiles ayudando a seleccionar documentos dentro de grandes espacios de búsqueda. La mayoŕıa de estos sistemas se basan en que los individuos con preferencias similares, tenderán a elegir documentos similares, e incluso a realizar valoraciones similares de los documentos. Dada su independencia del dominio, técnicas como el filtrado colaborativo basados en ı́tems [5, 6] o filtrado colaborativo basados en usuarios [7, 8] pueden ser aplicados sin mayor problema en sistemas legales [9]. En resumen, la motivación principal de este trabajo es ampliar las capacidades y servicios de una plataforma comercial dedicada a proveer el acceso a fuentes legales a Caṕıtulo 1. Introducción 9 partir de la integración de un sistema de recomendación. Se espera que este sistema mejore el acceso a la información por parte de los usuarios reduciendo los tiempos de búsqueda y eliminando documentos irrelevantes de los resultados. Desde el punto de vista comercial, la provisión de resultados de búsqueda más precisos, incrementaŕıa el valor agregado de la plataforma, transformándose en una ventaja competitiva en el mercado. 1.2. Objetivos El objetivo general de este plan de trabajo consiste en desarrollar un sistema de recomendación de documentos legales para ser integrado en una herra- mienta comercial. En este contexto, se definen los siguientes objetivos espećıficos: Analizar la información disponible para caracterizar documentos y usuarios. Diseñar técnicas de perfilado y segmentación de usuarios basados en carac- teŕısticas personales y referidas al contenido consumido. Implementar y evaluar la técnica de recomendación considerando los perfiles generados. Integrar el prototipo en la plataforma comercial. 1.3. Organización del informe Este documento se encuentra organizado de la siguiente manera: El Caṕıtulo 2 expone detalladamente los aspectos teóricos a desarrollar en el tra- bajo. Es decir, se explica el funcionamiento de los sistemas de recomendación recopi- lando antecedentes, investigaciones previas y consideraciones teóricas para sustentar el presente trabajo. El Caṕıtulo 3 aborda el desarrollo del trabajo, explicando el funcionamiento de la plataforma comercial y sus limitaciones, para luego entrar en detalle de cómo se manipula y representa la información para construir el sistema de recomendación, mencionando los enfoques propuestos. Caṕıtulo 1. Introducción 10 El Caṕıtulo 4 hace énfasis en la implementación del sistema de recomendación. Empezando con la arquitectura y explicando en detalle los enfoques propuestos con los algoritmos de machine learning involucrados. Por último, se detalla la implemen- tación realizada. El Caṕıtulo 5 describe los resultados de la evaluación experimental realizada. Se comienza definiendo las métricas para evaluar el rendimiento del sistema de reco- mendación. Luego, se procede a la descripción de la preparación de los datos con las caracteŕısticas relevantes. Como paso final, se detallan los resultados obtenidos. Por último, en el Caṕıtulo 6 presenta la conclusión general del trabajo realizado y se proponen potenciales trabajos futuros. Caṕıtulo 2 Marco teórico En este Caṕıtulo se realiza una introducción a conceptos relacionados con los sistemas de recomendación, su funcionamiento y cómo se clasifican, detallando y ejemplificando técnicas de filtrados basado en contenido y filtrado colaborativo. Lue- go, se realiza una presentación general sobre los aspectos teóricos relacionados a los sistemas de recomendación colaborativos. 2.1. Sistemas de recomendación Los sistemas de recomendación son técnicas y herramientas utilizadas para brin- dar sugerencias en forma automatizada acerca de ı́tems que puedan ser de utilidad para un usuario en un dominio particular. En otras palabras, son un tipo espećıfico de filtro de información cuyo objetivo es mostrar solo aquella que pueda ser relevante o de interés para el usuario [1]. Los sistemas de recomendación se basan en perfilar a los usuarios e ı́tems a ser recomendados para determinar cómo establecer relaciones entre ellos. Dichos perfiles se construyen mediante la recolección de la información que los usuarios proveen al sistema. Esta información puede obtenerse de forma expĺıcita o impĺıcita. En el caso de la expĺıcita, se espera que los usuarios expresen qué contenidos les interesan o resultan relevantes. Por ejemplo, algunos sistemas solicitan a los usuarios que después de haber interactuado con el producto recomendado (por ejemplo, una peĺıcula, documento o libro, entre otras posibilidades) le asignen una valoración en 11 Caṕıtulo 2. Marco teórico 12 la escala de 0 a 5 estrellas o valoraciones binarias como “me gustó” o “no me gustó”. Por el contrario, la información impĺıcita es obtenida a partir de las acciones que realiza el usuario en el sistema. Por ejemplo, si el usuario leyó, ignoró, contestó, guardó o borró un mensaje o una encuesta, o incluso si escuchó de forma completa o no una canción recomendada en una plataforma musical o de video. Un sistema de recomendación tiene dos objetivos principales: i) sugerir ı́tems en los que se ajusten a las preferencias individuales del usuario, y ii) predecir la utilidad de un ı́tem espećıfico para un usuario en particular (por ejemplo, predecir la valoración que un usuario dará a un ı́tem). En este contexto, los sistemas de recomendación pueden ser vistos como una función de utilidad que predice cuánto puede satisfacer un ı́tem a un usuario. Sea U el conjunto de todos los usuarios e I el conjunto de todos los ı́tems recomendables, y sea f una función midiendo la utilidad de un ı́tem i al usuario u, es decir, f : U× I→ R, donde R es un conjunto ordenado. Entonces para cada usuario u ∈ U, queremos elegir ı́tems i ∈ I tal que maximicen f. ∀u ∈ U, i′u = argmax(f(u, i))i ∈ I (2.1) 2.2. Clasificación de los sistemas de recomenda- ción Existen diversos enfoques para efectuar las recomendaciones, cada uno con sus caracteŕısticas y contextos particulares. Si bien a continuación se detallarán el filtrado basado en contenido, y el filtrado colaborativo también existen otros enfoques tales como sistemas de recomendación basados en conocimiento [2], basados en datos demográficos [3] , semánticos [4]o h́ıbridos [18]. 2.3. Filtrado basado en Contenido Este tipo de técnica tiene como propósito usar los atributos que representan a los ı́tems para recomendar otros ı́tems similares a los que el usuario ha mostrado interés en el pasado. La ventaja de este filtrado es que solo necesita de información sobre los ı́tems del catálogo, sin necesidad de contar con información del usuario al Caṕıtulo 2. Marco teórico 13 que se le harán las recomendaciones. Por dicho motivo, esta técnica puede resultar de utilidad para casos en los que no exista historial suficiente del usuario a evaluar (por ejemplo, cuando un usuario se ha registrado recientemente en el sistema). Una de sus mayores cualidades es la de su adaptación a estructuras que no cuentan con una gran cantidad de usuarios y, por lo tanto, se ven imposibilitadas de crear una red de perfiles colaborativos. La desventaja es que las recomendaciones que se obtengan (por ejemplo, las potenciales valoraciones de los ı́tems) son idénticas para todos los usuarios, perdiendo la posibilidad de personalización como se observa en la Figura 2.1. Figura 2.1: Recomendación basada en contenido En el contexto de alquiler de peĺıculas, el Cuadro 2.1 muestra un ejemplo de valoraciones que diferentes usuarios asignaron a diversas peĺıculas. En este caso, ∅ representa que el usuario no valoró la peĺıcula correspondiente. Las valoraciones se encuentran en el rango de 1 hasta el 10, los cuales representan la peor y mejor pun- tuación posibles. Por su parte, las peĺıculas cuentan con información adicional de su género, el cual será utilizado para realizar recomendaciones basadas en conteni- do. En el ejemplo se observa que Pepe no realizó ninguna valoración a la peĺıcula Chuky dentro del género Terror. Basándose en las valoraciones que Pepe realizó a Caṕıtulo 2. Marco teórico 14 las peĺıculas del mismo género, El Conjuro con una valoración de 10 y Frankenstein con una valoración de 8, el sistema de recomendación basado en contenido resuelve que es apropiado recomendar Chuky. Análogamente dadas las valoraciones que Sil- via realizó a las peĺıculas mencionadas, resulta que no es apropiado recomendarle peĺıculas del género Terror. Peĺıculas Usuarios Pepe Paula Carlos Silvia Chuky (terror) ∅ 3 2 ∅ John Wick (acción) 5 ∅ 3 2 Querido John (romántica) 2 ∅ ∅ 7 Avengers (acción) 8 9 ∅ ∅ El conjuro (terror) 10 3 2 3 Diario de una pasión (romántica) 3 2 9 8 Frankenstein (terror) 8 1 6 2 Cuadro 2.1: Tabla de valoraciones de peĺıculas En el contexto mencionado de recomendación de peĺıculas, los ı́tems poseen atri- butos que los representan. No obstante, esto no siempre es aśı, como por ejemplo sitios web, art́ıculos de noticias o documentos sin formato. Para estos casos, existen ciertas técnicas que permiten extraer datos de forma automática para estructurarlos en la forma de atributos o metadata. Una primera aproximación al análisis de texto es medir la relevancia de cada palabra con un valor (también denominado peso) que se corresponde con alguna función calculada sobre la frecuencia de aparición de la palabra correspondiente en el documento. Uno de los métodos más conocidos para asignar un peso a las palabras de un documento es el “Term Frequency–Inverse Do- cument Frequency” (TF-IDF) [11]. Esta técnica permite ordenar a las palabras de acuerdo a su importancia dentro de los documentos. Dado que este método opera a nivel léxico, no reconoce la existencia de relaciones entre palabras, por lo que pala- bras que efectivamente se encuentran relacionadas por compartir sintaxis (como por ejemplo, distintas conjugaciones de los verbos) son consideradas de forma indepen- diente. En este contexto, para reducir el vocabulario involucrado, se puede utilizar el método de stemming [10], el cual trata de reducir las palabras a su ráız (también denominado lexema), de forma de reducir la variabilidad léxica de los términos ob- teniendo un único lexema que los represente. Por ejemplo, en el caso de los verbos, Caṕıtulo 2. Marco teórico 15 las diferentes conjugaciones de un mismo verbo serán reducidas a la forma base del mismo. Uno de los problemas de este tipo de representación es que no se tiene en cuenta el contexto. Por ejemplo, si en la descripción de una computadora aparece la frase: “La computadora es apta para diseñadores, pero no para jugadores”, el sistema podŕıa entender, si no se tiene en cuenta el contexto, que al aparecer las palabras “diseñador” y “jugador”, la computadora es apta para los dos tipos de usuarios: diseñadores y jugadores. En este contexto, es precisa la aplicación de técnicas espećıficas del Pro- cesamiento de Lenguaje Natural (Natural Language Processing, NLP) que permitan la integración del contexto en dicho análisis. Es decir, utilizar técnicas que no solo realicen un análisis léxico y/o sintáctico (como el stemming o la ponderación con TF- IDF previamente mencionada), sino que también incorporen un análisis semántico o pragmático, como por ejemplo la representación con embeddings. 2.4. Filtrado Colaborativo Son un tipo de sistemas de recomendación para los que se agrupan usuarios que tienen caracteŕısticas o gustos similares entre śı como se muestra en la Figura 2.2. Si a un sub-conjunto del grupo de usuarios le interesa un determinado ı́tem, puede suponerse que ese mismo ı́tem resultará de interés al resto de usuarios de ese grupo. En otras palabras, la recomendación se hará en función de la concordancia entre los usuarios respecto a las relaciones previas con los ı́tems, obteniendo aśı resultados más personalizados que los del filtrado basado en contenido. Estos sistemas presentan el problema de cuando un nuevo usuario se registra al sistema, no es posible realizarle recomendaciones debido a que, al no haber realizado ninguna actividad en el sistema, no se conocen sus intereses o caracteŕısticas, con lo que no es posible ubicarlo en ningún grupo de usuarios. Lo mismo sucede en aquellos casos con los ı́tems que no cuentan con valoraciones por parte de los usuarios. Dentro del filtrado colaborativo pueden utilizarse para realizar recomendaciones dos tipos de aproximaciones diferentes. En primer lugar, las basadas en los usuarios, la cual considera que la valoración de un ı́tem que todav́ıa no fue realizada por un usuario puede estimarse considerando el historial de valoraciones realizadas por Caṕıtulo 2. Marco teórico 16 Figura 2.2: Recomendación colaborativa sus usuarios similares. En segundo lugar, las recomendaciones también pueden ser realizadas basadas en los ı́tems, a partir de las valoraciones previas recibidas por los ı́tems similares. Recomendaciones basadas en usuarios: Estas técnicas se basan en una premisa simple de similitud entre los intereses de usuarios similares. Es este sentido, se basan en que si una persona A tiene la misma opinión que una persona B sobre un tema, es más probable que A tenga la misma opinión que B respecto a otro tema diferente, que la opinión que tendŕıa una persona elegida al azar [12]. Caṕıtulo 2. Marco teórico 17 Peĺıculas Usuarios Pepe Paula Carlos Silvia Lucas Chuky (terror) ∅ 3 2 ∅ 3 John Wick (acción) 5 ∅ 3 2 4 Querido John (romántica) 2 ∅ ∅ 7 8 Avengers (acción) 8 9 ∅ 4 3 El conjuro (terror) 10 3 2 3 2 Diario de una pasión (romántica) 3 2 9 ∅ 10 Frankenstein (terror) 8 1 6 6 5 Cuadro 2.2: Tabla de valoraciones de peĺıculas Teniendo en cuenta el Cuadro 2.2 se quiere predecir valoraciones de peĺıculas para Silvia, en adelante llamado usuario activo. Como se puede observar Silvia, Carlos y Lucas poseen preferencias similares. En consecuencia, el sistema de recomendación basado en filtrado colaborativo determina que no es apropiado recomendarle a Silvia la peĺıcula Chuky, debido a que tanto Carlos como Lucas le dieron valoraciones negativas. De forma análoga, es posible determinar que unarecomendación apropiada para Silvia es la peĺıcula Diario de una pasión. Recomendaciones basadas en los ı́tems: Este método desarrollado por Amazon realiza las recomendaciones basándose en la similitud entre las valoraciones de los ı́tems realizadas por los usuarios [13]. Esta técnica mejora la escalabilidad del sistema debido a que la similitud entre ı́tems es más estable que entre usuarios y, además es posible calcular con anterioridad las similitudes de los ı́tems de forma offline, ganando facilidad en la implementación y el mantenimiento. Caṕıtulo 2. Marco teórico 18 Peĺıculas Usuarios Pepe Paula Carlos Silvia Lucas Chuky (terror) ∅ 3 2 4 ∅ John Wick (acción) 5 ∅ 3 2 4 Querido John (romántica) 2 ∅ ∅ 7 8 Avengers (acción) 8 9 ∅ 4 3 El conjuro (terror) 10 3 2 3 2 Diario de una pasión (romántica) 8 2 1 5 3 Frankenstein (terror) 3 2 9 ∅ 10 Cuadro 2.3: Tabla de valoraciones de peĺıculas A modo de ejemplo, vamos a estimar la valoración de la peĺıcula Chuky. Como se puede observar en el Cuadro 2.3, la peĺıcula Diario de una pasión, El Conjuro y Chuky poseen valoraciones similares. Luego, el sistema de recomendación colaborati- vo basado en ı́tems toma las valoraciones de Pepe y estima una alta valoración para la peĺıcula Chuky. De forma similar, el sistema puede predecir una baja valoración para la peĺıcula Chuky tomando las valoraciones de Lucas. Los sistemas de filtrado colaborativo se clasifican en dos tipos, basados en me- moria y basados en modelos, los cuales son descritos a continuación. 2.4.1. Filtrado colaborativo basado en Memoria Estas técnicas utilizan todo el conjunto conocido de ı́tems y usuarios, es decir, toda la base de datos de entrada es cargada en memoria y se utiliza directamente para realizar las recomendaciones. Las técnicas basadas en filtrado colaborativo ba- sados en memoria emplean métodos estad́ısticos para encontrar los k ı́tems o usuarios más similares, tales como la correlación de Pearson, distancia Eucĺıdea y la similitud basada en el Coseno [14]. Entre sus inconvenientes se encuentra la necesidad de dis- poner de un número mı́nimo de k vecinos. Existen estudios, como por ejemplo [15], que determinaron que en la mayoŕıa de las aplicaciones, considerar entre 20 y 30 vecinos permite alcanzar resultados óptimos. Sin embargo, esta técnica puede sufrir problemas de escalabilidad debido a la gran cantidad de información a procesar. Un Caṕıtulo 2. Marco teórico 19 ejemplo de esto son los sistemas de e-commerce, donde existen millones de usua- rios e ı́tems, lo cual afecta significativamente su velocidad de respuesta. Por esta razón, existen técnicas basadas en modelos que solucionan dichos problemas que se detallaran en la Sección 2.4.2. A continuación se describirá el algoritmo que permiten encontrar los K ı́tems o usuarios más similares: K-Nearest Neighbors. Se trata de un algoritmo de Machi- ne Learning de tipo supervisado el cual puede ser usado para resolver problemas de regresión y clasificación. En la Figura 2.3 se muestra un ejemplo de K-Nearest Neighbors (K-NN). Los puntos azules y verdes representan usuarios o ı́tems de la base de datos. Cada usuario o ı́tem es representado por un vector multidimensional, donde cada dimensión representa a una caracteŕıstica del mismo. Continuando con el ejemplo del dominio de peĺıculas y en un filtrado colabora- tivo basado en usuarios, el vector multidimensional representa las valoraciones de los usuarios en el espacio de dimensiones de peĺıculas. El punto verde, representa un usuario activo para el cual se quieren encontrar sus vecinos más cercanos. El algorit- mo de K-NN calcula la distancia entre el punto verde y todos los restantes, siendo K el parámetro que representa la cantidad de vecinos más cercanos que se quieren obtener. Con un k = 3 obtiene los tres vecinos dentro del primer ćırculo y con un k = 5 adicionan los vecinos dentro del segundo ćırculo. Caṕıtulo 2. Marco teórico 20 Figura 2.3: Ejemplo de k vecinos cercanos al usuario activo (punto verde) Posteriormente, al obtener los k vecinos cercanos al usuario activo, el sistema puede estimar la predicción de una valoración para una peĺıcula desconocida por dicho usuario, considerando como entrada las valoraciones que dieron sus vecinos a esas peĺıculas desconocidas. Luego, con las estimaciones de las valoraciones rea- liza las recomendaciones de aquellas peĺıculas que tuvieron estimaciones altas. En la Ecuación 2.2 se puede ver una alternativa para estimar las valoraciones que un usuario podŕıa darle a las peĺıculas desconocidas, en función de las valoraciones de sus vecinos más cercanos: Rc,s = 1 N ∑ c∈C Rc,s (2.2) Donde C es el conjunto de N usuarios que son más similares al usuario c y que evaluaron la peĺıcula s. 2.4.2. Filtrado colaborativo Basado en Modelos A diferencia de las técnicas basadas en memoria que basan sus recomendaciones en el cálculo de semejanza con todo el conjunto de usuarios e ı́tems, las técnicas Caṕıtulo 2. Marco teórico 21 basadas en modelos se basan en la definición y entrenamiento de modelos (gene- ralmente offline), los cuales son luego utilizados para realizar las recomendaciones. Estos modelos utilizan distintos algoritmos de clasificación, regresión, clusterización o factorización de matrices. En general, ante las consultas responden más rápido que los basados en memoria a consecuencia de requerir un costo computacional mayor para el aprendizaje intensivo [17]. A continuación se detallan tres algoritmos. Algoritmo de clusterización K-means. K-means es un algoritmo de agrupa- miento no supervisado que divide el conjunto de datos en k sub-conjuntos diferentes de acuerdo a las semejanzas entre sus atributos, donde cada punto pertenece a un único subgrupo [16]. El objetivo es detectar sub-conjuntos de usuarios de forma tal que los usuarios que pertenecen a un mismo sub-conjunto sean más similares en- tre ellos que con usuarios pertenecientes a otros sub-conjuntos. Por ejemplo, en el contexto de peĺıculas, esta técnica puede aplicarse para descubrir sub-conjuntos de usuarios relacionados a partir de las valoraciones que realizaron de las peĺıculas. Para realizar la partición, K-means realiza una búsqueda iterativa de los k grupos (o también llamados clusters) de puntos representando cada grupo mediante su cen- troide (el punto central del grupo) y asignando cada ejemplo al grupo con el centroide más próximo, como se observa en la Figura 2.4. Como primer paso, el algoritmo ini- cializa de forma aleatoria los k centroides entre los puntos en el espacio. En el paso siguiente, añade cada punto a la partición más cercana generada por los centroides. Finalmente, actualiza la ubicación de los centroides de cada grupo con el promedio de los puntos perteneciente a ese grupo. Este proceso finaliza cuando los centroides no sufran más modificaciones. En otras palabras, K-means resuelve un problema de optimización, cuyo objetivo es minimizar la suma de las distancias cuadráticas de cada punto al centroide de su cluster como indica la siguiente Ecuación, donde µi define la media de puntos en el subconjunto Si: argmin S k∑ i=1 ∑ xj∈Si ||xj − µi||2 (2.3) Por consiguiente, al momento de generar las recomendaciones para el usuario activo, se toman los k vecinos cercanos para predecir las valoraciones. En vez de Caṕıtulo 2. Marco teórico 22 Figura 2.4: Clusters generado por k-means tomar los vecinos más cercanos respecto al conjunto completo de usuarios, como realizan los recomendadores basados en memoria, en este caso, se considera como vecinos a aquellos usuarios que pertenecen al mismo sub-conjunto que el usuario activo, lo que permite resolver o, al menos, alivianar el problema de escalabilidad de las técnicas basadas en memoria. Algoritmo Apriori para reglas de asociación. En la tarea de asociación se buscan reglas que relacionanlos ı́tems que ocurren de forma frecuente entre las instancias de un conjunto de datos transaccional. Por ejemplo, si consideramos el conjunto de productos que los usuarios compraron en el supermercado (siendo cada compra una transacción), las reglas de asociación podŕıan ser utilizadas para identi- ficar productos que hayan sido comprados de forma simultánea. De forma análoga, Caṕıtulo 2. Marco teórico 23 en el contexto de peĺıculas, el algoritmo permite realizar recomendaciones de peĺıcu- las que son “co-vistas”frecuentemente, por ejemplo, dado una peĺıcula A vista por un usuario, qué tan probable es que dicho usuario vea otra peĺıcula B, si estas dos peĺıculas se encuentran relacionadas porque otros usuarios vieron ambas peĺıculas. Antes de entrar en los detalles del algoritmo, se definirá una serie de medidas de interés para la generación de reglas: Soporte: Se define como la popularidad de un ı́temset (I). El mismo puede ser calculado como el número de transacciones que contiene dicho ı́temset sobre el número total de transacciones (T). Sop(I) = |I| |T | (2.4) Confianza: Se define como la probabilidad de que un ı́temset (J) ocurra si otro ı́temset (I) ocurrió. Para esto, se calcula la popularidad de los ı́temset I y J sobre la popularidad de los ı́temset I. Conf(I ⇒ J) = Sop(I ∪ J) Sop(I) (2.5) Lift: Expresa cuál es la proporción del soporte. Un Lift de 1 significa que no hay aso- ciación entre el ı́temset I y J. Lift mayor que 1 significa que el ı́temset I y J son positivamente dependientes y un Lift menor a 1 negativamente dependientes. Lift(I ⇒ J) = Sop(I ⇒ J) Sop(J)Sop(J) (2.6) El algoritmo Apriori permite encontrar un conjunto de ı́temsets frecuentes en una base de datos transaccional dado un soporte limite como indica la Ecuación 2.4. De esta manera, el algoritmo hace una búsqueda exhaustiva por niveles de complejidad, es decir, de menor a mayor tamaño de ı́temsets. Para reducir el espacio de búsqueda aplica la norma de “si un itemset no es frecuente, ninguno de sus supersets (́ıtemsets de mayor tamaño que contengan al primero) puede ser frecuente”. El siguiente paso es crear las reglas de asociación a partir de cada uno de los ı́temsets frecuentes con una confianza dada como indica la Ecuación 2.5. Para cuantificar la calidad de las Caṕıtulo 2. Marco teórico 24 reglas y lograr tener mayor evidencia de que dicha regla representa un patrón real se puede utilizar el lift, como indica la Ecuación 2.6. Factorización de matrices La idea principal de este método consiste en factorizar una matriz de grandes dimensiones para construir otras dos de menores dimensiones, cuyo producto será una aproximación a la matriz original. En el contexto de peĺıculas, el producto de estos dos vectores es la interacción entre usuario y la peĺıcula y será una puntuación, lo más próxima posible, de este usuario a esa peĺıcula, como se ilustra en la Figura 2.5 1. Estos dos vectores son los llamados factores latentes. Los factores latentes son una propiedad o concepto que tiene un usuario o un elemento. Por ejemplo, para una peĺıcula, el factor latente puede referirse al género al que pertenece la peĺıcula. Figura 2.5: Factorización de matrices En la Ecuación 2.7 se puede ver la matriz A ∈ Rm×n donde m es el número de usuarios y n es el número de peĺıculas. Luego se tiene el producto punto de la matriz de embeddings de usuarios P ∈ Rm×d y la matriz de embedding de peĺıculas Q ∈ Rn×d siendo d la dimensión del espacio latente. Cada matriz de embeddings es representada como un vector de números reales con la premisa de que las peĺıculas o usuarios que tienen el mismo significado tienen una representación similar. Por ejemplo, como muestra en la Figura 2.5 la matriz de peĺıculas tiene como valor en la primer componente 0,9 para la peĺıcula Harry Potter a su vez, para la peĺıcula Shrek la matriz tiene como valor en la primer componente 1. Se puede inferir que 1https://developers.google.com/machine-learning/recommendation/collaborative/ basics Caṕıtulo 2. Marco teórico 25 son similares por el motivo que las peĺıculas están orientada para un público infantil y la segunda componente difieren porque pueden estar representando que Shrek es de animación y Harry Potter es de fantaśıa. A ≈ PQT (2.7) Para decidir qué matriz P y Q mejor aproximan a A o en otras palabras, aprender de manera automática embeddings del usuario y peĺıculas, podemos usar el algoritmo de descenso del gradiente. Este algoritmo es capaz de encontrar soluciones óptimas ajustando los parámetros de forma iterativa para minimizar una función. Es decir, este algoritmo tiene como objetivo minimizar el error cuadrado entre la calificación real de un usuario y la estimada con P y Q. En la Ecuación 2.8 se muestra la función a minimizar. mı́n P∈Rm×d,Q∈Rn×d ∥∥A− PQT∥∥2 (2.8) También se pueden calcular los factores P y Q con la descomposición en valores singulares (SVD) que permite descomponer una matriz en el producto de otras tres, como se muestra en la Ecuación 2.9. A ≈ UWV T (2.9) Siendo A la matriz de valoraciones de los usuarios de las peĺıculas, U es una matriz singular izquierda que representa la relación entre los usuarios y los factores latentes. En otras palabras, cuál es el interés de un usuario para una peĺıcula. W es una matriz diagonal que solo tendrá elementos no nulos en su diagonal principal y describe la fuerza de cada factor latente. Finalmente, V T es una matriz singular derecha que indica la similitud entre las peĺıculas y los factores latentes. Es decir, cuán relevante es una caracteŕıstica para las peĺıculas. Una vez que se obtuvo las matrices que mejor se aproximan a la matriz de valo- raciones se deben realizar las recomendaciones a los usuarios. Solo basta con realizar el producto entre dichas matrices y obtener las valoraciones de las peĺıculas que el usuario nunca valoró y recomendar las que mayor valoración posee o superan cierto umbral. Caṕıtulo 3 Propuesta En este Caṕıtulo se presentan los detalles de la solución propuesta. En primer lugar, para comprender el dominio en cuestión, se presenta una breve descripción de la herramienta comercial que la empresa provee a sus clientes. Luego, se realiza una descripción de forma general de las limitaciones de dicha herramienta y el sistema de recomendación como propuesta para resolver el problema. Por último, se describe la integración a la herramienta y se explica la estructura del sistema de recomendación. 3.1. Descripción de la herramienta comercial La herramienta comercial consta de un sistema web al cual el cliente puede regis- trarse a ciertos servicios según el tipo de suscripción que abona, con el objetivo de facilitar el acceso a información curada y actualizada en el campo de la práctica legal y contable dentro del ámbito profesional del cliente. Dicha información se encuentra en formato de documentos digitales y los servicios son herramientas que facilitan el acceso a los documentos que orientan al cliente a su trabajo diario. Los documentos tienen un t́ıtulo que especifica los datos importantes de su conte- nido para exponer e identificar al documento. A su vez, cada documento se encuentra asociado a un único tema espećıfico (determinado por su contenido), y los temas pue- den tener varios documentos. Además de los temas, los documentos pertenecen a un conjunto de secciones que describen el contenido en una forma más detallada. Por lo tanto, tema y sección se relacionan, de manera que las secciones se agrupan en 26 Caṕıtulo 3. Propuesta 27 un único tema. Por ejemplo, las secciones Impuestos laborales e Impuestos a las ga- nancias están contenidas dentro del tema Impuestos. Por ende, los documentos que contienen a la sección Impuestos a las ganancias tienen como tema Impuestos al igual que los documento que contienen como sección Impuestos laboraleso aquellos que tienen como secciones a ambos, Impuestos laborales e Impuestos a las ganancias. Uno de los servicios que la herramienta comercial provee es una interfaz de lectura de los documentos para que el cliente pueda leer su contenido sin necesidad de descargarlo o usar programas adicionales. A su vez, para facilitar el acceso a estos documentos, la herramienta provee un sistema de búsqueda por palabras claves. Por ejemplo, el cliente puede buscar por el t́ıtulo de un documento o parte de este y como resultado se obtienen documentos que coinciden con la búsqueda realizada. Además, la herramienta organiza los documentos con un ı́ndice de contenido, permitiendo al cliente buscar documentos de un cierto tema o sección en espećıfico como se muestra en la Figura 3.1. Por otra parte, la herramienta también permite acceder a los documentos me- diante un sistema de mailing, al cual el cliente se suscribe para recibir notificaciones v́ıa correo electrónico de nuevos documentos que tratan de ciertos temas previamente elegidos. Por ejemplo, si el cliente accedió a la lectura de un documento con el tema Impuestos, el sistema ofrecerá la opción de suscribirse a las novedades de documentos con contenido que incluyan el tema Impuestos. Por último, la herramienta provee de un servicio de consultas online a cargo de un equipo de profesionales. Éste, permite mediante una interfaz al cliente, consultar dudas generales especificando el tema o sección. Luego, dicha consulta es derivada al profesional correspondiente al tema, para que finalmente, el profesional responda las dudas y sugiera documentos dentro de la misma herramienta. Cuando el cliente hace uso de algunos de los servicios, la herramienta no solo entrega el documento relevante, sino que además registra las acciones que este realiza. Por ejemplo, cuando un cliente ingresa a la herramienta, busca un documento y lo lee, el sistema almacena un registro en una base de datos con los siguientes atributos: Cliente. Identificador único del cliente. Fecha. Fecha en la cual el cliente realizo la lectura del documento. Caṕıtulo 3. Propuesta 28 Figura 3.1: Herramienta comercial de búsqueda de documentos Tema de Documento. Nombre del tema al cual pertenece el documento. Sección de Documento. Nombre de la sección la cual pertenece el documento. Tı́tulo del Documento. Breve texto que introduce el contenido del documento. 3.2. Propuesta Si bien la herramienta provee varios servicios para satisfacer a los clientes en la búsqueda de información relevante para su labor diaria, no terminan de alcanzar exitosamente su objetivo. Esto se debe a que la información en el ámbito legal y contable cambia continuamente ocasionando el incremento de documentos dentro del sistema, por lo que se vuelve dif́ıcil el acceso a la nueva información. Cuando el cliente utiliza el sistema de búsqueda, depende de qué tan exacta es la palabra clave ingresada para filtrar la cantidad de documentos que retorna el bus- cador. Como desventaja, se pueden recuperar documentos que no eran de interés, insumiendo grandes tiempos de respuesta si el resultado total de las búsquedas inclu- ye una gran cantidad de documentos. Con respecto al sistema de mailing, el cliente al suscribirse en un tema, recibe diariamente correos electrónicos de todas las nove- dades de documentos que contienen el tema, lo que puede resultar contraproducente debido a que pueden incluirse documentos que no sean de su interés, pudiendo oca- sionar que los usuarios pierdan el interés en el servicio, no leyendo los correos o dándose de baja. Por último, el sistema de consultas online permite satisfacer las Caṕıtulo 3. Propuesta 29 necesidades de búsqueda de los clientes, pero resulta costoso de mantener por el equipo de profesionales, ya que tienen que estar pendiente a las dudas de los clientes y la infraestructura. Para mitigar dichas limitaciones, se propone integrar a los servicios ya existentes un sistema de recomendación. Los sistemas de recomendación resuelven el problema de la sobrecarga de información filtrando los documentos de manera automática de acuerdo a los intereses de cada cliente. En este contexto, el sistema seleccionará información proporcionada por los clientes de forma directa o indirecta y procederá a analizar y procesar el historial de los clientes para transformarla en conocimiento para las recomendaciones. Existen diversos tipos de sistemas de recomendación tales como el filtrado basado en contenido o filtrado colaborativo, entre otros, como se detalló en el Caṕıtulo 2. Debido al gran número de clientes dentro de la herramienta comercial y la clasifica- ción que tienen los documentos con respecto a su contenido se optó por desarrollar un sistema de recomendación con un enfoque de filtrado colaborativo basado en usua- rios, es este caso clientes. Este enfoque realiza las recomendaciones basándose en las valoraciones positivas de clientes con un perfil de gustos similar al que se quiere re- comendar, el llamado usuario activo. En el contexto de esta aplicación particular, se consideran como valoraciones, la frecuencia de lectura de un cliente para un docu- mento. Luego, para los documentos que nunca leyó se realiza una estimación de la frecuencia de lectura y luego se recomiendan los documentos de mayor frecuencia, o que superaron cierto umbral. Los enfoques de filtrado colaborativo pueden sufrir el problema del arranque en fŕıo, el cual surge cuando un cliente no generó el suficiente historial debido a, por ejemplo, un registro reciente en el sistema. En este contexto, para mitigar esta situa- ción, se optó por desarrollar como complemento un enfoque de filtrado colaborativo basado en ı́tems, en este caso los documentos. Este enfoque realiza las recomen- daciones basándose en la similitud entre la frecuencia de lectura de los documentos realizados por los clientes. De esta manera, el cliente que es nuevo en el sistema obtie- ne recomendaciones con el filtrado colaborativo basado en documentos, mientras que los clientes que ya tienen un historial dentro del sistema obtienen recomendaciones con el filtrado colaborativo basado en clientes. Caṕıtulo 3. Propuesta 30 Para llevar a cabo el filtrado colaborativo basado en clientes fue necesario generar los perfiles de clientes. La información para construirlos se obtuvo de la actividad registrada para los clientes dentro de la herramienta comercial. Dado que estas técni- cas se apoyan en la premisa simple de similitud entre los clientes, para obtener a los clientes con intereses similares al cliente activo se pueden utilizar dos técnicas, una basada en memoria que utiliza toda la base de datos en memoria, y la otra basada en modelos, como se describió en el Caṕıtulo 2. Considerando que las recomendaciones tienen que ser presentadas al cliente en tiempo real, se implementó un enfoque basado en modelos, que clasifica a los clientes en distintos segmentos de acuerdo a sus intereses comunes, es decir, sus vecinos. De esta manera, cuando el sistema provee las recomendaciones del cliente activo con el conjunto de vecinos más similares, solo tiene que buscar dentro del segmento donde pertenece y no en toda la base de datos de los clientes. Por otra parte, para efectuar el filtrado colaborativo basado en documentos fue necesario generar una base de datos transaccional. Es decir, las iteraciones que tuvieron todos los clientes dentro de la herramienta fueron vistas como transacciones de documentos para poder extraer reglas de lecturas de documentos. 3.3. Sistema de recomendación Antes de abordar la descripción del sistema de recomendación, es necesario ex- plicar cómo estará acoplado a la herramienta comercial. En la Figura 3.2 se presenta la estructura del sistema de recomendación integrado a la herramienta. En la parte izquierda del diagrama, se tiene la herramienta comercial que provee laempresa a sus clientes, mientras que en la parte derecha se encuentra el sistema de recomenda- ción propuesto que provee las recomendaciones de documentos para los clientes. La solución se retro-alimenta de las interacciones de los clientes en la herramienta. Para evitar que dicha herramienta se ralentice y ocasione un colapso, las interacciones se almacenan en una base de datos de copia o secundaria. Caṕıtulo 3. Propuesta 31 Figura 3.2: Sistema de recomendación integrado a la herramienta comercial de la empresa 3.3.1. Proceso de recomendación El sistema se divide en dos, una parte para manejar el arranque en fŕıo y otra parte para recomendaciones de los clientes de los que se tienen los datos de sus preferencias como se muestra en la Figura 3.3. Figura 3.3: Esquema del proceso de recomendación El proceso de recomendación comienza con el cliente activo, quien será el que Caṕıtulo 3. Propuesta 32 obtendrá las recomendaciones según sus preferencias. En otras palabras, el filtrado colaborativo basado en clientes obtiene como entrada información de las preferen- cias del cliente activo para compararlo con otros clientes con preferencias similares, y poder aśı recomendarle documentos que estos clientes similares vieron y el cliente activo aún no. Dicha información de preferencias es mejor conocida como los perfiles de clientes. El punto de partida para generar los perfiles de clientes son los docu- mentos que los clientes leen dentro de la herramienta. Cuando el cliente accede a un documento dentro de la herramienta, esta registra dicho evento, como se muestra en el ejemplo de la Figura 3.4. Figura 3.4: Ejemplo del registro que guarda la herramienta comercial cuando un cliente accede a un documento Luego, con el conjunto de todos los registros que generan todos los clientes se arman sus perfiles en dos niveles de abstracción distintos. El primer nivel de abs- tracción se basa en las secciones de los documentos que estos consumieron dentro del sistema, logrando una representación de intereses a nivel de secciones de documentos de cada cliente, mientras que el segundo nivel de abstracción se basa en los t́ıtulos de los documentos, logrando una representación de intereses a nivel de t́ıtulos de documentos. De esta manera, con el primer nivel de abstracción se agrupa a los clientes en clústeres que comparten documentos con secciones en común. Por ejemplo, un cliente que consume documentos incluidos en la sección Impuestos a las ganancias y t́ıtulo Relación de dependencia, y un cliente que consume documentos en la sección Impues- tos a las ganancias y t́ıtulo Exportación de servicios pertenecen al mismo clúster. Asi mismo, en ambos clientes es altamente improbable que les interesen documentos de otras secciones que salgan sus hábitos de lecturas. Entonces, clientes con hábitos de lecturas similares en el pasado, probablemente lean documentos similares en el futuro y al clusterizar se limita la búsqueda a clientes similares. Esto es algo que quizás no pase en otros dominios. Por ejemplo, en el caso de peĺıculas, alguien que Caṕıtulo 3. Propuesta 33 mira muchas peĺıculas de acción puede, ocasionalmente, ver un drama o una comedia romántica. A su vez, teniendo en cuenta la provincia en donde residen los clientes se pueden limitar mucho mas las búsquedas a clientes similares. Esto se debe a que las secciones, por ejemplo Impuestos a las ganancias, pueden derivar a documentos relacionados a una provincia en espećıfico. Es decir, un documento perteneciente a la sección Impuestos a las ganancias puede hacer referencia a contenido relacionado al impuesto en la provincia de Buenos Aires el cual es diferente al impuesto en la provincia de Córdoba. Luego, a partir de los clústeres previamente guardados, se realiza el proceso de búsqueda de vecinos cercanos al cliente activo teniendo en cuenta el segundo nivel de abstracción. Es decir, se obtienen los vecinos que hayan léıdo documentos con el mismo t́ıtulo que leyó el cliente activo. Finalmente, se podrán obtener las reco- mendaciones de t́ıtulos de documentos que el cliente activo nunca leyó pero que sus vecinos similares śı leyeron, pudiendo ordenar cada documento a recomendar según la cercańıa del vecino. De esta forma, los documentos de un vecino más cercano al cliente activo serán más importantes que los documentos de un vecino no tan cer- cano, como se muestra en la Figura 3.3. Como ya se mencionó, el problema del arranque en fŕıo se genera cuando los clientes activos no presentan el suficiente historial en la herramienta comercial y el filtrado colaborativo basado en clientes no puede realizarle recomendaciones debido a que no conoce sus intereses y no puede ubicarlo en ningún grupo de vecinos cer- canos. Para resolver este problema y poder proveer recomendaciones a los usuarios, independientemente de si cuentan con historial o no, se optó por realizarles recomen- daciones a partir De filtrado colaborativo basado en documentos. Con el conjunto de todos los registros que generan todos los clientes en la herramienta comercial (como se describió con anterioridad) se construye una base de datos transaccional y generan reglas de lecturas de documentos. Por ejemplo, si el cliente activo leyó el documento titulado Servicios explotados y otro documento titulado Exportación de servicios se le recomendará el documento con t́ıtulo Porcentaje tributado en exportación. Esta regla fue generada debido a que en las interacciones de los clientes con los docu- mentos muchos clientes coincidieron en este patrón de lectura. De esta manera, los Caṕıtulo 3. Propuesta 34 documentos a recomendar estarán ordenados basándose en el orden de las reglas. Es decir, los documentos provistos por la primera regla tendrán más importancia que los documentos provistos por la cuarta regla. 3.3.2. Modelado de perfiles de clientes y generación de tran- sacciones Para filtrar los documentos de manera personalizada a cada cliente es necesario recolectar información de las interacciones dentro de la herramienta para obtener una interpretación de sus necesidades. La herramienta comercial no provee una forma expĺıcita de obtener esta información ya que no permite al cliente expresar/informar si un documento le resultó de relevancia. En cambio, la herramienta śı registra qué documento se leyó, en que fecha, quien lo leyó y el contenido de dicho documento, como se explica en la Sección 3.1. De esta manera, a partir de las estad́ısticas de acceso y las lecturas realizadas es posible inferir las preferencias de los clientes. En forma general, se los puede representar mediante vectores, donde cada componente es un concepto ponderado que representa la importancia de ese concepto para el cliente. Como se mencionó en al apartado anterior, se considerarán dos distintos niveles de abstracción, el primero como entrada para construir los clústeres, y el segundo para obtener los vecinos cercanos al cliente activo. Como se detalló en la Sección 3.1, los documentos pueden ser clasificados en secciones. En total hay 745 secciones que clasifican a los documentos. Luego, a cada cliente se lo representa como un vector secciones de N dimensiones. Donde N es la cantidad total de secciones existentes, y la componente del vector en la i-ésima posición representa la frecuencia relativa de documentos léıdos por el cliente en la correspondiente sección, ponderando la importancia que tiene el cliente con la misma, como se ejemplifica en el Cuadro 3.1. De la misma manera que se representaron los perfiles de los clientes para construir los clústeres, se representaron los perfiles para obtener los vecinos cercanos. Para esto, a cada cliente se lo representó como un vector de documentos/t́ıtulos, de K dimensiones, donde K es la cantidad de t́ıtulos/documentos existentes (actualmente 218.000), y las componentes del vector representanla frecuencia relativa de t́ıtulos léıdos por el cliente ponderando la importancia que tiene el cliente con el documento, Caṕıtulo 3. Propuesta 35 Sección 1 Sección 2 Sección 3 ..... Sección N Cliente 1 0.3 0.215 ..... 0.46 Cliente 2 0.51 0.323 ..... 0.49 Cliente 3 0.23 ..... 0.8 Cliente 4 0.8 0.95 ..... 0.34 : : : : ..... : : : : : ..... : Cliente m 0.8 0.165 0.6 ..... 0.5 Cuadro 3.1: Vectores de frecuencia de secciones de documentos (Primer nivel de abstracción) T́ıtulo 1 T́ıtulo 2 T́ıtulo 3 ..... T́ıtulo K Cliente 1 0.456 0.2225 ..... 0.1246 Cliente 2 0.5143 0.32387 ..... 0.4943 Cliente 3 0.23434 ..... 0.8434 Cliente 4 0.8767 0.956 ..... 0.34 : : : : ..... : : : : : ..... : Cliente m 0.865 0.165 0.6789 ..... 0.5008 Cuadro 3.2: Vectores de frecuencia de t́ıtulos de documentos (Segundo nivel de abs- tracción) como se muestra en la Tabla 3.2. Las transacciones de las lecturas de documentos para alimentar al filtrado colabo- rativo basado en documentos se generaron a partir de todas las interacciones diarias de los clientes. Es decir, si un cliente leyó siete documentos en el d́ıa generando siete registros de lecturas, estos conjuntos de registros serán vistos como una transacción de siete documentos. Luego, podemos modelar cada transacción como un vector de w dimensiones, donde w representa la cantidad total de documentos y las componen- tes del vector representan una variable binaria que determinar si el documento fue accedido o no en la transacción. En el Cuadro 3.3 se puede observar un ejemplo de estas transacciones. En aquellos casos en los que un cliente lee el mismo documento varias veces en el mismo d́ıa, se considera como que lo leyó solo una vez. Caṕıtulo 3. Propuesta 36 ID Transacción T́ıtulo 1 T́ıtulo 2 T́ıtulo 3 ..... T́ıtulo W 1 0 0 1 ..... 0 2 1 0 1 ..... 1 3 1 0 0 ..... 0 4 1 1 0 ..... 1 : : : : ..... : : : : : ..... : m 1 1 1 ..... 1 Cuadro 3.3: Transacciones de lecturas de documentos 3.3.3. Técnicas empleadas Para agrupar a los clientes basándose en el primer nivel de abstracción, es decir, en función de haber leido documentos con secciones en común, se utilizó el algoritmo k− means, ya que esta técnica tiene como objetivo dividir un conjunto de observaciones en k grupos. En este caso, el conjunto de observaciones son los perfiles de los clientes expresados en los vectores de secciones de frecuencia relativa de documentos léıdos. Luego, el algoritmo, particiona el conjunto de perfiles de clientes en k grupos donde cada grupo contiene perfiles de clientes similares. De este modo, cuando el proceso de recomendación debe responder al cliente activo, primeramente se obtienen los clientes que pertenecen al mismo cluster para luego buscar los vecinos más cercanos dentro de este. Cuando el proceso de recomendación debe realizar la búsqueda de los vecinos más cercanos al cliente activo y generar las predicciones de los documentos que el cliente activo podŕıa ser de su interés, se utilizó el algoritmo k − nn. Este algoritmo recibe como entrada el conjunto de perfiles de clientes junto con el cliente activo expresado en el segundo nivel de abstracción o mejor dicho en vectores de documentos. Por consiguiente, el algoritmo retorna los k clientes más cercanos al cliente activo em- pleando la función de similitud basada en el Coseno. En otras palabras, los clientes con mayor similitud respecto a los t́ıtulos de documentos. Como paso final para el filtrado colaborativo basado en clientes, con el conjunto de vectores, se procede a realizar la predicción de los t́ıtulos de documentos que el Caṕıtulo 3. Propuesta 37 cliente activo aún no leyó. Por ejemplo, consideremos la selección de cinco vecinos (es decir, k = 5) y que dichos vecinos leyeron el documento Exportación de servicios con frecuencias de 0,8, 0,9, 0,75, 0,7 y 0,91, respectivamente. Considerando que el cliente activo nunca leyó éste documento, se predecirá la frecuencia de lectura para el cliente activo promediando la frecuencia de lectura de sus vecinos, lo que resulta en 0,81. En el filtrado colaborativo basado en documentos, que satisface el problema del arranque en fŕıo en el filtrado colaborativo basado en clientes, para encontrar reglas de asociación en el conjunto de transacciones se utilizó el algoritmo Apriori. El al- goritmo recibe un umbral de confianza � junto con el conjunto de transacciones y retorna un conjunto de documentos frecuentes. Luego, con los documentos frecuentes se generan las reglas de asociación y calcula la credibilidad de las mismas. Por último, con las reglas de asociación generadas y los documentos que el cliente activo leyó se obtienen las recomendaciones. Por ejemplo, dada la regla {Servicios explotados , Ex- portación de servicios} −→ {Porcentaje tributado en exportación}, si el cliente activo leyó el documento titulado Servicios explotados y otro documento titulado Exporta- ción de servicios, se le recomendará el documento con t́ıtulo Porcentaje tributado en exportación Caṕıtulo 4 Implementación En este Caṕıtulo se presentan todos los detalles relacionados al desarrollo de la propuesta. Primeramente se abordará sobre la arquitectura de la solución describien- do el funcionamiento de sus componentes, el porqué de la elección de la misma y como interactúan entre śı los componentes para su correcto funcionamiento con la herramienta comercial. Luego, se describirán los modelos de machine learning que componen a la solución y qué funcionalidad tienen en cada componente. Por último, se describen las libreŕıas y tecnoloǵıas utilizadas en todo el desarrollo y las ventajas que proveyeron. 4.1. Arquitectura de la solución A grandes rasgos, la herramienta comercial de la empresa presenta una arqui- tectura cliente-servidor, al cual la solución propuesta deb́ıa acoplarse. A su vez, la empresa esta pasando por un proceso de migración y cambio de metodoloǵıa en el equipo de sistemas orientándolos a un enfoque de micro-servicio. Por esta razón, el desarrollo de la solución se compone de un backend que fue materializado a partir micro-servicios. Esto permite garantizar el desacoplamiento y reusabilidad de cada uno de los componentes/servicios, a la vez facilita la extensibilidad del sistema a fin de optimizar la integración. La función principal del backend es proveer las recomen- daciones de cada cliente en un formato JSON (JavaScript Object Notation) para ser expuesto en el frontend de la herramienta comercial. Dichas recomendaciones y la 38 Caṕıtulo 4. Implementación 39 comunicación entre los micro-servicios se desarrolla mediante una serie de solicitudes HTTP llamados endpoint. Para fines prácticos y sin salir del contexto de prueba de concepto al que está dirigido este proyecto, se habla de que la solución se va a comunicar directamente con la herramienta comercial o cliente obviando cuestiones de seguridad que maneja la empresa como la autenticación y la autorización. Además se sabe que, hasta el momento, los micro-servicios estarán alojados en servidores privados de la empresa y solo serán accesibles estando dentro de la misma red. Sin embargo, llegado al caso de que sea necesario dejar accesibles de manera pública los recursos de los micro- servicios para el cliente o para otros micro-servicios, se puede optar por agregar a los endpoint un token de accesos como el JSON Web Token para el caso clientes o api-key para otros micro-servicios. Figura 4.1: Esquema de la arquitectura del sistema de recomendación Caṕıtulo 4. Implementación 40 Como se puede observar en la Figura 4.1, hay cinco elementos que conforman la arquitectura: el API Gateway, el Servicio de clusterización, el Servicio de recomen- dación, el Servicio de reglas de asociación y por último, las bases de datos generadas por un proceso de extracción de datos limpios de las bases de datos de la herramienta comercial. A continuación,se realiza una descripción de cada componente. 4.1.1. ETL De definió un proceso que prepara la información, a partir de su extracción de las bases de datos y su procesamiento, para luego almacenarlas en otras bases de datos que abastecerán a otro sistema. Como se observa en la Figura 4.1, las bases de datos (SQL Server) que accede cada servicio son generadas por este proceso. El proceso se encarga de extraer las entidades y relaciones que conforman la herramienta comercial de la empresa, tales como los clientes con sus atributos, los documentos con su contenido y la relaciones que tienen los clientes con los documentos en el tiempo. Toda esta información extráıda debe ser transformada antes de ser guardada en la base de datos destino. Por ejemplo, fue necesario dividir la columna del domicilio en columnas que representasen la ciudad y provincia. También fue necesario traducir femenino y masculino por F y M respectivamente debido al que el campo era de texto libre y en ocasiones estaban escritos de diferentes maneras. Incluso se deb́ıa generar un campo derivado de otros campos llamado “tipo de persona”que especifica si el cliente es de persona f́ısica o juŕıdica. Como última etapa, con el objetivo de no colapsar la base de datos de la herramienta comercial, se aloja la información en una base de datos secundaria. Sabiendo que el proceso se realiza de manera offline y que la herramienta comercial genera registros de sus clientes diariamente, este proceso debe realizarse periódicamente con el objetivo de mantener actualizados los datos accesibles por el sistema de recomendación. El proceso fue implementado mediante una tarea programada que provee el gestor de base de datos SQL Server. Esta tarea (o Job) recibe parámetros de tiempos para su ejecución, como qué d́ıas de la semana, d́ıas hábiles, qué hora del d́ıa, cantidad de ejecuciones y el script SQL a ejecutar o Stored Procedure. Éste script en su primera ejecución realiza una copia de las tablas a utilizar de la base de datos de la herramienta comercial y env́ıa el contenido a cada micro-servicio y guarda en Caṕıtulo 4. Implementación 41 una tabla de rastreo la última extracción. Para las siguientes ejecuciones el proceso mediante la tabla de rastreo env́ıa solo los registros nuevos. Al finalizar de manera correcta, notifica a los micro-servicios que funcionan de manera offline para que reconstruyan los modelos. En caso de un fallo, se deja registro en una tabla de log para guardar el estado del proceso. Para que el proceso logre la comunicación con los micro-servicios tanto para el env́ıo de datos como para la notificación era necesario hacer llamadas mediante http. Sql Server nos provee de Stored Procedures tales como sp OACreate y sp OAMethod para realizar estas comunicaciones. Por otra parte, para satisfacer la demanda de información y evitar los bloqueos temporales dentro de la base de datos fue necesario resolver cuestiones de eficiencia para responder al proceso. Las tablas al no tener bajas o modificaciones de manera constante solo era necesario actualizarlas cada cierto tiempo. Para esto, se imple- mentó una estructura de datos que guarda los registros de cada tabla ordenado por el campo clave y las búsquedas por el mismo campo. Dicha estructura se materia- lizó como el ı́ndice primario que provee el gestor de bases de datos. En este caso el proceso solo deb́ıa crear los ı́ndices en la primera ejecución. 4.1.2. API Gateway Dentro de una arquitectura orientada a servicios totalmente desacoplados, se tie- nen distintos componentes que realizan una determinada funcionalidad, pero que por śı mismos no hacen al sistema total. El servicio API Gateway hace de intermediario entre el cliente de la herramienta comercial de la empresa y los servicios de la solución propuesta explicados con anterioridad. Este componente se encarga de procesar las solicitudes de la herramienta comercial de la empresa y realizar las correspondientes solicitudes sucesivas a cada servicio/micro-servicio para ir formando la respuesta a retornar. El funcionamiento consiste en recibir el identificador del cliente activo, y verificar si el cliente tiene historial o es relativamente nuevo (baja cantidad de lectu- ras en la plataforma). El siguiente paso es solicitar el servicio correspondiente. En el caso del servicio de clusterización se obtiene el conjunto de identificadores de clientes que componen el clúster al cual pertenece para luego insertarlos como entrada al ser- vicio de recomendación, lo que finalmente permite obtener los identificadores de los Caṕıtulo 4. Implementación 42 documentos. En caso del servicio de reglas de asociación, se obtienen los identificado- res de los documentos del cliente activo para luego obtener los identificadores de los documentos que son recomendados. Para ambos casos el endpoint que disponibili- za este servicio tiene el nombre de api/recomendaciones/{cliente id} que recibe como parámetro de entrada el identificador único del cliente y retorna en formato JSON un arreglo de [documento id, seccion id]. 4.1.3. Servicio de clusterización El servicio de clusterización es el encargado de segmentar al conjunto de todos los clientes con los perfiles generados empleando la técnica k-means. Como se mencionó en el caṕıtulo anterior, los perfiles son una representación de los clientes compuesto por la frecuencia relativa de documentos léıdos en cada una de las secciones. Es- te servicio disponibiliza el endpoint cluster/clientes de tipo POST, el endpoint cluster/notificar de tipo PUT y el endpoint cluster/clientes/{cliente id} de tipo GET. El primer endpoint es utilizado por el proceso ETL para enviar los datos de los clientes con nuevas lecturas. Es decir, en el cuerpo del mensaje recibe un JSON con una lista de pares cliente id/seccion id siendo el identificador único del cliente y el identificador único de la sección respectivamente. Luego, la lista es procesada y guardada en una tabla con el nombre de lectura-por-seccion dentro de la base de datos del micro-servicio en cuestión. La tabla tiene un total de 746 columnas, una por cada sección y una columna de cliente, de esta manera se puede representar de cada cliente id la cantidad de lectura que realizó en cada sección. El segundo endpoint es utilizado por el proceso ETL cuando quiere notificar que no hay más lecturas de clientes para actualizar y en consecuencia se pone en marcha el entrenado del modelo k-means. El algoritmo se detallara en la Sección siguiente, pero en resumen toma como entrada los datos de las lecturas de cada cliente de la tabla lectura-por-seccion para representarlos en un espacio multidimensional y particionarlos en grupos donde la suma de las distancia de cada punto que componen el grupo es mı́nima. Una vez terminado el entrenamiento se persiste en una tabla con el nombre de cliente-cluster con una columna con el cliente id y una segunda columna con el clúster al cual pertenece. Caṕıtulo 4. Implementación 43 Por último, el tercer endpoint es utilizado por el Api Gateway que recibe por parámetro el identificador del cliente activo. Con el identificador del cliente se obtiene de la tabla cliente-cluster el grupo al cual pertenece para luego obtener todos los clientes que pertenecen a ese grupo y retornar el conjunto de identificadores de todos los clientes en formato JSON. 4.1.4. Servicio de reglas de asociación El servicio de reglas de asociación es el encargado de generar recomendaciones em- pleando el algoritmo Apriori mediante transacciones. Como se explicó en el caṕıtulo anterior, las transacciones son documentos léıdos por diferentes clientes por d́ıa. Este servicio disponibiliza el endpoint apriori/transaccion de tipo POST , el endpoint apriori/notificar de tipo PUT y el endpoint apriori/recomendacion de tipo POST. El primer endpoint es utilizado por el proceso ETL para enviar los datos de losclientes con nuevas lecturas. Es decir, en el cuerpo del mensaje recibe un JSON con una lista de ternas cliente id/documento id/fecha siendo el identificador único del cliente, el identificador único del documento y la fecha de cuando el cliente leyó el documento. Luego, la lista es procesada y guardada en una tabla con el nombre de lectura-transaccion dentro de la base de datos del micro-servicio en cuestión. La tabla contiene tres columnas una para cada elemento de la terna. El segundo endpoint es utilizado por el proceso ETL cuando quiere notificar que no hay más lecturas de clientes para actualizar y en consecuencia se pone en marcha el entrenado del modelo Apriori. Primeramente con la tabla lectura-transaccion se genera una tabla con el nombre de transaccion-diaria con una cantidad de co- lumnas igual a la de documentos en total y teniendo como valor un booleano que indica si el documento pertenece a la transacción (one hot encoding). El algoritmo se detallará en la Sección siguiente, pero en resumen toma como entrada los datos de las transacciones de la tabla transaccion-diaria para generar reglas de lectu- ras. Una vez terminado el entrenamiento se persiste en una tabla con el nombre de reglas con una columna con el conjunto de documento id separado por coma que describen el lado izquierdo de la regla y una segunda columna con el conjunto de documento id separado por coma que describen el lado derecho de la regla. Caṕıtulo 4. Implementación 44 Por último, el tercer endpoint es utilizado por el Api Gateway que recibe en el cuerpo del mensaje un JSON con una lista de identificadores de documentos que el cliente activo leyó. Luego, con la lista de identificadores de documentos busca en la tabla reglas que se encuentre en la columna que representa el lado izquierdo de la regla y retorna los identificadores de la columna que representa el lado derecho de la regla en formato JSON. 4.1.5. Servicio de recomendación El servicio de recomendación es el encargado de predecir las valoraciones de los clientes a los documentos empleando la técnica K-NN para obtener los veci- nos más cercanos. Como se mencionó en el caṕıtulo anterior, los perfiles son una representación de los clientes compuesto por la frecuencia relativa de documen- tos léıdos. Este servicio disponibiliza el endpoint knn/clientes de tipo POST y el knn/recomendacion/{cliente id} de tipo POST. El primer endpoint es utilizado por el proceso ETL para enviar los datos de los clientes con nuevas lecturas. Es decir, en el cuerpo del mensaje recibe un JSON con una lista de pares cliente id/documento id siendo el identificador único del cliente y el identificador único del documento respectivamente. Luego, la lista es procesada y guardada en una tabla con el nombre de lectura-por-documento dentro de la base de datos del micro-servicio en cuestión. La tabla tiene un total de 21800 columnas, una por cada documento y una columna de cliente, de esta manera se puede representar de cada cliente id la cantidad de lectura que realizó en cada documento. El segundo endpoint es utilizado por el Api Gateway que recibe por parámetro el identificador del cliente activo y en el cuerpo del mensaje un JSON con una lista de identificadores de todos los clientes que componen el clúster del cliente activo. Luego se procede a ejecutar el algoritmo de knn donde primeramente se obtienen los perfiles del cliente activo y los que pertenecen al clúster de la tabla lectura-por-documento. Luego el algoritmo obtiene los k clientes más cercanos al cliente activo empleando la función de similitud basada en el Coseno para predecir la frecuencia de lectura de documentos que nunca fueron léıdos por el cliente activo promediando la frecuencia de lectura de sus vecinos que tuvieron con los mismos documentos. Finalmente, se Caṕıtulo 4. Implementación 45 retorna el conjunto de todos los documento id relevantes para el cliente en formato JSON. 4.2. Machine Learning En la Sección anterior se explicó la arquitectura orientada a micro-servicios del sistema de recomendación y como interactúa cada servicio para obtener los resul- tados. En esta sección entraremos en detalle sobre las técnicas de machine learning que fueron utilizadas en los servicios de clusterización, el servicio de recomendación y el servicio de reglas de asociación. Si bien se sabe que cada modelo posee hiper- parámetros que permiten controlar el proceso de aprendizaje, el ajuste de los mismos que producen el mejor rendimiento se explicara en detalle en el siguiente Caṕıtulo. 4.2.1. Algoritmo Kmeans Como se explicó en el Caṕıtulo 2, este algoritmo trabaja iterativamente para asignar a cada cliente, representado como un punto en el espacio multidimensional, a uno de los k clústers. Como entrada el algoritmo recibe el conjunto de perfiles de clientes representado como un vector de 745 dimensiones en donde la componente i-ésima manifiesta las preferencias del cliente respecto a la sección correspondiente y también recibe el valor de clústers k a retornar. Por consiguiente, el algoritmo comienza posicionando k centroides en el mismo espacio multidimensional de ma- nera aleatoria iterando sobre dos pasos: 1) asignar a cada cliente al centroide con la distancia más cercana, y 2) actualizar la posición de los centroides tomando el promedio de los clientes pertenecientes a dicho centroide hasta minimizar la suma de las distancias cuadráticas de cada cliente al centroide. En otras palabras, cada cliente se encuentra muy cerca de los otros clientes de su mismo grupo, y más lejos de los clientes de los otros grupos. A modo de visualización se aplicó la técnica T-distributed Stochastic Neighbor Embedding (t-SNE) [19] para reducir las 745 dimensiones a 2, manteniendo la dis- tribución estad́ıstica de las distancias entre los clientes. La Figura 4.2 presenta un agrupamiento de los clientes (representados por cada uno de los puntos), donde el color describe el grupo al que pertenece el cliente. Caṕıtulo 4. Implementación 46 Figura 4.2: Clientes en el espacio multidimensional de secciones con reducción de dimensiones (t-SNE) y agrupados en 6 clústers diferentes 4.2.2. Algoritmo KNN Este algoritmo fue descripto en el Caṕıtulo 2. En principio, el algoritmo recibe co- mo entrada el cliente activo representado mediante un vector de 21.800 dimensiones en donde cada componente manifiesta las preferencias del cliente respecto del docu- mento. A su vez, el algoritmo recibe el conjunto de todos los clientes pertenecientes al mismo clúster que el cliente activo, representados con las mismas dimensiones. El algoritmo busca los vecinos más similares calculando la similitud del coseno entre el vector del cliente activo y cada vector del conjunto de clientes. En la Figura 4.3 se puede ver el conjunto de los clientes del mismo clúster del cliente activo (celeste) y el cliente activo (naranja). En donde el coseno del ángulo entre el vector del cliente activo y el cliente C1 es mayor al coseno del ángulo entre el vector del cliente activo y el cliente C2. Por lo tanto, el cliente C2 es más cercano al cliente activo que C1. Caṕıtulo 4. Implementación 47 Figura 4.3: Gráfico de los clientes representados en el espacio multidimensional de T́ıtulos de documentos con reducción de algoritmo (t-SNE). 4.2.3. Algoritmo Apriori Como se explicó en el Caṕıtulo 2, Apriori es un algoritmo que permite identificar relaciones entre ı́tems, en este caso entre los documentos. El algoritmo recibe como entrada las interacciones diarias que los clientes realizaron al leer los documentos, un parámetro que define el Soporte y un parámetro que define la Confianza de las reglas generadas. En principio, el algoritmo comienza buscando conjunto de itemsets que superen el parámetro de soporte. Un itemset, en este caso, contiene los t́ıtulos de documentos que pertenecen a una interacción. Por ejemplo
Compartir