Обчислення розрідженості
Як ви знаєте, ALS добре працює з розрідженими наборами даних. Подивімося, яка частка матриці ratings насправді порожня.
Пам'ятайте, що розрідженість обчислюється як кількість клітинок у матриці, що містять оцінку, поділена на загальну кількість значень, які ця матриця могла б містити з огляду на кількість користувачів і елементів (фільмів). Іншими словами, якщо поділити кількість наявних у матриці оцінок на добуток кількості користувачів і кількості фільмів у матриці та відняти це значення від 1, отримаємо розрідженість, тобто відсоток порожніх клітинок у матриці ratings.
Ця вправа є частиною курсу
Створення рушіїв рекомендацій у PySpark
Інструкції до вправи
- Обчисліть
numeratorметрики розрідженості, підрахувавши загальну кількість оцінок у матриціratings. - Обчисліть кількість
distinct()userIdsіdistinct()movieIdsу матриціratings. - Обчисліть
denominatorметрики розрідженості, помноживши кількість користувачів на кількість фільмів у матриціratings. - Обчисліть і виведіть розрідженість: поділіть
numeratorнаdenominator, відніміть результат від 1 і помножте на 100. Додайте1.0, щоб гарантовано отримати десяткове число, а не ціле.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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.")