2009-06-15 23 views
9

Cette question est plus liée à la logique que n'importe quel langage de programmation. Si la question n'est pas pertinente pour le forum, veuillez me le faire savoir et je le supprimerai.Comment calculer les scores?

Je dois écrire une logique pour calculer les scores pour les blogs pour un site Web Blog Award. Un blog peut être nominé pour plusieurs catégories de prix et est évalué par un jury sur une échelle de -1 à 5 (-1 pour indiquer un blog qu'il n'aime pas du tout). Maintenant, un blog peut être évalué par un ou plusieurs jurés. Un critère lors du calcul du score final pour un blog est que si un blog est évalué positivement par plus de personnes, il devrait obtenir plus de poids (et vice versa). De même, un blog noté -1 même par un juré devrait avoir son score affecté (-1 est une sorte de veto ici). Enfin, je souhaite également avoir un score supplémentaire basé sur le classement Technorati du blog (de sorte que le score final soit basé sur un mélange de notation Juror + classement Technorati). Exemple: Un blog est classé dans la catégorie A par 6 jurés au total. 2 l'évaluent à 3, 3 l'évaluent à 2 et 1 l'évaluent à 4 (j'ai utilisé pour calculer le score comme (2 * 3 + 3 * 2 + 1 * 4)/6 = 16/6 = 2.67 pour être pondéré moyenne mais je ne suis pas satisfait, surtout parce que ça ne marche pas bien quand une note de Juror est de 1. De plus, j'ai besoin d'ajouter les critères de classement de Technorati aussi).

Pourriez-vous m'aider à décider de la meilleure façon de calculer les scores finaux (en gardant la même méthode de notation que ci-dessus car elle ne peut pas être changée maintenant)?

+0

Cette question semble être bonne pour SO. Vous demandez le meilleur algorithme pour attribuer des scores. – paxdiablo

+1

Question intéressante, +1 – Mattis

+0

pourquoi ne pas utiliser un 'if (scores include -1) {retirer de la compétition}' avant la notation? C'est plus ou moins ce que veut dire un veto, n'est-ce pas? – naught101

Répondre

0

vous pouvez travailler en interne avec des scores de 0 à 6. Il suffit de faire un décalage de un, calculer le score et revenir en arrière. Je suppose que le -1 a un effet perturbateur sur votre calcul.

5

Si vous voulez pondérer plus fortement l'effet d'une cote -1, utilisez le même calcul de score moyen, mais remplacez -10 chaque fois que vous voyez -1. Vous pouvez choisir une valeur autre que -10 si vous ne voulez pas que la note négative soit aussi forte.

+0

Merci Greg.Que suggérez-vous sur le classement Technorati? Et êtes-vous satisfait de la manière dont la moyenne pondérée était calculée? – dchucks

+0

Vous n'avez pas précisé le classement Technorati. Est-ce aussi une valeur entre -1 et 5? Ou s'agit-il d'autre chose? A quel point voulez-vous le mettre en balance avec le classement de vos jurés? Ce sont les types de questions auxquelles vous devrez répondre pour déterminer comment utiliser ce classement aussi. –

+0

Greg, Technorati classement est un score donné par Technorati.com à un site Web basé sur divers facteurs tels que le trafic, Linkback, etc. Diminuer la valeur de classement, mieux c'est le site. Ainsi, un site avec Technorati classement 3000 est mieux loti qu'un avec un classement 40000. – dchucks

4

Le calcul d'un score basé sur les votes sera plutôt facile. L'ajout du rang technorati sera la partie la plus délicate.

J'ai fait un script rapide qui calcule des scores basés sur cet algorithme

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

vous pouvez modifier les paramters URL pour obtenir différentes valeurs

Il y a beaucoup de liens, vous pourriez peut-être utiliser technorati blog classé en tant que bris d'égalité

+0

Merci Galen de l'avoir démontré en utilisant un script. – dchucks

+0

+1 pour joli script :) – Mattis

4

Vous pourriez envisager d'utiliser la limite inférieure de l'intervalle de score de Wilson pour vos évaluations. Pour plus de détails, voir . Bien, là, il est utilisé pour le cas plus simple de Bernoulli.

L'essentiel, c'est que si vous avez beaucoup d'évaluations, vous avez un plus haut degré de confiance dans votre score. Vous pouvez ensuite combiner les scores de vos notes locales et les notes Technorati, en pondérant les scores par le nombre d'électeurs localement et sur Technorati. En ce qui concerne le fait de vouloir qu'un seul vote -1 ait un impact élevé, il suffit de le remapper à une valeur négative importante proportionnelle à l'impact souhaité avant de l'introduire dans votre formule de notation.