Tôi có một trang web trong đó người dùng đánh giá mọi thứ trong hệ thống 1-5 sao. Khi một mục đạt đến đỉnh của bảng xếp hạng, một số người dùng có xu hướng bắt đầu xếp hạng 1 sao mặc dù nó có phần lớn 4-5 sao để đạt được mục tiêu đó. Nó không lan man, tôi sẽ nói 10-20% số phiếu mới là 1. Rõ ràng họ đang cố gắng thao túng hệ thống xếp hạng, và tôi muốn ngăn chặn điều đó.
Cách hiện tại tôi đang làm là bằng cách có một "cửa sổ hợp lý" về những gì tôi coi là một cuộc bỏ phiếu hợp pháp.
Đối với các mục có ít hơn 10 phiếu; Tôi hiện không làm gì và có ý nghĩa như đánh giá của nó.
Khi một mục bắt đầu nhận được hơn 10 phiếu, tôi buộc chúng vào một cửa sổ có ý nghĩa. Cửa sổ này được định nghĩa là
Window = 4.5 - Log(TotalVotes, 10);
Vì vậy, một phạm vi bỏ phiếu hợp lý là sau đó (Mean - Window) thru (Mean + Window)
Khi phạm vi phiếu hợp lý được tìm thấy, "Xếp hạng" chỉ là giá trị trung bình của tất cả các phiếu hợp lý (những người nằm trong phạm vi hợp lý).
Điều này có nghĩa là một mục có ý nghĩa thực sự là 4.2 với 100 phiếu sẽ có một cửa sổ 4.5-Log(100,10) = 2.5
, vì vậy nếu mục đó được bình chọn 1 sao, nó sẽ bị bỏ qua trong xếp hạng. Tuy nhiên, 1 sao vẫn sẽ ảnh hưởng đến giá trị trung bình cơ bản.
Điều này nói chung đã hoạt động tốt nhưng vấn đề là khi một mặt hàng Mean - Window
chỉ ở mức 1, ngay khi nó giảm xuống dưới 1, mỗi phiếu bầu 1 sao bây giờ được đưa vào xếp hạng và xếp hạng giảm đáng kể ngay cả chênh lệch trước và sau có thể vừa được thêm một đánh giá 1 sao.
Tôi cần một hệ thống / cách hoàn thành tốt hơn để lọc ra các xếp hạng 1 sao này, và không chỉ họ mà còn xử lý tình huống trong đó ai đó có thể khiến bạn bè của họ nâng cấp một mục 10 phiếu và cả 5 sao, trong đó xếp hạng thực sự của nó có thể nhiều hơn 3 sao.
Tìm kiếm bất kỳ đề xuất nào về cách xử lý các hệ thống xếp hạng do người dùng điều khiển và bình thường hóa các phiếu bầu ngoại lệ.