EmpezarEmpieza gratis

Calcular la dispersión

Como sabes, ALS funciona bien con conjuntos de datos dispersos. Vamos a ver cuánto de la matriz de ratings está realmente vacía.

Recuerda que la dispersión se calcula como el número de celdas de una matriz que contienen una valoración dividido entre el número total de valores que esa matriz podría tener según el número de usuarios y elementos (películas). En otras palabras, dividir el número de valoraciones presentes en la matriz entre el producto de usuarios y películas de la matriz y restarlo de 1 nos dará la dispersión o el porcentaje de la matriz de ratings que está vacía.

Este ejercicio forma parte del curso

Creación de motores de recomendación con PySpark

Ver curso

Instrucciones del ejercicio

  • Calcula el numerator de la métrica de dispersión contando el número total de valoraciones que hay en la matriz de ratings.
  • Calcula el número de distinct() userIds y distinct() movieIds en la matriz de ratings.
  • Calcula el denominator de la métrica de dispersión multiplicando el número de usuarios por el número de películas en la matriz de ratings.
  • Calcula e imprime la dispersión dividiendo el numerator entre el denominator, restando a 1 y multiplicando por 100. Se añade 1.0 para asegurarse de que la dispersión se devuelva como un decimal y no como un entero.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# Count the total number of ratings in the dataset
numerator = ____.select("____").count()

# Count the number of distinct userIds and distinct movieIds
num_users = ____.select("____").____().count()
num_movies = ____.select("____").____().count()

# Set the denominator equal to the number of users multiplied by the number of movies
denominator = ____ * ____

# Divide the numerator by the denominator
sparsity = (1.0 - (____ *1.0)/____)*100
print("The ratings dataframe is ", "%.2f" % sparsity + "% empty.")
Editar y ejecutar código