2010-03-31 24 views
6

Tôi cần trợ giúp thiết kế thuật toán cho các đề xuất về phim.Thuật toán: Tạo đề xuất cho phim bạn có thể thích

Mọi người dùng trong hệ thống đều chấm điểm các phim có số điểm từ 1-100.

Bàn bao gồm:

Table Movies 
ID Name Year Rating Runtime 

Table Con_MoviesToGenres 
MovieID GenreID 

Table Con_MovieToUser 
MovieID UserID Grade 

Tôi đang cố gắng để xây dựng một truy vấn SELECT để trả 5 phim đề nghị nhất cho một bộ phim cụ thể.

Lưu ý, tôi muốn tích hợp theo cách nào đó, các thể loại tương tự, điểm cao nhất & Xếp hạng phim (do đó bạn muốn được đề xuất phim đánh giá R cho phim được xếp hạng PG, trừ khi nó thực sự được đề xuất ở mọi khía cạnh khác). Ngoài ra, nếu phim khớp với nhiều thể loại, phim sẽ tăng tỷ lệ đề xuất của nó.

Phần thưởng: Nếu người dùng cấp điểm thấp cho phim -> nó sẽ mất tỷ lệ đề xuất.

Cập nhật: Tôi muốn nói cho một người dùng và một tên sách. Bất cứ khi nào người dùng nhập "trang phim" - anh ấy sẽ nhận được đề xuất cho các phim khác mà anh ấy có thể thích.

Trả lời

4

Bạn đang trễ the contest kết thúc.

Nhưng thú vị của nó.

Bạn sẽ phải nhìn vào một số toán học ưa thích (oh Tôi yêu tất cả điều này)

  1. Linear Algebra
  2. Artificial Intelligence
  3. Lý thuyết Graph

bài viết:

  1. Item-based Collaborative Filtering Recommendation Algorithms (1424 trích dẫn)
  2. TANGENT: A Novel, “Surprise-me”, Recommendation Algorithm
  3. What is a Good Recommendation Algorithm? - HackerNews
  4. Tony Phillips' Take on Math in the Media
  5. We Recommend a Singular Value Decomposition
  6. Netflix prize tribute: Recommendation algorithm in Python
  7. Studying Recommendation Algorithms by Graph Analysis
+0

ahhhhhhhhhhhhhhhhhhhhhhhhhh – Faruz

+0

Điều này phức tạp, tôi biết, nhưng tôi chưa bao giờ nói điều đó là không. (dòng này là stolon;) –

1

Điều này phải được thực hiện ở cấp nguyên tử: tính toán đề xuất cho một tiêu đề HOẶC người dùng tại một thời điểm.

Không có cách nào bạn có thể phù hợp với tất cả các chi tiết trong truy vấn SQL. Điều này phải được thực hiện là mã thực.

+0

tôi có nghĩa là cho một người sử dụng và một tiêu đề. Bất cứ khi nào người dùng nhập "trang phim" - anh ấy sẽ nhận được đề xuất cho các phim khác mà anh ấy có thể thích. – Faruz

+0

Tốt cho bạn. Câu trả lời của tôi vẫn như cũ. –

1

Có thể không có liên quan đến SQL, nhưng nếu bạn thích python, có một số hướng dẫn về chủ đề này trong một cuốn sách gọi là Collective Intelligence

2

Nếu dùng A và User B đã thấy 10 phim trong phổ biến, và có một tương quan tích cực cao giữa xếp hạng của họ (ngụ ý cả hai đều có ý kiến ​​tương tự về phim), sau đó bạn có thể lấy một bộ phim mà Người dùng B đã xếp hạng cao và giới thiệu phim cho Người dùng A.

Để làm điều gì đó như thế này, có thể bạn có thể tính toán trước một bảng phụ để ánh xạ User X và User Y tới số lượng phim mà họ đã xem và điểm tương quan của Pearson giữa xếp hạng của họ

Khi người dùng yêu cầu đề xuất, bạn có thể sử dụng bảng này để tìm người dùng có tương quan cao và sau đó đề xuất nội dung mà anh ấy đã xem và thích người này không có

Trong trường hợp người dùng không có đủ người dùng phổ biến với bất kỳ ai khác, bạn có thể quay lại để đề xuất phim được xếp hạng cao nhất tổng thể mà người dùng chưa xem

+0

Nhưng nếu cả hai cùng xem phim, nhưng người dùng B thực sự không thích họ khi người dùng A yêu họ? – Faruz

+0

sau đó mối tương quan của họ sẽ thấp hơn và bạn có thể chọn người khác thay vì Người dùng B, để tìm phim cho Người dùng A –

1

Bạn có thể muốn xem cuộc thi NetFlix. Tìm thấy một bài viết về nó here. Có thể ít nhất cung cấp cho bạn một số ý tưởng hay ...

Các vấn đề liên quan