Calculer la parcimonie
Comme vous le savez, ALS fonctionne bien avec des jeux de données clairsemés. Voyons quelle proportion de la matrice ratings est en fait vide.
Rappelez‑vous que la parcimonie se calcule par le nombre de cellules d'une matrice qui contiennent une note, divisé par le nombre total de valeurs que cette matrice pourrait contenir compte tenu du nombre d'utilisatrices et d'utilisateurs et d'articles (films). Autrement dit, diviser le nombre de notes présentes dans la matrice par le produit du nombre d'utilisatrices et d'utilisateurs et du nombre de films dans la matrice, puis soustraire ce résultat de 1, vous donnera la parcimonie, c'est‑à‑dire le pourcentage de la matrice ratings qui est vide.
Cette activité fait partie du cours
Créer des moteurs de recommandation avec PySpark
Instructions de l’exercice
- Calculez le
numeratorde la mesure de parcimonie en comptant le nombre total de notes présentes dans la matriceratings. - Calculez le nombre de
distinct()userIdset dedistinct()movieIdsdans la matriceratings. - Calculez le
denominatorde la mesure de parcimonie en multipliant le nombre d'utilisatrices et d'utilisateurs par le nombre de films dans la matriceratings. - Calculez et affichez la parcimonie 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 parcimonie est renvoyée sous forme de décimal et non d'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.")