2010-04-04 7 views
3

Les mathématiques ne sont pas mon point fort et je suis à court d'idées ici. Fondamentalement, tout ce dont j'ai besoin est une formule simple qui donnera une note pondérée sur une échelle de 1 à 5. S'il y a très peu de votes, ils ont moins d'influence et la cote est plus moyenne (dans ce cas Je veux que ce soit 3, pas la moyenne de toutes les autres évaluations).Moyenne pondérée et notes

J'ai essayé quelques implémentations bayésiennes différentes mais celles-ci n'ont pas fonctionné. Je crois que la représentation graphique Je cherche a pu montrer que:

 ___ 
    /
___/ 

Vive

+1

Je pense que cette question serait un bon ajustement pour http://mathoverflow.net/ –

+0

Vous pourriez vouloir essayer le forum de prix de Netflix aussi. – dan04

+0

Je ne voudrais pas, sauf une réponse sur mathoverflow.net, c'est un forum scientifique. –

Répondre

4

Je ferais ce de cette façon

1*num(1) + 2*num(2) + 3*num(3) + 4*num(4) + 5*num(5) + A*3 
----------------------------------------------------------- 
     num(1) + num(2) + num(3) + num(4) + num(5) + A 

Où num (i) est le nombre de votes pour i.
A est un paramètre. Je ne peux pas vous en dire la valeur exacte. Cela dépend de ce que vous voulez dire par "quelques votes". En général, la valeur élevée de A signifie que vous avez besoin de plusieurs votes pour obtenir une moyenne différente de 3, une valeur faible de A signifie que vous avez besoin de quelques votes pour obtenir une valeur différente de 3.

Si vous considérez 5 comme "quelques votes" peut prendre A = 5.

Dans cette solution, je suppose que chaque produit commence par A votes pour 3 au lieu de pas de votes.

Espérons que ça aide.

+0

Exactement ce que j'étais après. Merci beaucoup! – Danten

1
(sum(ratings)/number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10) 

La première partie est la note moyenne non normalisée. La deuxième partie augmentera graduellement la cote vers 5 alors que le nombre d'évaluations individuelles passe à 10. La question n'est pas assez claire pour que je puisse fournir une meilleure réponse, mais je crois que la formule ci-dessus pourrait être quelque chose que vous pouvez commencer et adapter comme vous allez. Il va sans dire que vous devez vérifier s'il y a des cotes (ne pas diviser par zéro).