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:
- Se reconstruye el recomendador periódicamente (por hora, por dia, etc.)
- Al llegar un nuevo usuario se verifica si está registrado en el sistema.
- 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