Sparsamkeit berechnen
Wie du weißt, funktioniert ALS gut mit dünn besetzten (sparsity) Datensätzen. Schauen wir uns an, wie viel der ratings-Matrix tatsächlich leer ist.
Erinnere dich: Die Sparsamkeit berechnet sich aus der Anzahl der Zellen in einer Matrix, die eine Bewertung enthalten, geteilt durch die Gesamtzahl der Werte, die die Matrix basierend auf der Anzahl der Nutzer und Items (Filme) aufnehmen könnte. Anders gesagt: Wenn du die Anzahl der vorhandenen Bewertungen in der Matrix durch das Produkt aus Nutzern und Filmen in der Matrix teilst und das Ergebnis von 1 subtrahierst, erhältst du die Sparsamkeit bzw. den Prozentsatz der ratings-Matrix, der leer ist.
Diese Übung ist Teil des Kurses
<Kurs>Recommendation Engines mit PySpark erstellen</Kurs>Übungsanweisungen
- Berechne den
numeratorder Sparsamkeitsmetrik, indem du die Gesamtzahl der Bewertungen in derratings-Matrix zählst. - Ermittle die Anzahl der
distinct()userIdsunddistinct()movieIdsin derratings-Matrix. - Berechne den
denominatorder Sparsamkeitsmetrik, indem du die Anzahl der Nutzer mit der Anzahl der Filme in derratings-Matrix multiplizierst. - Berechne und gib die Sparsamkeit aus, indem du den
numeratordurch dendenominatorteilst, von 1 subtrahierst und mit 100 multiplizierst. Das1.0wird hinzugefügt, um sicherzustellen, dass die Sparsamkeit als Dezimalzahl und nicht als ganze Zahl zurückgegeben wird.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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.")