2010-12-02 10 views
8

Tengo un sitio web donde los usuarios pueden elementos "Me gusta" y "No me gusta".Algoritmos de puntuación: cómo convertir el número &% de "Me gusta" y "No me gusta" en un solo puntaje?

Por lo tanto, para cada elemento, tengo datos como el número total de "Me gusta" y el% de votos totales que son "Me gusta".

Me gustaría calcular un solo puntaje para mostrar a los usuarios. Usar solo% no funcionaría porque aunque item_A podría tener un 90% de "Me gusta" mientras que item_B podría tener un 80% de "Me gusta", item_B aún debería estar delante del item_A si item_B tiene 10,000 de votos totales mientras que item_A solo tiene 1,000 votos totales.

Del mismo modo, el uso de "Me gusta" solo no funcionaría porque aunque un elemento tenga una gran cantidad de "Me gusta", no debería ser muy alto si el% de "Me gusta" es bajo.

¿Cuál sería un buen algoritmo para crear una sola puntuación de los datos anteriores?

Lo ideal es que el puntaje sea "significativo" o "normalizado" de alguna manera. Por ejemplo, si voy a IMDB y veo que una película tiene una puntuación de 8/10, inmediatamente sabría que es una buena película. Por otro lado, si veo un puntaje de 1,370, no necesariamente sabría si eso es bueno o malo.

+1

Un algoritmo que está tratando de describir no es tan fácil de implementar :) En la primera etapa del proyecto, yo simplemente poner en práctica el simple 'algoritmo de porcentaje' y mantener una estrecha ojo al resultado. Es bastante simple (conocer algunos conceptos básicos de programación) desarrollar el algoritmo en consecuencia. Creo que no hay una respuesta uniforme a su pregunta (desafortunadamente) – LambergaR

+0

http://en.wikipedia.org/wiki/Bayesian_average – user434507

Respuesta

8

Hay un par de artículos muy buenos sobre cómo Reddit hace este tipo de clasificación here y here. En pocas palabras, clasifique las publicaciones por el extremo inferior del intervalo de confianza del 90% de sus puntajes. Las entradas con menos votos tienen intervalos de confianza más grandes, y por lo tanto, tienden a clasificarse por debajo de las entradas con más votos pero el mismo promedio.

+0

Pero entonces el problema es cómo calcular el intervalo de confianza. ¿Utiliza la desviación estándar de la muestra, o la desviación estándar de todo el conjunto de votos, o algún tipo de su promedio ponderado, o un número arbitrario? ¿Cuál es el intervalo de confianza del puntaje de un elemento que tiene 10 votos "sí" y 0 "no"? – user434507

+0

@ user434507 La fórmula para calcular el intervalo de confianza está en el artículo. –

1

Quizás pueda usar una estadística basada en porcentajes, ¿pero luego puede colorearla según el volumen? p.ej. rojo/naranja/amarillo para el mayor número de interés, azul/verde/púrpura para el interés más bajo, y luego permitir al usuario ordenar de acuerdo con el porcentaje o el color.

8

Bayesian Rating es el complemento perfecto para lo que quiere hacer. Cuida menos votos pero mayor problema de calificación.

Calificación bayesiana está utilizando el promedio bayesiano. Este es un término matemático que calcula una calificación de un artículo basado en la "credibilidad" de los votos. Cuanto mayor sea la certeza basada en el número de votos, más se aproxima la calificación bayesiana a la calificación simple, no ponderada. Cuando hay muy pocos votos, la calificación bayesiana de un artículo será más cercana a la calificación promedio de todos los artículos.

Utilice esta ecuación:

br = ((avg_num_votes * avg_rating) + (this_num_votes * this_rating))/(avg_num_votes + this_num_votes)

Leyenda:

avg_num_votes: El número medio de votos de todos los elementos que tienen núm_votos> 0
avg_rating: La calificación promedio de cada elemento (de nuevo, de aquellos que tienen num_votes> 0)
this_num_votes: número de votos para este artículo
this_rating: la calificación de este artículo

Nota: avg_num_votes se usa como el peso "mágico" en esta fórmula. Cuanto más alto sea este valor, más votos se necesitan para influir en el valor de calificación bayesiano.

Puede leer más here