Skip to main content
PredictionIO

Recomendaciones con PredictionIO

Seguro que en más de una ocasión hemos querido poder hacer recomendaciones a nuestros usuarios en base a su perfil. Y ya no sólo en base a su perfil, sino también en otros datos relacionados con su uso de la aplicación como secciones visitadas o productos ya adquiridos. Para ello podemos contar con PredictionIO.

PredictionIO es un software open source para realizar predicciones y recomendaciones de elementos. Está basado en la máquina de aprendizaje de Apache Mahout y publicada con licencia AGPL / Apache License.

PredictionIO puede dar soporte a las predicciones de varias aplicaciones de forma concurrente. Para cada aplicación se pueden definir diversos motores, cada uno con un algoritmo distinto, pero compartiendo los mismos datos de negocio. En tiempo de ejecución elegiremos qué motor queremos que nos proporcione la información.

Para usar PredictionIO debemos modelar 3 tipos de datos:

Usuarios:

El único atributo obligatorio es un nombre que identifique al usuario, pero puede añadirse información relevante para las predicciones, como la ubicación.

Entidades de Negocio:

Estos serán los elementos con los que se relacionan los usuarios. Pueden ser películas si estamos modelando un videoclub online o aplicaciones móviles si estamos modelando un market por poner algunos ejemplos. Las definiremos con el nombre de la entidad y tantos tags como consideremos necesarios. Estos tags dotan de semántica a las entidades que creamos y ayudan a relacionar entidades similares.

Relaciones:

Las relaciones se corresponden a la experiencia de nuestros usuarios con nuestras entidades de negocio. Pueden crearse las siguientes relaciones entre un usuario y una entidad de negocio:

  • View: un usuario visualiza una entidad.
  • Like: un usuario muestra su gusto por dicha entidad
  • Dislike: un usuario muestra su disgusto por dicha entidad
  • Rate: un usuario puntúa del 1 al 5 una entidad
  • Conversion: un usuario compra/adquiere una entidad. Esta relación es la más fuerte y es aquella que establece mayor afinidad entre un usuario y una entidad.

Integración:

Para realizar la integración del servidor de PredictionIO con otros sistemas nos ofrece un API para Java, Python, Ruby y PHP entre otros. Si no fuera suficiente también dispone de su API web service (REST/JSON) para que la consumamos con el lenguaje que prefiramos.

Caso Práctico:

Para no quedarnos sólo en la teoría vamos a exponer un caso práctico con un contexto bancario. En nuestro ejemplo estudiaremos qué productos bancarios se amoldan mejor a nuestros clientes en base a sus perfiles y a los productos que ya tienen contratados.

El primer paso será la instalación del servidor. Esta opción puede ser casi automática si lo hacemos con Vagrant y VirtualBox. Con ellos, y el siguiente script de la página oficial de PredictionIO se descarga una máquina virtual e instala todos los paquetes de software necesario.

screen

Con el servidor levantado, entramos por su interfaz web y creamos una aplicación. A esa aplicación le añadimos un motor y un algoritmo. El “App Key” lo usaremos más adelante para configurar nuestro cliente. En la opción “add engine” elegiremos aquel que se ajuste mejor a nuestras necesidades, para nuestro caso será un “Item Recommendation Engine”.

screen

Con un cliente Java creamos los usuarios, los productos bancarios y las relaciones.

screen

Con estos datos ya podremos solicitar predicciones al sistema mediante el mismo API Java aunque su utilidad sea meramente teórica al disponer de pocos datos. Evidentemente, cuanta más información proporcionemos al sistema más preciso será en sus predicciones.

Algoritmos:

Los algoritmos ofrecen predicciones basadas en diversos criterios, desde el comportamiento de usuarios similares hasta un simple random. Para algunos de ellos será necesario configurar parámetros tales como ponderaciones, distribuciones estadísticas a utilizar, coeficientes de correlación, etc.

 

 

Pablo Pérez Aguiló

Consultor SOA. Graduado en Ingeniería del Software y Máster en Ingeniería Web por la UPM. Apasionado de las nuevas tecnologías, metodologías ágiles y la enseñanza.

Pablo Pérez Aguiló ha escrito 6 entradas


Pablo Pérez Aguiló

Consultor SOA. Graduado en Ingeniería del Software y Máster en Ingeniería Web por la UPM. Apasionado de las nuevas tecnologías, metodologías ágiles y la enseñanza.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *