2012-04-22 11 views
6

Implementé un sistema simple de votación arriba/abajo en un sitio web, y hago un seguimiento de los votos individuales, así como del tiempo de votación y del usuario único iD (IP hash).Votación - ¿Número de votos vs porcentaje de votos?

Mi pregunta no es cómo calcular el porcentaje o la suma de los votos, pero más, ¿cuál es un buen algoritmo para determinar un buen puntaje basado en los votos?

Encuentro que la clasificación por porcentaje de voto puro es inaceptable, así como simplemente el conteo de votos a favor.

Considere este ejemplo:

  • Image A: 4 upvotes, 1 downvotes
  • Image B: 5 upvotes, 4 downvotes
  • Image C: 1 upvote, 0 downvotes

El sistema ideal pondría A primero, quizás seguido por B y luego C.

En un escenario de porcentaje puro, la orden es C> A> B. (incorrecto) En un escenario de recuento de votos puro, el orden es B> A> C. (incorrecto)

Tengo una idea para un algoritmo algo "híbrido" basado en la confianza del sistema en una partitura, tal vez algo en la línea de:

// (if totalvotes > 0, else score = 0) 
score = 1 - ((downvotes+1/totalvotes+1) * sqrt(1/totalvotes)) 

sin embargo, yo estaba esperando a pedir a la comunidad si hay algoritmos muy bien definidos ya por ahí que simplemente no sé, antes de que yo Sentarme alrededor de ajustar mi algoritmo desde ahora hasta la puesta del sol.

También tengo datos de fecha para cada voto; sin embargo, el contenido del sitio no es muy sensible al tiempo, así que no me importa ordenar por "lo que está de moda".

+2

[posible duplicado] (http://stackoverflow.com/questions/9169143/finding-most-liked-item-of-a-user-with-rating-values)? Al menos la respuesta es relevante. – Anthales

+0

pregunta brillante, debo decir :) –

Respuesta

0

Sé que no responde a su pregunta, pero acabo de pasar 3 minutos para la diversión tratando de encontrar alguna fórmula y ... acaba de comprobarlo :) Una columna es upvotes y B es downvotes :)

=(LN((A1+1)/(A1+B1+1))+1)*LN(A1) 

5 3  0.956866995 
4 1  1.133543015 
5 4  0.787295787 
1 0  0 
6 4  0.981910844 
2 8  -0.207447157 
6 5  0.826007385 
3 3  0.483811507 
4 0  1.386294361 
5 0  1.609437912 
6 1  1.552503332 
5 2  1.146431478 
100 100  -3.020151034 
10 10  0.813671022 
2

La clasificación por el promedio de votos no es muy buena.

Al equilibrar la proporción de calificaciones positivas con la incertidumbre de un pequeño número de observaciones como se explica en este artículo, logrará una representación mucho mejor de sus puntajes.

El siguiente artículo explica cómo no cometer el mismo error que muchos sitios web populares. (Amazon, etc. urbandictionary)

http://evanmiller.org/how-not-to-sort-by-average-rating.html

Espero que esto ayude!

+1

¡El enlace increíble es asombroso! Felicitaciones por ti, señor! –

Cuestiones relacionadas