2010-07-01 54 views
9

Tôi có một hệ thống nơi mọi người có thể bỏ phiếu hoặc bỏ phiếu bầu một mục và tôi muốn hiển thị kết quả của xếp hạng 5 sao.Làm thế nào để thực hiện thuật toán trung bình Bayesian cho hệ thống xếp hạng nhị phân

Tôi đã thử sử dụng thuật toán Xếp hạng Bayesian giải thích herehere không thành công.

Ví dụ: Tôi có ba mục (A, B và C) trong cơ sở dữ liệu của tôi:

A = 500 UP và 500 xuống phiếu B = 0 UP và 1000 xuống phiếu C = 0 UP và 1000 xuống phiếu

làm thế nào để tôi tính toán giá trung bình Bayes cho từng hạng mục để nó có một số điểm trên thang điểm từ 1 đến 5?

+0

bản sao có thể có của [Thuật toán tốt nhất để tính mục được ghi nhiều nhất là gì?] (Http://stackoverflow.com/questions/2134504/what-is-the-best-algorithm-to-calculate-the-most -scored-item) –

Trả lời

3

Simple Đại số:

AvgVotes = Sum của tất cả các bình chọn/Sum của tất cả các mục

AvgRating = Sum lên phiếu bầu cho tất cả các mục * 5/Sum của tất cả các phiếu

CurVotes = Số phiếu trên mục hiện

CurRating = Sum lên phiếu trên mục hiện hành * 5/số phiếu trên mục hiện

TotalVotes = Sum của tất cả các phiếu + Sum phiếu trên mục hiện

((AvgVotes * AvgRating) + (CurVotes * CurRating)) * 5/TotalVotes

Vì vậy, cắm vào con số của bạn đánh giá trọng lượng cho A ...

AvgVotes = 1.000

AvgRating = 0 (Hãy nhớ rằng không bao gồm số lượng cho mặt hàng bạn đang đánh giá tính trợ cấp thôi)

CurVotes = 1.000

.210

CurRating = 500 * 5/1000 = 2,5

Tổng Votes = 2000 + 1000 = 3000

((1000 * 0) + (1000 * 2,5)) * 5/3000 = 4,166

Tôi quên thêm, KHÔNG bao gồm bất kỳ mục nào trong bất kỳ phép tính hoặc tổng số nào ở trên mà không có phiếu bầu hoặc nó sẽ làm giảm trọng số.

EDIT - Giải pháp đơn giản:

Tôi cần lưu ý rằng có một giải pháp đơn giản cho vấn đề có thể được thực hiện. Tôi chỉ thể hiện hình thức dài để hiểu. Các thuật toán nén hình như:

Định nghĩa:

SET = Bất cứ điều gì không liên quan đến mục tiêu đánh giá hiện tại nơi bỏ phiếu là lớn hơn không.

target = Yếu tố bạn đang cố gắng để đánh giá

25 * (((Sum của SET up-votes)/(Sum các hạng mục SET)) + (Sum của MỤC TIÊU up-votes))/(tổng MỤC TIÊU phiếu + Sum của SET votes)

Một lần nữa cắm vào với con số của bạn đánh giá 'A' để làm rõ và chứng minh:

(25 * ((0/2) +500))/(1000+ 2000) = 4.166

+0

Tôi đã chuyển nhận xét của mình vào bài đăng đã chỉnh sửa ở trên để dễ đọc hơn. –

7

Bài đăng trên blog này, How Not To Sort By Average Rating, mô tả chính xác tình huống của bạn và cách giải quyết i t bằng cách sử dụng Wilson Score confidence interval. Reddit used this để có hiệu quả tốt.

+4

Để tiết kiệm thời gian khác, tính năng này không hoạt động đối với xếp hạng 5 sao, chỉ cho những xếp hạng tích cực/tiêu cực. – mattmanser

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