Question

J'ai quelques pages sur un site Web et je dois créer un ordre basé sur « popularité » / « activité »

Les paramètres que je dois utiliser sont:

  • vue sur la page
  • commentaires sur la page (il y a une forme au fond, où les utilisations peuvent faire des commentaires)
  • clics effectués sur l'icône « comme il »

Y a-t-il des normes pour quelle formule de popularité serait? (Sinon opinions sont bonnes aussi)

(d'abord je pensais de vues + 10 + 10 * commentaires * likeit)

Était-ce utile?

La solution

Il n'y a pas de formule standard pour ce (comment pourrait-il être?)

Qu'est-ce que vous avez ressemble à une solution assez normale, et probablement bien fonctionner. Bien sûr, vous devez jouer avec les 10 de trouver des valeurs qui correspondent à vos besoins.

En fonction de vos besoins, vous pouvez également ajouter un facteur de temps (à savoir -X points par semaine) de sorte que les anciennes pages deviennent moins populaires. Sinon, vous pouvez modifier vos « pages vues » à « pages vues au cours du dernier mois ». Encore une fois, cela dépend de vos besoins, il peut ne pas être pertinent.

Autres conseils

Vous pouvez faire quelque chose comme ce que YouTube fait - ont juste triés par le plus grand compter par catégorie. Par exemple - les plus vus, les plus commentés, plus aimé. Dans chaque catégorie une page différente pourrait venir d'abord, bien que le classement pourrait probablement être mis en corrélation. Si vous avez seulement besoin d'un classement unique, vous devrez alors trouver une formule quelconque, dérivé de préférence de façon empirique en analysant un tas de données que vous avez déjà et de décider ce qui doit être calculé comme bon / mauvais, et de travailler en arrière pour adapter une équation qui correspond à votre décision.

Vous pouvez même tenter une approche d'apprentissage de la machine à « apprendre » ce qu'est une bonne pondération est pour combiner chacun de ces nombres comme dans votre formule exemple. Le faire manuellement pourrait ne pas être aussi trop dur.

J'utilise,

(C*comments + L*likeit)*100/views

où vous devez utiliser C et L en fonction de la valeur que vous accordez chaque attribut. J'utilise C = 1 et L = 1.

Cela vous donne le pourcentage de vues qui ont généré une action positive, ce qui rend les éléments avec pourcentage plus élevé le plus « populaire ». J'aime parce qu'il permet des articles les plus récents à être très populaire au début, montrant d'abord et obtenir plus de points de vue et de devenir ainsi moins populaire (ou plus) jusqu'à la stabilisation.

Quoi qu'il en soit, J'espère que ça aide. PS:. De cela fonctionnerait tout de même sans le « * 100 » mais j'aime pourcentages

En fait, il y a une meilleure façon acceptée pour Calculation:
http://www.evanmiller.org/how- pas à trier par moyenne rating.html

Vous devrez peut-être combiner « aime » et « » commentaires en un seul score, attribuant à votre propre facteur de pondération à chacun, avant de le brancher dans la formule que la valeur « vote positif ».

à partir du lien ci-dessus:

  

Score = Limite inférieure de Wilson marquer un intervalle de confiance pour une   paramètre Bernoulli

     

Nous devons équilibrer la proportion des avis positifs avec   l'incertitude d'un petit nombre d'observations. Heureusement, la   mathématiques pour cela a été élaboré en 1927 par Edwin B. Wilson. Ce que nous voulons   à poser est la suivante: Compte tenu des évaluations que j'ai, il y a une probabilité de 95% que la   fraction « réelle » des avis positifs est au moins quoi? Wilson donne la   répondre. Considérant que d'avis positifs et négatifs (à savoir pas   5 étoiles échelle), la limite inférieure de la proportion des avis positifs   est donné par:    entrer la description d'image ici

     

(Utiliser moins où il est dit plus / moins pour calculer la limite inférieure.)   Ici est le observé fraction des avis positifs, zα/2 est le   (1-α/2) quantile de la distribution normale, et n est le   nombre total d'évaluations. La même formule mis en oeuvre dans Ruby:

require 'statistics2'

def ci_lower_bound(pos, n, confidence)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-(1-confidence)/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
  

pos est le nombre d'avis positifs, n est le nombre total de   notes, et la confiance fait référence au niveau de confiance statistique:   prendre 0,95 pour avoir une chance de 95% que votre minorant est correcte, 0,975   pour avoir une chance de 97,5%, etc. Le score z dans cette fonction ne   changements, donc si vous ne disposez pas d'un logiciel de statistiques à portée de main ou si   la performance est un problème que vous pouvez toujours coder en dur une valeur ici pour z.   (Utilisez 1,96 pour un niveau de 0,95 de confiance).

La même formule que celle d'une requête SQL:

SELECT widget_id, ((positive + 1.9208) / (positive + negative) - 
                   1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / 
                          (positive + negative)) / (1 + 3.8416 / (positive + negative)) 
       AS ci_lower_bound FROM widgets WHERE positive + negative > 0 
       ORDER BY ci_lower_bound DESC;

Je valeur des commentaires plus que « comme il est si le contenu invite une discussion. Si c'est juste en indiquant les faits, une ration égale pour les commentaires et le nombre comme semble correct (bien que 10 est un peu trop, je pense ...)

ne se rend prendre en compte le temps passé en quelque sorte l'utilisateur? Vous pouvez l'utiliser, ainsi, comme un 2 second point de vue signifie moins d'une 3 minutes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top