Question

Pour le conseil étudiant cette année, je suis membre du comité « chansons », nous sélectionnons les chansons. Malheureusement, les enfants à la danse finissent toujours par haïssant quelques-uns des choix de chansons stupides. Je pensais que je pouvais le faire différent cette année. jeudi dernier, j'ai créé une simple application PHP afin que les enfants peuvent présenter des chansons dans la base de données, en fournissant un nom de chanson, artiste et genre (d'un menu déroulant). Je également une autre fonctionnalité de vote similaire à Reddit de. Cliquez sur un bouton upvote, vous avez upvoted la chanson, le nombre incrémenté upvote. Même avec downvotes.

Anywho, dans la base de données, j'ai trois bribes d'informations que je pensais que je pouvais utiliser pour évaluer ces chansons, upvotes, downvotes, et un horodatage. Pendant un certain temps, le rang a été créé en ayant simplement les chansons avec le nombre « vote » supérieur au sommet. C'est, plus upvotes, moins downvotes (upvotes - downvotes) seraient en haut de la liste. Cela a fonctionné, pendant un certain temps, mais il y avait environ 75 chansons sur la liste par dimanche, et les chansons qui ont été présentées en premier étaient tout simplement au sommet de la liste.

Dimanche, j'ai changé l'algorithme de rang (upvotes - downvotes) / (HorodatageActuel - CreationTimestamp), qui est, le décompte des voix plus élevé dans le moins de temps, plus la chanson serait sur la liste. Cela fonctionne, mieux, mais toujours pas comment je l'aiment.

Qu'est-ce qui se passe maintenant, est que l'instant une chanson est créée et upvoted à un vote compte 1, il finit par en haut de la liste, quelque part. Chansons qui ont vote compte dans les négatifs ne sont pas considérés souvent parce que les enfants ne défilent généralement pas vers le bas.

Je suppose que je pourrais trier les données de sorte que les chansons inférieures apparaissent en haut, afin que les gens sont obligés de voir les chansons inférieures. Honnêtement, je ne l'ai jamais eu à travailler sur un algorithme de « popularité » avant, donc, quelles sont vos pensées?

Le site est http://www.songs.taphappysoftware.com - Je ne sais pas si Je devrais mettre ça ici ou non, peut causer des chansons indésirables à la danse: 0

Était-ce utile?

La solution

C'est une très bonne question. Il y a quelques questions similaires qui ont été posées ici.

Cet article est probablement une bonne endroit pour commencer. Apparemment upvotes moins downvotes est une mauvaise façon de le faire. La meilleure façon est d'utiliser mathématiques compliqué pour attribuer un score à chacun et à trier par cela.

Voici une fonction de score à Ruby de l'article:

require 'statistics2'

def ci_lower_bound(pos, n, power)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-power/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 de réponses positives   note, n est le nombre total de   notes, et power fait référence à la   puissance statistique: choisir 0,10 à un   95% de chances que votre est lié plus bas   corriger, 0,05 pour avoir une chance de 97,5%,   etc.

En tant que chose d'utilisabilité, je trier les données par le score, mais je ne montrerait pas le score à l'utilisateur. Je ne montrer que le nombre de upvotes et downvotes.

Autres conseils

Comment sur le tri des chansons en affichant le temps ou le nombre de votes (négatifs + positifs)? Si votre objectif est de donner à chaque chanson une attention égale, cela semble assez bon.

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