Theo nhƣ phần Giới thiệu về hệ thống tƣ vấn, hệ thống sẽ sử dụng cơ sở dữ liệu mẫu MovieLens trong đó bao gồm thông tin về ngƣời dùng, các bộ phim và đánh giá của ngƣời dùng đối với các bộ phim đó. Tức là, hệ thống có thể lấy dữ liệu dƣới dạng một tập dữ liệu bao gồm thông tin ngƣời dùng với danh sách các bộ phim mà họ đánh giá cùng điểm số tƣơng ứng từ 1-5. Ví dụ:
- 'Lisa Rose' = {‘Mr. Holland’s Opus (1995)’: 3, ‘Crimson Tide (1995)’: 4, ‘Ace Ventura: Pet Detective (1994)’: 3}
- 'Gene Seymour' = {‘ Mr. Holland’s Opus (1995)’: 4, ‘Crimson Tide (1995)’: 5, ‘Ace Ventura: Pet Detective (1994)’: 2, ‘Philadelphia Story. The (1940)’: 4}
Kỹ thuật này có 3 bước:
- Bước 1: Tìm ngƣời dùng tƣơng tự: Sau khi thu thập dữ liệu về những bộ phim ngƣời xem thích, hệ thống cần một cách để xác định cách những ngƣời xem có thị hiếu tƣơng tự. Nó sẽ so sánh từng ngƣời với tất cả các ngƣời khác và tính toán độ tƣơng tự.
Có một số cách để làm điều này đã đƣợc trình bày ở mục 2.1.2. Quy trình phương
pháp lọc cộng tác trong phần 2.1. Phương pháp lọc cộng tác thuộc Chƣơng 2. Nhƣ đã trình bày trong mục 2.1.2, tôi sẽ sử dụng phƣơng pháp tính hệ số tƣơng quan Pearson để tính toán độ tƣơng tự.
Công thức tính toán tƣơng quan Pearson giữa 2 ngƣời dùng:
NGUYỄN THÙY TRANG – K43 TIN HỌC KINH TẾ Trang 50
- là tổng các tích đánh giá của nguời xem x, y theo từng bộ phim.
- , là tổng các đánh giá của ngƣời xem x, y theo từng bộ phim.
- , là tổng các bình phƣơng của ngƣời xem x, y theo từng bộ phim.
- n là số bộ phim ngƣời xem x, y đánh giá chung.
Giá trị trả về nằm trong khoảng -1 và 1, tƣơng ứng từ hoàn toàn khác biệt cho đến tƣơng đồng.
- Bước 2: Từ kết quả bƣớc 1 sắp xếp lại các điểm tƣơng đồng đó theo chiều giảm dần và lấy 20 ngƣời dùng gần nhất.
- Bước 3: Đƣa ra danh sách các bộ phim tƣ vấn: lấy danh sách các bộ phim mà ngƣời xem đang xét đến chƣa xem đồng thời lấy đánh giá của của danh sách các ngƣời xem tƣơng đồng đối với chính các phim đó rồi đƣa ra danh sách tƣ vấn. Quá trình tính toán đƣợc mô phỏng nhƣ sau:
Bảng 3.1. Quá trình tính toán thuật toán tƣ vấn dựa trên ngƣời dùng
Bảng này cho biết số điểm tƣơng quan cho mỗi nhà phê bình và xếp hạng họ
cho ba phim (The Night Listener, Lady in the Water và Just My Luck) mà ngƣời xem
đang xét chƣa đánh giá hoặc không đánh giá cao. Các cột Sx là tích điểm số tƣơng
đồng với đánh giá cho phim tƣơng ứng. Hàng Total cho thấy tổng của tất cả những con số này.
Ta chỉ có thể sử dụng Total để tính toán các bảng xếp hạng, nhƣng sau đó một bộ phim đƣợc xem bởi nhiều ngƣời sẽ có lợi thế lớn. Để khắc phục cho điều này, ta
NGUYỄN THÙY TRANG – K43 TIN HỌC KINH TẾ Trang 51 cần phải chia Total cho tổng các điểm tƣơng đồng của những nguời xem có đánh giá bộ phim tƣơng (hàng Sim. Sum trong bảng). Dòng cuối cùng cho thấy các kết quả của các tính toán này.
Nhƣ vậy, qua 3 bƣớc tính toán, chúng ta đã có thể đƣa ra danh sách các bộ phim cần tƣ vấn cho ngƣời xem đang xét.
Độ phức tạp của thuật toán:
Ở thuật toán này bao gồm các vòng lặp for để kiểm tra số phim đánh giá chung và vòng lặp để tính toán danh sách 20 láng giềng gần nhất có độ phức tạp có độ phức
tạp thuật toán là ; trong mỗi vòng lặp tính toán , , , , cần
cập nhật lại giá trị tổng sau đó và mỗi vòng lặp có độ phức tạp là . Vòng lặp để
thực hiện đƣa ra danh sách phim tƣ vấn có độ phức tạp thuật toán . Vậy độ phức
tạp thuật toán tƣ vấn dựa trên ngƣời dùng là .
Đối với thuật toán User-based, khi số lƣợng ngƣời dùng còn ít, việc tính toán độ tƣơng tự vẫn còn chiếm ít bộ nhớ và mất ít thời gian. Tuy nhiên, thực tế là bất kì trang web nào cũng luôn có số lƣợng ngƣời dùng nhiều hơn số lƣợng các mặt hàng, sản phẩm nên khi số lƣợng ngƣời dùng càng tăng, thời gian tính độ tƣơng tự giữa một
ngƣời dùng với n ngƣời còn lại càng hao tổn bộ nhớ và thời gian bị chậm đi.