Sistemas de recomendación basados en grafos

Sistemas de recomendación basados en grafos - Inteligencia artificial - SOLUSOFT

Cuando diseñamos un motor de recomendación en tiempo real es necesario considerar no solo la información histórica del usuario, sino la sesión actual, correlacionando además al usuario con los productos, el contexto, intereses y forma en que interactúa. En este caso, y precisamente cuando nos centramos en recomendar en base a la forma en que las acciones se relacionan entre sí, es especialmente interesante evaluar la posibilidad de construir el motor empleando un grafo.

Los grafos pueden almacenarse en una base de datos donde persistirán y podrán ser consultados eficazmente. Existen numerosas bases de datos orientadas a grafos en el mercado (BDOG), como OrientDB, AllegroGraph y Neo4j, entre muchas otras.

En estos casos, lo primero es diseñar nuestro grafo conforme a cómo va a ser empleado y a los modelos que se pretenden recoger en él, lo que mejorará la eficiencia de los algoritmos que se apliquen sobre él posteriormente.

Después, conforme a ese diseño, se van generando nodos y aristas progresivamente y en tiempo real, cuando sucedan las acciones que deban persistir.

Cuando sea necesario podrán realizarse postprocesamientos que añadan nuevos atributos a los nodos o a las relaciones, o incluso que generen nuevas entidades, como podrían ser nuevas aristas que representen la afinidad entre usuarios y productos, o la similitud de los usuarios entre sí.

Como ejemplo sencillo, imaginemos que tenemos un conjunto de usuarios que, a medida que realizan ciertas actividades, las valoran con puntuaciones de 1 a 10.

Podríamos determinar qué usuarios son parecidos entre sí analizando si puntuaron de manera similar las mismas actividades. Para ello, bastaría con consultar las aristas de tipo “LE_GUSTA” de cada usuario, obteniendo el vector multidimensional del usuario, y calcular la distancia euclídea entre los vectores de cada usuarios.

Si la distancia está por debajo de cierto umbral, consideramos que los usuarios son parecidos y creamos una nueva arista entre ambos, llamada “SIMILARITY”, con un valor conforme a la distancia. Gracias a esto podemos ordenar los usuarios por similaridad

Finalmente, se diseñan y preparan las consultas adecuadas para el tipo de recomendación que desea realizarse. Algunas de las más habituales son las siguientes:

  • Productos vistos por otros usuarios: recomendar al usuario productos que no ha visto, y que otros usuarios vieron en una sesión parecida a la suya. Esta recomendación acelera el acceso a productos que previsiblemente el usuario va a consultar en la sesión, mejorando la experiencia de usuario.
  • Comprados por otros: recomendar al usuario productos que otros usuarios acabaron comprando tras tener una sesión similar a la suya. Esta recomendación permite al usuario acceder rápidamente al producto que previsiblemente acabará comprando después de una fase de exploración del catálogo, reduce la posibilidad de que el usuario explore otras opciones, pero mejora la conversión en sesiones cortas o cuando el usuario no tiene mucho tiempo para decidir.
  • Basado en el perfil de otros usuarios: se recomiendan productos que consumieron otros usuarios con un perfil parecido. Esta técnica permite recomendar y dar a conocer productos a un usuario antes incluso de que empiece a explorar el catálogo, ideal para el arranque de sesión o para realizar en diferido (emailing, notificaciones push, etc.)
  • Productos similares: se recomiendan productos similares a uno concreto. Esta recomendación es oportuna para ampliar la exploración del usuario, permitiéndole conocer alternativas más adecuadas a los comprados habitualmente.

Al trabajar con un grafo, si se ha diseñado correctamente, es posible construir un gran número de tipos de recomendaciones distintas sin realizar cambios. De esta forma, se dota al sistema de una colección de opciones para usar la recomendación más adecuada en cada momento o situación, optimizando los resultados de conversión y la experiencia de usuario.

¿Te gusta esta página? Recomienda este sitio en tus redes sociales