Sparsity berekenen
Zoals je weet werkt ALS goed met sparse gegevenssets. Laten we bekijken hoeveel van de ratings-matrix eigenlijk leeg is.
Onthoud dat sparsity wordt berekend als het aantal cellen in een matrix met een rating gedeeld door het totale aantal waarden dat die matrix kan bevatten, gegeven het aantal gebruikers en items (films). Met andere woorden: deel het aantal aanwezige ratings in de matrix door het product van gebruikers en films in de matrix en trek dat getal af van 1. Zo krijg je de sparsity, oftewel het percentage van de ratings-matrix dat leeg is.
Deze oefening maakt deel uit van de cursus
Aanbevelingssystemen bouwen met PySpark
Oefeninstructies
- Bereken de
numeratorvan de sparsity-metriek door het totale aantal ratings in deratings-matrix te tellen. - Bereken het aantal
distinct()userIdsendistinct()movieIdsin deratings-matrix. - Bereken de
denominatorvan de sparsity-metriek door het aantal gebruikers te vermenigvuldigen met het aantal films in deratings-matrix. - Bereken en print de sparsity door de
numeratorte delen door dedenominator, daarvan 1 af te trekken en te vermenigvuldigen met 100. De1.0is toegevoegd om te zorgen dat de sparsity als een decimaal wordt geretourneerd en niet als een geheel getal.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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.")