Taller Analytics Sofia2. Notebook. (Parte 2/4)

El objetivo de este taller es crear un sistema de recomendación en base a los ratings de los usuarios, basado en uno de los ejercicios propuestos en el Spark Summit.

Utilizaremos uno de los Datasets de Movielens que ya reside en la plataforma. Lo haremos en cuatro pasos:

  • Ingesta y preparación de los datos mediante Pipelines.
  • Creación del modelo mediante Notebook.
  • Generación de Ontología
  • Creación de una visualización sencilla.

Con ayuda de los notebooks de Sofia2 vamos a generar el modelo de recomendación de películas usando los datos que hemos cargado en la plataforma en el anterior post. Proponemos llevarlo a cabo con Spark usando Scala, y más concretamente implementaremos el ALS.

Definición de las rutas de los datos de entrada

El primer paso es leer los datos de películas y ratings, y para eso primero hay que definir la ruta de los datos. Define las variables ratings_path y movies_path con las correspondientes rutas donde hayas hecho la carga a la plataforma. Por ejemplo:

image315

Nota: Si realizamos el taller desde Sofia2.com/console cambiaremos ‘sofia2-analytic:8020’ por ‘localhost:8020

Estructurar los datos

Lo siguiente es guardar la información de películas y puntuaciones. Vamos a leer dicha información mediante RDDs de Spark.

Hay que definir un formato concreto tanto para las películas: (movieId, movieName) como para los rating: (timestamp % 10, Rating(userId, movieId, rating)).

También aprovechamos a importar las librerías de Mlib que se van a usar en el ejemplo. En concreto se necesitan ALS, Rating y MatrixFactorizationModel.

image316

Comprobaciones de los datos

Ahora, comprueba que efectivamente se han leído los datos. ¿Cuántas puntuaciones has descargado? ¿Cuántas películas hay en el catálogo? ¿Cuántas películas se han puntuado? ¿Y cuántos usuarios lo han hecho?

image317

Dividir el dataset

Antes de construir el modelo hay que dividir el dataset en partes más pequeñas, una para entrenamiento(60%), otra para validación(20%) y otra más para testing(20%).

image318

Función para evaluar el modelo

Una vez divididos los datos, definamos la función que evaluará el rendimiento del modelo. En concreto usaremos  Root Mean Squared Error (RMSE) y esta es la versión en Scala:

image319

Elección del modelo

Ahora puedes usar esta función para definir los parámetros para el algoritmo de entrenamiento. El algoritmo ALS requiere 3 parámetros: el rango de la matriz de factores, el número de iteraciones y una lambda.  Vamos a definir diferentes valores para estos parámetros y probar diferentes combinaciones de ellos para determinar cuál de ellas es la mejor:

image320

¿Cuál crees que es el mejor modelo?

Ahora vamos a lanzar nuestra función sobre los datos de Test.

image321

Ejecutar las recomendaciones para un usuario

Una vez elegido el mejor modelo ya solo quedan las recomendaciones de películas por usuario. La idea es preguntar por el usuario, que para el Dataset usado es un numérico. Vamos a hacerlo tipo formulario, de tal forma que primero pregunte por el usuario, se inserte en un campo de texto y por último lance la recomendación. Para preguntar por el usuario:

image322

Para este ejemplo, definimos que se muestren las 10 mejores recomendaciones para el usuario insertado en el campo de texto.

image323

Persistir las recomendaciones

Ahora solo nos queda guardar las mejores recomendaciones para cada usuario en ontología. La idea es guardar registros de la forma: UserId, MovieName, MovieGenre.

image324

Creamos la tabla HIVE con los datos almacenados en el DataFrame. Modifica el nombre de la tabla de la imagen “recomendaciones_arturo” por un identificador único, por ejemplo, recomendaciones_tunombre.

image325

Hasta aquí la segunda parte de nuestro taller Analytics, esperamos que os esté resultando interesante. En próximos posts seguiremos con la generación de ontologías y la creación de Gadgets y un Dashboard para la visualización.

Taller Analytics Sofia2. Notebook. (Parte 2/4)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s