Cómo implementar un sistema de recomendaciones usando Mahout

Mahout – Casos de éxito con Hadoop

¿Sabía usted que los llamados sistemas de recomendación, han sido la causa tras el éxito y masificación de grandes compañías de tecnología como Youtube, Amazon y Netflix? Estos  sistemas cada vez más comunes en la web, sin embargo, es altamente destacable su impacto en materia de plataformas e-commerce como Amazon.

Veáse Revista Fortune: el secreto de Amazon.

Básicamente un sistema de recomendación es una técnica para predecir qué productos, de una lista de productos le gustará o no a un usuario, basándose en su perfil, opiniones o hábitos detectados. A continuación le presentamos un panorama técnico de cómo lograrlo con Mahout [1], una librería de machine learning para operaciones escalables que le permitirá crear sistemas de recomendación basados en filtrado colaborativo, esto es, similitud entre usuarios o en ítems.

En el siguiente esquema se observa la arquitectura simplificada de un recomendador usando Mahaout.

  • Files: Toda la información de sus usuarios, usualmente se consigue a través del log de su sistema.
  • DataModel: Se refiere al modelo de datos que usará su sistema, estableciendo las reglas y estructuras como restricciones que se ajustan a su interés.
  • User similarity: Es una medida que dicta cuán similares son dos usuarios a partir del conocimiento que se tiene de cada uno.
  • Neighborhood: El vecindario, es una red que se teje con las medidas de similitud entre usuarios, en este sentido entre más parecidos sean dos usuarios mas cerca estaran en la red.
  • Recommender: Es el encargado de analizar la red o vecindario, y hace las recomendaciones de productos.

Ahora, naturalmente surge la pregunta ¿Que se le recomienda a un visitante de nuestra página, es decir, un usuario no registrado del cual no tenemos información previa?

Solución implementada:

Se realiza un algoritmo en Apache Mahout siguiendo el esquema que está a continuación:

  1. Se reconstruye el recomendador periódicamente (por hora, por dia, etc.)
  2. Al llegar un nuevo usuario se verifica si está registrado en el sistema.
  3. Si lo está, se hace la recomendación habitual, y si no, se “registra” un nuevo usuario temporal. Operación que se lleva a cabo en las siguientes líneas de código:

Donde se destaca:

  • En la línea 7 se aclara que se conoce cuáles productos son de interés para el usuario no registrado. Esto puede ser realizado por medio de analítica web usando las cookies, sin descartar otras aproximaciones.
  • Dado que lo normal es que desconocer cuantitativamente dichos intereses en las instrucciones de las líneas 23-25, quizá las más importantes, encargadas de “poblar” cuantitativamente las preferencias del usuario no registrado basándose en la mayor preferencia histórica, y así se “da de alta” un nuevo usuario.

Finalmente, y tras pulir algunas otras personalizaciones de interés para el negocio, tendremos nuestro sistema de recomendación de productos funcionando, y listo para entrar a competir en la carrera del big data.

Referencias

[1] Mahout

[2] Warski