2010-07-01 19 views
9

J'ai un système où les gens peuvent voter en votant ou en bas d'un article et je veux afficher les résultats de cela comme un classement 5 étoiles.Comment implémenter l'algorithme moyen bayésien pour un système de notation binaire

J'ai essayé d'utiliser l'algorithme de notation bayésienne expliqué here et here sans succès.

Par exemple: J'ai trois articles (A, B et C) dans ma base de données:

A = 500 UP et 500 vers le bas votes B = 0 UP et 1000 vers le bas votes C = 0 UP et 1000 vers le bas votes

Comment puis-je calculer la note moyenne bayésienne pour chaque article afin qu'il ait un score sur une échelle de 1 à 5?

+0

duplication possible de [Quel est le meilleur algorithme pour calculer l'élément le plus marqué?] (Http://stackoverflow.com/questions/2134504/what-is-the-best-algorithm-to-calculate-the-most -scored-item) –

Répondre

3

algèbre simple:

AvgVotes = Somme des votes/Somme de tous les éléments

AvgRating = Somme jusqu'à votes pour tous les articles * 5/Somme de tous les votes

CurVotes = Nombre de votes sur le point actuel

CurRating = Somme des votes sur le point des cours * 5/le nombre de votes sur le point actuel

TotalVotes = Somme des tous les votes + Somme des votes sur le point actuel

((* AvgVotes AvgRating) + (* CurVotes CurRating)) * 5/TotalVotes

donc brancher vos numéros d'évaluer le poids A ...

AvgVotes = 1000

AvgRating = 0 (Rappelez-vous ne pas inclure de numéros pour l'article que vous évaluez dans ce calcul)

CurVotes = 1000

CurRating = 500 * 5/1000 = 2,5

Total des votes = 2000 + 1000 = 3000

((1000 * 0) + (1000 * 2,5)) * 5/3000 = 4,166

J'ai oublié d'ajouter, ne pas inclure des éléments dans un calcul ou une somme ci-dessus qui n'ont pas de votes ou il va jeter les poids.

EDIT - Solution simplifiée:

Je constate qu'il ya une solution simplifiée au problème qui peut être effectuée. J'ai seulement démontré la forme de la main-d'œuvre pour la compréhension. L'algorithme comprimé ressemble:

Définitions:

SET = Tout ce qui ne sont pas liées à la cible d'évaluation actuelle où le vote est supérieur à zéro.

target = L'élément que vous tente actuellement d'évaluer

25 * (((Somme des Réglage- votes)/(Somme des éléments SET)) + (Somme TARGET up-voix))/(somme des CIBLES votes + somme des votes SET)

Encore une fois de brancher vos numéros d'évaluer 'A' pour la clarification et la preuve:

(25 * ((0/2) +500))/(1000+ 2000) = 4.166

+0

J'ai déplacé mon commentaire dans mon post édité ci-dessus pour une lecture plus facile. –