Aplicaci贸n de un Sistema de Recomendaci贸n utilizando Big Data

#Aplicaci贸n-de-un-Sistema-de-Recomendaci贸n-utilizando-Big-Data

1. CASO DE NEGOCIO

#1.-CASO-DE-NEGOCIO

En la actualidad, gracias a herramientas como el Big Data y el Machine Learning, las empresas pueden ofrecer mejores y nuevos servicios. Ignorar estas herramientas puede ocasionarles menos rentabilidad en el mejor de los casos, o la quiebra.

Tal es el caso de Disney y Apple, que ampliando su l铆nea de negocio, han sacado sus servicios de Apple TV Plus y Disney Plus, para competir con Amazon Prime Video, Hulu y el m谩s usado Netflix.

En el pasado, Blockbuster no busc贸 renovarse tecnol贸gicamente y termin贸 quebrando. Eso lo saben muy bien los actuales gerentes de estas gigantes empresas.

En esta industria, de streaming de pel铆culas y series, tenemos a la alta disponibilidad del servicio, la usabilidad, y el sistema de recomendaci贸n como ejes fundamentales.

En el presente trabajo vamos a simular el flujo de informaci贸n necesario para implementar un sistema de recomendaci贸n basado en r谩tings. Tomaremos este flujo de datos y crearemos un modelo de Machine Learning que pueda predecir las mejores recomendaciones a los usuarios.

Usaremos el dataset de MovieLens: https://grouplens.org/datasets/movielens/latest/

2. JUSTIFICACI脫N DEL CASO

#2.-JUSTIFICACI脫N-DEL-CASO

Para este caso pr谩ctico vamos a considerar la informaci贸n del dataset mayor que tiene informaci贸n proporcionada de 280,000 usuarios.

As铆, tomando como referencia ese dataset consideraremos que nuestro servicio de streaming tendr谩 280 mil usuarios quienes consumir谩n activamente el servicio de 27 mil pel铆culas y que hasta el momento han generado alrededor de 27 millones de ratings.

Adem谩s, considerar que nuestro proyecto analizar谩 principalmente el sistema de recomendaci贸n, pero que este est谩 enmarcado dentro de toda la tecnolog铆a para que opere el servicio.

Con todo esta informaci贸n, vamos a justificar que nuestro proyecto est谩 enmarcado dentro de las cinco 'V' del Big Data:

  • Volumen:

    Los poco m谩s de un cuarto de mill贸n de usuarios con los miles de pel铆culas a disposici贸n hacen que el volumen de informaci贸n sea alto.

  • Velocidad:

    Se necesita que la informaci贸n se reciba de forma r谩pida, que el algoritmo de Machine Learning procese los nuevos datos r谩pidamente, y que se entregue los resultados de la predicci贸n de forma r谩pida para brindar recomendaciones de calidad a los usuarios.

  • Variedad de los datos:

    La informaci贸n se obtiene de variadas formas, para la aplicaci贸n del sistema de recomendaci贸n es a trav茅s de bases de datos o logs.

  • Veracidad de los datos:

    Se necesita que los datos sean lo m谩s veraces posibles para que el modelo pueda hacer una predicci贸n adecuada.

  • Valor de los datos:

    El valor entregado para este caso es de vital importancia, ya que en esta industria tener un buen sistema de recomendaci贸n bien entrenado es requisito indispensable para retener al usuario con lo que tenemos disponible.

Para este caso pr谩ctico vamos a considerar la informaci贸n del dataset mayor que tiene informaci贸n proporcionada de 280,000 usuarios.

As铆, tomando como referencia ese dataset consideraremos que nuestro servicio de streaming tendr谩 280 mil usuarios quienes consumir谩n activamente el servicio de 27 mil pel铆culas y que hasta el momento han generado alrededor de 27 millones de ratings.

Adem谩s, considerar que nuestro proyecto analizar谩 principalmente el sistema de recomendaci贸n, pero que este est谩 enmarcado dentro de toda la tecnolog铆a para que opere el servicio.

Con todo esta informaci贸n, vamos a justificar que nuestro proyecto est谩 enmarcado dentro de las cinco 'V' del Big Data:

  • Volumen:

    Los poco m谩s de un cuarto de mill贸n de usuarios con los miles de pel铆culas a disposici贸n hacen que el volumen de informaci贸n sea alto.

  • Velocidad:

    Se necesita que la informaci贸n se reciba de forma r谩pida, que el algoritmo de Machine Learning procese los nuevos datos r谩pidamente, y que se entregue los resultados de la predicci贸n de forma r谩pida para brindar recomendaciones de calidad a los usuarios.

  • Variedad de los datos:

    La informaci贸n se obtiene de variadas formas, para la aplicaci贸n del sistema de recomendaci贸n es a trav茅s de bases de datos o logs.

  • Veracidad de los datos:

    Se necesita que los datos sean lo m谩s veraces posibles para que el modelo pueda hacer una predicci贸n adecuada.

  • Valor de los datos:

    El valor entregado para este caso es de vital importancia, ya que en esta industria tener un buen sistema de recomendaci贸n bien entrenado es requisito indispensable para retener al usuario con lo que tenemos disponible.

3. IDENTIFICAR FUENTES

#3.-IDENTIFICAR-FUENTES

Las fuentes son generadas de una base de datos y/o archivos csv.

4. CLASIFICAR LA DATA

#4.-CLASIFICAR-LA-DATA

Los sistemas de recomendaci贸n se utilizan no solo para pel铆culas, sino tambi茅n en muchos otros productos y servicios como Amazon (Libros, Art铆culos), Pandora / Spotify (M煤sica), Google (Noticias, B煤squeda), YouTube (Videos), etc. En ese sentido, se procede a adjuntar las fuentes que se usar谩n para este an谩lisis:

5. ESTIMAR EL FLUJO DE LA DATA

#5.-ESTIMAR-EL-FLUJO-DE-LA-DATA

Solo vamos a considerar la data para nuestro sistema de recomendaciones, lo generado en el dataset de ratings. La estimaci贸n base es por el primer mes, y duplicando cada mes.

6. DISE脩AR LA ARQUITECTURA CONCEPTUAL

#6.-DISE脩AR-LA-ARQUITECTURA-CONCEPTUAL

7. DISE脩AR LA ARQUITECTURA TECNOL脫GICA

#7.-DISE脩AR-LA-ARQUITECTURA-TECNOL脫GICA

8. IDENTIFICAR PERFILES PROFESIONALES Y PRESUPUESTO

#8.-IDENTIFICAR-PERFILES-PROFESIONALES-Y-PRESUPUESTO

Para nuestro proyecto consideraremos los siguientes perfiles:

  • Data Architect
  • Data Engineer
  • Data Analyst
  • Data Scientist
  • Database Administrator (DBA)
  • Business Analyst Los cuales tienen los siguientes sueldos aproximados:

9. INGESTA DE DATOS

#9.-INGESTA-DE-DATOS

Por temas pr谩cticos trabajaremos en la consola que ofrece el mismo Google Cloud. Una vez dentro, primero creamos una nueva carpeta datasets, donde guardaremos los archivos:

mkdir datasets

Subiremos los archivos a trav茅s del MobaXterm:

Ahora pasamos los datos de linux a hdfs. Primero ingresamos a hdfs:

1
2
3
4
5
6
7
su hdfs```

Creamos una nueva carpeta en hdfs

```hdfs dfs -mkdir rda```

Y por 煤ltimo copiamos los archivos:

hdfs dfs -copyFromLocal /home/israelyance/datasets/links.csv ./rda/links hdfs dfs -copyFromLocal /home/israelyance/datasets/movies.csv ./rda/movies hdfs dfs -copyFromLocal /home/israelyance/datasets/tags.csv ./rda/tags hdfs dfs -copyFromLocal /home/israelyance/datasets/ratings.csv ./rda/ratings

1
2
Lo que tendr铆amos en resumen:
![](https://miro.medium.com/max/3784/1*_EomIg8JCGeNESEtFR4_7g.png)

10. CREAR TABLAS EN HIVE

#10.-CREAR-TABLAS-EN-HIVE

Primero creamos la carpeta hdfs donde vamos a guadar las tablas de hive. hdfs dfs -mkdir uda

11. FLUJO DE STREAMING CON APACHE KAFKA

#11.-FLUJO-DE-STREAMING-CON-APACHE-KAFKA

Apache Kafka es una plataforma distribuida de transmisi贸n de datos que permite publicar, almacenar y procesar flujos de registros, y suscribirse a ellos, en tiempo real. Est谩 dise帽ada para manejar flujos de datos de varias fuentes y distribuirlos a los diversos usuarios.

12. GENERAR GR脕FICOS

#12.-GENERAR-GR脕FICOS

Se pueden generar diversos gr谩ficos en Power BI, haciendo la conexi贸n con nuestro Hive. Algunos gr谩ficos tendr铆amos:

13. EJECUTAR SPARK ML

#13.-EJECUTAR-SPARK-ML

Algunos conceptos antes de ejecutar nuestro algoritmo de recomendaciones es la t茅cnica utilizada para hallar la estimaci贸n.

Como se ve en la figura, la primera matriz se trata de modelar como la multiplicaci贸n de dos matrices, de tal manera que esa multiplicaci贸n d茅 los valores m谩s cercanos. As铆 se obtiene una nueva matriz, que ser谩 llenada en los espacios faltantes, lo cual es nuestra estimaci贸n.

Ahora s铆 vamos al c贸digo:

Primero, inicializar Spark Session

1
2
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Recommendation_system').getOrCreate()

Leer dataset en Apache Spark

1
df = spark.read.format("csv").option("header", "true").load("/rda/ratings/ratings.csv")

Importar m贸dulos importantes

1
2
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS

Creando training y test data

1
(training,test)=transformed.randomSplit([0.8, 0.2])

Crear el modelo ALS y entrenar la data

1
2
3
4
5
als=ALS(maxIter=5,regParam=0.09,rank=25,
        userCol="reviewerID_index",itemCol="asin_index",
        ratingCol="overall", coldStartStrategy="drop",
        nonnegative=True)
model=als.fit(training)

Generar predicciones y evaluar el rmse

1
2
3
4
5
6
7
evaluator=RegressionEvaluator(metricName="rmse",
                              labelCol="overall",
                              predictionCol="prediction")
predictions=model.transform(test)
rmse=evaluator.evaluate(predictions)
print("RMSE="+str(rmse))
predictions.show()