2009-06-15 18 views
9

Esta pregunta está más relacionada con la lógica que con cualquier lenguaje de programación. Si la pregunta no es apta para el foro, házmelo saber y borraré esto.¿Cómo calcular los puntajes?

Tengo que escribir una lógica para calcular los puntajes de los blogs de un sitio web de Premio del Blog. Un blog puede ser nominado para múltiples categorías de premios y es evaluado por pares o calificado por un jurado en una escala de -1 a 5 (-1 para indicar un blog que no les gusta). Ahora, un blog puede ser calificado por uno o más miembros del jurado. Un criterio al calcular el puntaje final de un blog es que si un blog es calificado positivamente por más personas, debería obtener más peso (y viceversa). Del mismo modo, un blog con una calificación de -1, incluso un miembro del jurado debería tener su puntaje afectado (-1 es una especie de Veto aquí). Por último, también quiero tener un puntaje adicional basado en el rango de Technorati del blog (para que el puntaje final se base en una combinación de clasificación de Jurados + clasificación de Technorati).

Ejemplo: Un blog está clasificado en la categoría A por un total de 6 miembros del jurado. 2 puntúalos a 3, 3 puntúa a 2 y 1 puntúa a 4 (solía calcular el puntaje como (2 * 3 + 3 * 2 + 1 * 4)/6 = 16/6 = 2.67 para obtener ponderación promedio, pero no estoy satisfecho con esto, principalmente porque no funciona bien cuando la calificación de un jurado es -1. Además, debo agregar los criterios de clasificación de la clasificación Technorati también).

¿Podría ayudarme a decidir la mejor forma de calcular los puntajes finales (manteniendo el mismo método de calificación que el que ahora no se puede cambiar)?

+0

Esta pregunta parece estar bien para SO. Está pidiendo el mejor algoritmo para asignar puntajes. – paxdiablo

+1

Pregunta interesante, +1 – Mattis

+0

¿por qué no usarías simplemente un 'if (los puntajes incluyen -1) {eliminar de la competencia}' antes del puntaje? Eso es más o menos lo que significa un veto, ¿verdad? – naught101

Respuesta

0

puede trabajar internamente con puntajes de 0 a 6. Simplemente haga un cambio por uno, calcule el puntaje y desplace hacia atrás. Supongo que el -1 tiene algún efecto perturbador en su cálculo.

5

Si desea ponderar más el efecto de una calificación -1, use el mismo cálculo de puntaje promedio pero sustituya -10 cada vez que vea -1. Puede elegir un valor distinto de -10 si no desea que una calificación negativa tenga un peso tan alto.

+0

Gracias Greg.¿Qué sugieres sobre el ranking de Technorati? ¿Y está satisfecho con la forma en que se calculó el promedio ponderado? – dchucks

+0

No ha especificado qué es la clasificación de Technorati. ¿También es un valor entre -1 y 5? ¿O es otra cosa? ¿Qué tan fuertemente quieres compararlo con las clasificaciones de tus jurados? Estos son los tipos de preguntas que deberá responder para determinar cómo usar esa clasificación también. –

+0

Greg, ranking de Technorati es un puntaje dado por Technorati.com a un sitio web basado en varios factores, como el tráfico, Linkback, etc. Disminuya el valor del ranking, mejor es el sitio. Entonces, un sitio con Technorati ranking 3000 está mejor que uno con un ranking 40000. – dchucks

4

Calcular una puntuación basada en los votos será bastante fácil. Agregar el rango de Technorati será la parte difícil.

Hice un script rápido que calcula algunos resultados sobre la base de este algoritmo

score = (vote_sum - (vetos * veto_weight))/number_of_votes 

que se pueden cambiar los parametros de URL para obtener diferentes valores

Hay una gran cantidad de lazos, así que tal vez usted podría utilizar technorati blog rango como un desempate

+0

Gracias a Galen por demostrarlo usando un script. – dchucks

+0

+1 para guión bonito :) – Mattis

4

Puede utilizar el límite inferior del intervalo de puntuación de Wilson para sus calificaciones.

Ver http://www.evanmiller.org/how-not-to-sort-by-average-rating.html para más detalles. Aunque, allí, se usa para el caso Bernoulli más simple.

Lo esencial es que si tiene muchas calificaciones, tiene un mayor grado de confianza en su puntaje. Luego puede combinar los puntajes de sus calificaciones locales y las calificaciones de Technorati, ponderando los puntajes por el número de votantes a nivel local y en Technorati.

En cuanto a querer un voto simple -1 para tener un alto impacto, simplemente vuelva a asignarle un gran valor negativo proporcional al impacto deseado antes de incluirlo en su fórmula de puntuación.

Cuestiones relacionadas