Good rating/reputation systems? [closed]
Asked Answered
C

3

14

I am working on a website which is quite similar to Yahoo! Answers: an user can post the question, wait for answers from other people and pick the better one. In order to identify the best users, there is a reputation system, which has these features:

  • One can upvote or downvote an user;
  • One can upvote or downvote an answer;
  • There is an "experience" score for each topic, which increases for every question answered.

Now, if possible, I'd like to find an algorithm to combine all these factors and give a "trustability" score for each answer.

So far, I tried doing it by myself using things like products of Coefficient * (UpVotes / TotalVotes), but it was too linear. I also tried other ways, but they didn't work (Bayesian algorithm). At the moment, in the Alpha version, I'm using Trustability = sqrt(GoodAnswers).

Notes: the algorithm must be individual (no need to scan the entire database to get data like averages, sums, etc) and fast, if possible. I'm going to implement this in PHP-MySQL.

Combine answered 7/9, 2012 at 15:1 Comment(3)
You may also want to think of the trustability of users upvoting/downvoting. Untrusted users should count less for others' trustability than trusted usersForelock
You could give each user points per upvote, just like on SO. Work it so that reputation is a numerical value.Hireling
This is well explained and a good debate point, but it is exactly that - a debate and not a question with a definitive answer. As such SO is not really the best place for it and as such, voting to close as NC because this question will likely solicit debate, arguments, polling, or extended discussionPortamento
I
6

There are huge number of approaches to ranking system. With using time dimension, up/down votes number, rating of upvoters and downvoters, hits and almost anything that you can imagine.

There is a good article about ranking system in Reddit.

The most straightforward solution that came up in my mind is to calculate some weight of upvote for individual user. That means that more trusted user is more influential than another one. E.g. user with rating 100 upvote is definitely better than downvote from two users with rating -100. But we can't say that this is better than 100 downvotes from -100 users. try to experiment wit that.

Infuse answered 7/9, 2012 at 15:11 Comment(1)
That's a good answer, definitely. I wouldn't consider the time dimension, mainly for an efficiency problem: too much memory used. I'd pick the second idea: It does not require memory or calculations, then I guess I'll use this. (BTW it's more or less the thinking of other users, just better explained.)Combine
M
1

You can use the same idea of google page rank : When a user upvote you or add your question\answer as favorite, the increase of your trustability depends on this user trustability.

http://en.wikipedia.org/wiki/PageRank

Mooneyham answered 7/9, 2012 at 15:6 Comment(2)
Beware that PageRank is patented by Stanford.Phane
Beware that nearly nobody knows the exact working of PageRank.Combine
H
0

Use an ELO/Glicko like system. Every user starts with standard value, then consider downvoting or upvoting like results of a one to one match.

Holmun answered 7/9, 2012 at 15:9 Comment(1)
That's a nice start, but still it requires an algorithm: we need to know how many points to add/subtract in the "match".Combine

© 2022 - 2024 — McMap. All rights reserved.