2010-10-29 28 views
11

Tôi đang tìm cách viết một công cụ đề xuất cơ bản sẽ lấy và lưu trữ danh sách ID số (có liên quan đến sách), so sánh chúng với những người dùng khác có số lượng ID giống hệt nhau và đề xuất bổ sung sách dựa trên những phát hiện đó.Viết công cụ đề xuất cơ bản

Sau một chút Googling, tôi đã tìm thấy this article, thảo luận về việc triển khai một thuật toán Slope One, nhưng dường như dựa vào người dùng đánh giá các mục được so sánh. Lý tưởng nhất, tôi muốn đạt được điều này mà không cần người dùng cung cấp xếp hạng. Tôi giả định rằng nếu người dùng có cuốn sách này trong bộ sưu tập của họ, họ thích nó.

Trong khi nó tấn công tôi rằng tôi có thể mặc định xếp hạng là 10 cho mỗi cuốn sách, tôi tự hỏi liệu có một thuật toán hiệu quả hơn tôi có thể sử dụng hay không. Lý tưởng nhất là tôi muốn tính toán các khuyến nghị này một cách nhanh chóng (tránh tính toán hàng loạt). Mọi lơi đê nghị đêu nên được đanh gia cao.

Trả lời

11

Thuật toán cơ bản cho tác vụ của bạn là hệ thống giới thiệu collaborative memory-based. Nó khá dễ dàng để thực hiện, đặc biệt là khi các mục của bạn (trong sách trường hợp của bạn) chỉ có ID và không có các tính năng khác.

Nhưng, như bạn đã nói, bạn cần một số loại xếp hạng từ người dùng cho các mục. Nhưng đừng nghĩ đến xếp hạng như từ 1 đến 5 sao, nhưng giống như lựa chọn nhị phân như 0 (sách không đọc) và 1 (đọc sách) hoặc quan tâm đến hoặc không quan tâm đến.

Sau đó sử dụng một cách phù hợp distance measure để tính toán sự khác biệt giữa tất cả người dùng (và bộ của họ về các mặt hàng) và bản thân, chọn n người dùng tương tự nhất với chính mình (của ai người dùng tích cực là) và chọn ra họ các mục bạn chưa xếp hạng (hoặc được xem xét, lựa chọn 0).

Tôi nghĩ trong trường hợp này, một biện pháp khoảng cách tốt sẽ là khoảng cách 1-norm hoặc đôi khi được gọi là khoảng cách Manhattan. Nhưng đây là điểm mà bạn phải thử nghiệm với tập dữ liệu của mình để có kết quả tốt nhất.

A nice giới thiệu đến chủ đề này là các giấy bởi Breese et al., Empirical Phân tích Đoán Các thuật toán cho hợp tác Filtering. Có sẵn here (PDF). Đối với một bài nghiên cứu, nó dễ đọc.

+0

Bạn đang đề xuất tiêu chuẩn L1 cơ sở nào? – isomorphismes

+0

@Lao Tử: Hoàn toàn theo các biện pháp và thử nghiệm thực nghiệm của riêng tôi. Khi tôi sử dụng dữ liệu với chỉ nhị phân "xếp hạng" (như cuốn sách trong hoặc không trong bộ sưu tập), nó đã cho tôi tốt (như tốt hơn so với hầu hết các định mức khác) kết quả. Nhưng như tôi đã nói, đây là điểm mà bạn phải tự mình thử nghiệm. Hoặc đào qua một số tài liệu nghiên cứu liên quan đến những câu hỏi này. – dermatthias

+0

Đủ công bằng. Trong hệ thống tôi đang làm việc trên chúng tôi sử dụng các chỉ tiêu cụ thể cho sản phẩm. Tôi đã tìm thấy nó đơn giản hơn để chỉ thiết kế không gian số liệu xung quanh các chi tiết cho một khách hàng nhất định. – isomorphismes

2

Apriori algorithm có thể cung cấp cho bạn các đề xuất dựa trên bộ mục nào thú vị với người dùng. Bạn phải xác định khái niệm riêng của mình về tập hợp thú vị, ví dụ: các mục mà người dùng đã mua theo một thứ tự, các mục mà người dùng đã từng mua, các mục mà người dùng đã nhận xét một cách thuận lợi, các mục mà người dùng đã khám phá chi tiết.

Thuật toán Apriori yêu cầu xử lý hàng loạt, nhưng cải tiến tồn tại mà có thể không yêu cầu xử lý theo lô. Đây là AprioriTid và AprioriHybrid (xin lỗi, không có liên kết).

0

@ndg Điều đó rất sâu sắc và là người làm việc trong lĩnh vực này, tôi nghĩ bạn đang sử dụng đúng số tiền cho hệ thống xếp hạng ~ {0,1}. Hầu hết sự khác biệt trong xếp hạng sao chỉ là tiếng ồn. Bạn có thể cho phép {0,1,2} với "yêu thích nó!" nhưng một lần nữa người dùng không nhất quán trong việc sử dụng các nút như vậy để có thể giới hạn lựa chọn. Hotpot cho phép người dùng có 10 yêu thích siêu cộng giúp giữ cho nó nhất quán.

Lời khuyên của tôi là phải cẩn thận khi vẽ quá rộng các nét vẽ. Nói cách khác, một thuật toán phổ quát là đơn giản nhất nhưng bạn bỏ lỡ cơ hội để có cơ hội.

Lấy một tập dữ liệu nhỏ mà bạn rất quen thuộc - như một số bạn bè của bạn sử dụng trang web - và lưu ý tất cả các yếu tố có thể có ảnh hưởng tích cực hoặc tiêu cực đến xếp hạng từ xa. Sau đó, trong quá trình mô hình hóa, bạn phải quyết định yếu tố nào và bao nhiêu.

Hãy nhớ rằng số lượng chỉ tiêu về kích thước của số lượng đường cong. Và bạn có thể muốn xem xét một quasinorm, pseudonorm, hoặc thậm chí không liên tục định mức.

Tôi không thấy lý do nào để sử dụng tiêu chuẩn Manhattan, trên thực tế tôi sẽ sử dụng các chỉ tiêu dựa trên biểu đồ để tính toán khoảng cách giữa người dùng.

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