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
Instrucciones del ejercicio
- Calcula el
numeratorde la métrica de dispersión contando el número total de valoraciones que hay en la matriz deratings. - Calcula el número de
distinct()userIdsydistinct()movieIdsen la matriz deratings. - Calcula el
denominatorde la métrica de dispersión multiplicando el número de usuarios por el número de películas en la matriz deratings. - Calcula e imprime la dispersión dividiendo el
numeratorentre eldenominator, restando a 1 y multiplicando por 100. Se añade1.0para 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.")