Logo Studenta

Sistema de recomendacion para profesionales de la economia y el derecho

¡Este material tiene más páginas!

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

Continuar navegando