Capstone: recsys có đo cold start và sparsity

Capstone 4: nâng recsys ngày 131 lên A-B test, đo cold start và sparsity, blend theo độ ấm, báo cáo business metric.
Chuyên giaThuật toán ~120 phút

Ôn lại trước khi học

Giới thiệu

Bạn gợi ý phim và hàng cho người dùng. Người mới cần cách gợi ý riêng.

Kiến thức cần nhớ

Gợi ý cộng tác

  • Gợi ý cộng tác dựa vào người giống bạn.
  • Ví dụ đời thường: bạn thích gì thì rủ người giống bạn.
  • Cần đủ lịch sử chung mới so được.
  • Ít dữ liệu thì gợi ý kém.

Cold start và sparsity

  • Cold start là người mới hoặc món mới chưa có dữ liệu.
  • Sparsity là bảng đánh giá nhiều ô trống.
  • Ví dụ đời thường: khách mới vào quán chưa biết thích gì.
  • Cách xử lý: dùng món phổ biến hoặc theo nội dung.

A-B test và blend

  • A-B test chia người dùng làm hai nhóm so sánh.
  • Blend là trộn nhiều cách gợi ý theo tỉ lệ.
  • Ví dụ đời thường: blend như pha hai vị nước theo tỉ lệ.
  • Người mới thì tăng tỉ trọng gợi ý phổ biến.
# trộn gợi ý phổ biến và cá nhân
def blend(pho_bien, ca_nhan, do_am):
    w = min(do_am, 1.0)  # càng nhiều dữ liệu càng tin cá nhân
    return w * ca_nhan + (1 - w) * pho_bien  # điểm trộn

Ví dụ

  • Người mới chưa đánh giá gì -> gợi ý top phổ biến.
  • Người cũ nhiều đánh giá -> gợi ý theo sở thích riêng.

💻 Bài tập

Ngôn ngữ: Python 3. Gom code ngày 58, 59, 91, 131. Dữ liệu MovieLens 1M. Nộp vào day-154-capstone/.

Bài 1: Đo cold start

  1. Chọn 500 user có ít nhất 50 rating. Giả làm user mới: giữ lại 0, 1, 3, 5, 10, 20 rating trong train.
  2. Đo precision@10 và NDCG@10 cho 4 mô hình (phổ biến, content, item-CF, MF) ở mỗi mức.
  3. Vẽ đường NDCG theo số rating cho 4 mô hình. Chỉ ra điểm giao nhau: từ bao nhiêu rating thì MF bắt đầu thắng.

Làm tương tự cho phim mới: giấu toàn bộ rating của 200 phim, rồi thêm lại dần.

Bài 2: Đo sparsity

  1. Xóa ngẫu nhiên 0%, 30%, 60%, 90% rating train. In RMSE và NDCG@10 của item-CF và MF.
  2. Tính mật độ ma trận mỗi mức. Viết 3 câu vì sao MF chịu thưa tốt hơn.

Bài 3: Blend và A/B test giả lập (nâng cao)

  1. Blend theo số rating của user: w=min⁡(1,n/n0)w = \min(1, n / n_0), điểm = w⋅MF+(1−w)⋅popularityw \cdot MF + (1 - w) \cdot popularity. Chọn n0n_0 tốt nhất.
  2. A/B test giả lập: chia 6000 user ngẫu nhiên 2 nhóm. Nhóm A dùng MF, nhóm B dùng blend. "Click" là phim trong top 10 được user chấm ≥ 4 ở tập test.
  3. Tính tỉ lệ click 2 nhóm, khoảng tin cậy 95% và p-value (kiểm định 2 tỉ lệ). Kết luận có ý nghĩa thống kê không.
  4. REPORT.md tổng hợp 3 phần.

✅ Tiêu chí hoàn thành

  • Hình NDCG theo số rating cho user mới và phim mới.
  • Bảng sparsity có số thật.
  • Blend có n0n_0 chọn bằng validation.
  • A/B test có khoảng tin cậy và p-value.

❓ Câu hỏi ôn tập

  1. Cold start là gì?
  2. Sparsity cao gây khó gì?
  3. A-B test chia nhóm thế nào?
  4. Blend nghĩa là gì?

🌕 Bạn đã hoàn thành ngày 154. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.