Výpočet řídkosti
Jak už víš, ALS funguje dobře s řídkými datovými sadami. Podívejme se, kolik z matice ratings je ve skutečnosti prázdných.
Připomeňme, že řídkost se počítá jako podíl počtu buněk v matici, které obsahují hodnocení, a celkového počtu hodnot, které by matice mohla mít při daném počtu uživatelů a položek (filmů). Jinak řečeno: vydělíme počet přítomných hodnocení součinem počtu uživatelů a filmů v matici a výsledek odečteme od 1 — tím získáme řídkost, tedy procentuální podíl prázdných buněk v matici ratings.
Toto cvičení je součástí kurzu
Tvorba doporučovacích systémů s PySparkem
Pokyny k cvičení
- Vypočítej
numerator(čitatel) metriky řídkosti tak, že spočítáš celkový počet hodnocení obsažených v maticiratings. - Vypočítej počet
distinct()userIdsadistinct()movieIdsv maticiratings. - Vypočítej
denominator(jmenovatel) metriky řídkosti vynásobením počtu uživatelů počtem filmů v maticiratings. - Vypočítej a vypiš řídkost tak, že vydělíš
numeratorhodnotoudenominator, výsledek odečteš od 1 a vynásobíš 100. Hodnota1.0je přidána proto, aby byl výsledek vrácen jako desetinné číslo, a ne jako celé číslo.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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.")