On the topic of weird voting systems, I like EigenTrust[1] and friends[2].
Basic idea: a trustworthy agent is someone who upvotes other trustworthy agents, and who downvotes untrustworthy agents.
For EigenTrust, essentially:
For each user:
Calculate the local trust level of all other agents, that is num_same_votes(a, b) - num_different_votes(a, b)
Normalize the result, by dividing by the total sum. This gives you your trust in all ‘adjacent’ agents.
Repeatedly extend this by assuming that trust(A, C) = trust(A, B) * trust(B, C).
Weight all votes on each post by their trust scores. (Yes, this is different per user.)
(This iterative approach somewhat approximates calculating the eigenvalues/vectors of the vote matrix, if you’re wondering where the name comes from)
(There are similar approaches that rely on explicitly calculating the eigenvalues/vectors of the vote matrix instead of doing an iterative approach.)
(There are ambiguous cases, such as if A and B are entirely disconnected from each other. I’m not actually sure if this is a problem?)
Unfortunately, computing this is likely computationally infeasible at scale.
(And it has failure modes similar to PageRank link farms...)
*****
If you did this system, you could do something Good Heart like with the primary eigenvector...
https://en.wikipedia.org/wiki/EigenTrust
http://www.scottaaronson.com/morality.pdf
On the topic of weird voting systems, I like EigenTrust[1] and friends[2].
Basic idea: a trustworthy agent is someone who upvotes other trustworthy agents, and who downvotes untrustworthy agents.
For EigenTrust, essentially:
For each user:
Calculate the local trust level of all other agents, that is num_same_votes(a, b) - num_different_votes(a, b)
Normalize the result, by dividing by the total sum. This gives you your trust in all ‘adjacent’ agents.
Repeatedly extend this by assuming that trust(A, C) = trust(A, B) * trust(B, C).
Weight all votes on each post by their trust scores. (Yes, this is different per user.)
(This iterative approach somewhat approximates calculating the eigenvalues/vectors of the vote matrix, if you’re wondering where the name comes from)
(There are similar approaches that rely on explicitly calculating the eigenvalues/vectors of the vote matrix instead of doing an iterative approach.)
(There are ambiguous cases, such as if A and B are entirely disconnected from each other. I’m not actually sure if this is a problem?)
Unfortunately, computing this is likely computationally infeasible at scale.
(And it has failure modes similar to PageRank link farms...)
*****
If you did this system, you could do something Good Heart like with the primary eigenvector...
https://en.wikipedia.org/wiki/EigenTrust
http://www.scottaaronson.com/morality.pdf