Calculer la sparsité
Comme vous le savez, ALS fonctionne bien avec des jeux de données clairsemés. Voyons quelle part de la matrice ratings est réellement vide.
Rappelez-vous que la sparsité se calcule comme le nombre de cellules d’une matrice qui contiennent une note, divisé par le nombre total de valeurs que la matrice pourrait contenir étant donné le nombre d’utilisateurs et d’éléments (films). En d’autres termes, diviser le nombre de notes présentes dans la matrice par le produit du nombre d’utilisateurs et du nombre de films, puis soustraire ce résultat de 1, vous donnera la sparsité, c’est-à-dire le pourcentage de la matrice ratings qui est vide.
Cet exercice fait partie du cours
<cours>Créer des moteurs de recommandation avec PySpark</cours>Instructions de l’exercice
- Calculez le
numeratorde la métrique de sparsité en comptant le nombre total de notes contenues dans la matriceratings. - Calculez le nombre de
distinct()userIdset dedistinct()movieIdsdans la matriceratings. - Calculez le
denominatorde la métrique de sparsité en multipliant le nombre d’utilisateurs par le nombre de films dans la matriceratings. - Calculez et affichez la sparsité en divisant le
numeratorpar ledenominator, en soustrayant le résultat de 1 et en multipliant par 100. Le1.0est ajouté pour s’assurer que la sparsité est retournée au format décimal et non entier.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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.")