Frage

Für Studentenrat in diesem Jahr, ich bin auf dem „Songs“ Komitee, wir die Songs auszuwählen. Leider landen die Kinder in den Tänzen immer einige der dummen Songauswahl zu hassen. Ich dachte, ich könnte es anders in diesem Jahr. Am vergangenen Donnerstag habe ich eine einfache PHP-Anwendung so dass die Kinder Lieder in die Datenbank und liefert einen Songtitel, Interpret und Genre (aus einem Drop-down) vorlegen könnte. Ich implementiert auch eine Bewertungsfunktion ähnlich wie Reddit ist. Klicken Sie auf eine Schaltfläche upvote, haben Sie den Song upvoted, erhöht die upvote zählen. Das Gleiche gilt für downvotes.

Anywho, in der Datenbank, ich habe drei Leckerbissen der Informationen, die ich dachte, ich könnte diese Songs zu bewerten, upvotes, downvotes und einen Zeitstempel. Für eine Weile wurde der Rang, indem Sie einfach mit den Songs erstellt mit dem höheren „Abstimmung“ count an der Spitze. Das heißt, die mehr upvotes, weniger downvotes (upvotes - downvotes) an der Spitze der Liste sein würde. Das funktionierte für eine Weile, aber es gab etwa 75 Songs auf der Liste von Sonntag, und die Lieder, die ersten waren, einfach an der Spitze der Liste vorgelegt wurden.

Sonntag, änderte es den Rang Algorithmus (upvotes - downvotes) / (CurrentTimestamp - CreationTimestamp), das heißt, je höher die Stimmenauszählung in der geringeren Menge an Zeit, desto höher würde der Song auf der Liste sein. Das funktioniert besser, aber immer noch nicht, wie ich es möchte.

Was jetzt passiert, ist, dass der Augenblick ein Song erstellt und upvoted auf eine Stimmenauszählung von 1, es endet an der Spitze der Liste irgendwo oben. Songs, die Stimme zählt in den Negativ haben, werden nicht oft gesehen, weil Kinder in der Regel nicht nach unten scrollen.

Ich glaube, ich könnte die Daten sortieren, so dass die unteren Songs an der Spitze erscheinen, damit die Menschen gezwungen sind, die unteren Songs zu sehen. Ehrlich gesagt, ich war noch nie in der Arbeit an einem „Popularität“ Algorithmus hatte, ja, was sind Ihre Gedanken?

Website unter http://www.songs.taphappysoftware.com - ich weiß nicht, ob ich sollte dies hier setzen oder nicht, könnten einige unerwünschte Songs beim Tanz verursachen: 0

War es hilfreich?

Lösung

Das ist eine sehr gute Frage. Es gibt ein paar ähnlichen Fragen, die hier gestellt werden.

diesem Artikel wahrscheinlich eine gute ist Ort zu starten. Offenbar upvotes minus downvotes ist ein schlechter Weg, es zu tun. Der bessere Weg ist komplizierte Mathematik verwenden eine Punktzahl zu jedem zuweisen und sortiert nach diesen.

Hier ist eine Bewertungsfunktion in Ruby aus dem Artikel:

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 ist die Zahl der positiven Bewertung, n ist die Gesamtzahl der Bewertungen und power bezieht sich auf die statistische Aussagekraft: pick 0,10 a haben 95% Chance, dass Ihre untere Grenze korrigieren, 0,05 eine 97,5% Chance zu haben, etc.

Als Usability Sache, würde ich die Daten durch die Partitur sortieren, aber ich würde die Partitur für den Benutzer nicht zeigen. Ich würde zeigen, nur die Anzahl des upvotes und downvotes.

Andere Tipps

Wie wäre es Songs durch die Veröffentlichung Zeit oder die Anzahl der Stimmen (negative + positiv) Sortierung? Wenn Ihr Ziel ist es, jedem Lied der gleiche Aufmerksamkeit, das klingt gut genug, um zu geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top