python-109Đọc toàn bộ đề miễn phí

Hệ thống gợi ý lọc cộng tác Item-Item với độ tương đồng Cosine hiệu chỉnh

Sim(i, j) = frac{∑u ∈ Ui, j (Ru, i - Ru)(Ru, j - Ru)}{√(∑u ∈ Ui, j (Ru, i - Ru)2) sqrt{∑u ∈ Ui, j (Ru, j -…

PythonNâng cao40 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

machine learningrecommender systemcollaborative filteringcosine similarity

Kiến thức tiên quyết: matrix operations, adjusted cosine, normalization.

Nội dung đề bài

Mục tiêu kiến thức

  • Hiểu hạn chế của Cosine thông thường khi người dùng có xu hướng chấm điểm khắt khe hoặc hào phóng khác nhau.
  • Triển khai Adjusted Cosine Similarity giữa 2 vật phẩm i và j:

Sim(i, j) = ∑u ∈ Ui, j (Ru, i - Ru)(Ru, j - Ru)√(∑u ∈ Ui, j (Ru, i - Ru)2) √(∑u ∈ Ui, j (Ru, j - Ru)2) trong đó Ui, j là tập người dùng đánh giá cả i và j, Ru là điểm đánh giá trung bình của người dùng u. Nếu |Ui, j| < min_common_users hoặc mẫu số bằng 0, Sim(i, j) = 0.0.

  • Dự đoán điểm số của người dùng u cho vật phẩm i chưa đánh giá:

Ru, i = Ru + ∑j ∈ Sk(i) Sim(i, j) · (Ru, j - Ru)∑j ∈ Sk(i) |Sim(i, j)| trong đó Sk(i) là tập tối đa k vật phẩm có Sim(i, j) > 0 mà người dùng u đã từng đánh giá. Nếu mẫu số bằng 0, gán Ru, i = Ru.

Mô tả bài toán

Cài đặt lớp ItemItemRecommender(k=2, min_common_users=1):

  • fit(self, rating_matrix: np.ndarray) -> self:
  • rating_matrix: mảng 2D kích thước (M, N) với M người dùng và N vật phẩm. Giá trị np.nan thể hiện người dùng chưa đánh giá vật phẩm đó.
  • Kiểm tra: mảng 2D, không rỗng. Nếu sai, raise ValueError.
  • Tính toán và lưu trữ ma trận độ tương đồng kích thước (N, N).
  • predict(self, user_idx: int, item_idx: int) -> float:
  • Trả về điểm số dự đoán của user_idx cho item_idx.
  • Nếu user_idx hoặc item_idx nằm ngoài phạm vi, raise IndexError.

Input

  • Các tham số truyền vào hàm/lớp ItemItemRecommender hoặc dữ liệu đầu vào theo định dạng mô tả.

Output

  • Kết quả trả về của hàm/lớp ItemItemRecommender hoặc dữ liệu in ra màn hình theo đúng đặc tả.

Ràng buộc

  • Thời gian chạy tối đa: 1500ms.
  • Giới hạn bộ nhớ: 256MB.
  • Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.

Ví dụ 1

Input

ItemItemRecommender(matrix=[[5.0, 3.0, None], [4.0, None, 4.0], [1.0, 1.0, None]], user_idx=0, item_idx=2, k=1)

Output

[3.0, 5.5]

Giải thích

Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.

Ví dụ 2

Input

ItemItemRecommender(matrix=[[1.0, 2.0]], user_idx=5, item_idx=0)

Output

True

Giải thích

Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.