2009-06-15 4 views
9

Diese Frage bezieht sich mehr auf Logik als auf jede Programmiersprache. Wenn die Frage nicht passend für das Forum ist, lass es mich wissen und ich werde das löschen.Wie berechnet man Partituren?

Ich muss eine Logik schreiben, um Punkte für Blogs für eine Blog Award-Website zu berechnen. Ein Blog kann für mehrere Preiskategorien nominiert sein und wird von einer Jury bewertet oder von einer Jury auf einer Skala von -1 bis 5 bewertet (-1, um auf einen Blog hinzuweisen, den er überhaupt nicht mag). Nun kann ein Blog von einem oder mehreren Juroren bewertet werden. Ein Kriterium beim Berechnen des Endergebnisses für einen Blog ist, dass wenn ein Blog von mehr Leuten positiv bewertet wird, er mehr Gewicht bekommen sollte (und umgekehrt). In ähnlicher Weise sollte ein Blog mit der Bewertung -1 sogar von einem Juror seine Punktzahl beeinflussen (-1 ist hier eine Art Veto). Schließlich möchte ich noch eine zusätzliche Punktzahl basierend auf dem Technorati Rang des Blogs haben (so dass das Endergebnis auf einer Mischung aus Juror Rating + Technorati Ranking basiert).

Beispiel: Ein Blog ist in der Kategorie A von insgesamt 6 Juroren bewertet. 2 bewerte es mit 3, 3 bewerte es mit 2 und 1 bewerte es mit 4 (ich habe den Punktestand als (2 * 3 + 3 * 2 + 1 * 4)/6 = 16/6 = 2,67 berechnet, um gewichtet zu werden Durchschnitt, aber ich bin nicht damit zufrieden, vor allem, weil es nicht gut funktioniert, wenn ein Juror-Rating -1 ist. Außerdem muss ich die Technorati Ranking-Ranking-Kriterien hinzufügen.

Können Sie mir helfen, den besten Weg zu finden, die endgültigen Ergebnisse zu berechnen (die Bewertungsmethode bleibt unverändert, da diese jetzt nicht geändert werden kann)?

+0

Diese Frage scheint für SO in Ordnung. Sie fragen nach dem "besten" Algorithmus, um Scores zuzuweisen. – paxdiablo

+1

Interessante Frage, +1 – Mattis

+0

warum würden Sie nicht einfach ein 'if (scores include -1) {remove von competition}' vor dem Scoring verwenden? Das ist mehr oder weniger was ein Veto bedeutet, oder? – naught101

Antwort

0

können Sie intern mit Noten von 0 bis 6 arbeiten. Machen Sie einfach eine Verschiebung um eins, berechnen Sie die Punktzahl und verschieben Sie zurück. Ich denke, das -1 hat einen störenden Effekt auf deine Berechnung.

5

Wenn Sie den Effekt einer -1-Bewertung stärker gewichten möchten, verwenden Sie die gleiche durchschnittliche Punktzahlberechnung, ersetzen Sie aber -10, wenn Sie -1 sehen. Sie können einen anderen Wert als -10 wählen, wenn Sie nicht möchten, dass eine negative Bewertung so stark gewichtet wird.

+0

Danke Greg.Was schlägst du zum Technorati-Ranking vor? Und sind Sie zufrieden, wie der gewichtete Durchschnitt berechnet wurde? – dchucks

+0

Sie haben nicht angegeben, was das Technorati-Ranking ist. Ist es auch ein Wert zwischen -1 und 5? Oder ist es etwas anderes? Wie stark willst du es gegen die Ranglisten deiner Juroren abwägen? Dies sind die Arten von Fragen, die Sie beantworten müssen, um zu bestimmen, wie Sie dieses Ranking auch verwenden. –

+0

Greg, Technorati-Ranking ist eine Punktzahl, die Technorati.com einer Website zuweist, die auf verschiedenen Faktoren wie Traffic, Linkback usw. basiert. Je niedriger der Rangwert, desto besser ist die Website. Eine Website mit Technorati-Ranking 3000 ist also besser dran als eins mit einem Ranking 40000. – dchucks

4

Die Berechnung einer Punktzahl basierend auf Stimmen wird ziemlich einfach sein. Hinzufügen der Technorati Rang wird der schwierige Teil sein.

machte ich eine schnelle Skript, das auf der Grundlage dieses Algorithmus

score = (vote_sum - (vetos * veto_weight))/number_of_votes 

Sie die URL Paramter ändern können auf verschiedene Werte

erhalten Es gibt eine Menge von Beziehungen, vielleicht könnten Sie ein paar Noten berechnet verwenden Technorati Blog-Rang als Tie-Breaker

+0

Dank Galen für das Demonstrieren mit einem Skript. – dchucks

+0

+1 für schönes Skript :) – Mattis

4

Sie könnten mit der unteren Grenze des Wilson-Score-Intervall für Ihre Bewertungen aussehen.

Weitere Details finden Sie unter http://www.evanmiller.org/how-not-to-sort-by-average-rating.html. Obwohl es dort für den einfacheren Bernoulli Fall verwendet wird.

Das Wesentliche ist, wenn Sie viele Bewertungen haben, haben Sie ein höheres Maß an Vertrauen in Ihre Bewertung. Sie können dann die Punktzahlen aus Ihren lokalen Bewertungen und den Technorati-Bewertungen kombinieren, indem Sie die Punktzahlen anhand der Anzahl der Wähler lokal und auf Technorati gewichten.

Wenn Sie wünschen, dass eine einzelne -1-Stimme eine hohe Wirkung hat, ordnen Sie sie einfach auf einen großen negativen Wert proportional zu Ihrer gewünschten Wirkung zu, bevor Sie sie in Ihre Bewertungsformel einspeisen.