Bắt đầu ngayBắt đầu miễn phí

Tính độ thưa (sparsity)

Như bạn biết, ALS hoạt động tốt với các bộ dữ liệu thưa. Hãy xem ma trận ratings thực sự trống bao nhiêu.

Hãy nhớ rằng độ thưa được tính bằng số ô trong ma trận có chứa xếp hạng chia cho tổng số giá trị mà ma trận đó có thể chứa dựa trên số lượng người dùng và mục (phim). Nói cách khác, lấy số lượng xếp hạng hiện có trong ma trận chia cho tích của số người dùng và số phim trong ma trận, rồi lấy 1 trừ đi kết quả đó sẽ cho bạn độ thưa, hay phần trăm của ma trận ratings đang trống.

Bài tập này là một phần của khóa học

Xây dựng Recommendation Engine với PySpark

Xem khóa học

Hướng dẫn bài tập

  • Tính numerator (tử số) của chỉ số độ thưa bằng cách đếm tổng số xếp hạng có trong ma trận ratings.
  • Tính số lượng userIds distinct()movieIds distinct() trong ma trận ratings.
  • Tính denominator (mẫu số) của chỉ số độ thưa bằng cách nhân số người dùng với số phim trong ma trận ratings.
  • Tính và in ra độ thưa bằng cách lấy 1 trừ đi kết quả của numerator chia cho denominator, rồi nhân với 100. Thêm 1.0 để đảm bảo giá trị trả về là số thực thay vì số nguyên.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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.")
Chỉnh sửa và Chạy Mã