НачатьНачать бесплатно

Вычисление разреженности

Как вы знаете, ALS хорошо работает с разреженными наборами данных. Давайте посмотрим, какая часть матрицы ratings на самом деле пуста.

Напомним, что разреженность вычисляется как отношение числа ячеек матрицы, содержащих оценку, к общему количеству значений, которые могла бы содержать матрица с учётом числа пользователей и объектов (фильмов). Иными словами, нужно разделить количество имеющихся оценок на произведение числа пользователей и фильмов в матрице, а затем вычесть результат из 1 — это и даст нам разреженность, то есть долю пустых ячеек матрицы ratings.

Это упражнение является частью курса

Построение рекомендательных систем с помощью PySpark

Посмотреть курс

Инструкции к упражнению

  • Вычислите numerator (числитель) метрики разреженности, подсчитав общее количество оценок в матрице ratings.
  • Вычислите количество уникальных (distinct()) значений userIds и 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.")
Редактировать и запускать код