Hallo
Ich arbeite momentan mit meinem Team an einem kostenlosen Künstler Support Netzwerk. Wir werden Künstlern aus den Richtungen Elektronik, HipHop, RnB und Reggae kostenlosen Speicherplatz für deren Audio Dateien zur Verfügung stellen.
User können die Werke kostenlos runterladen, bewerten, Kommentare schreiben und noch vieles mehr.
Wir wollen auch verschiedene Charts anbieten für die jeweiligen Genres (Wochencharts, Monatscharts, usw)
Ich zerbreche mir nun schon seit Stunden den Kopf über eine vernünftige Berechnung aber ich komme einfach auf keinen grünen Zweig.
Folgende Faktoren sollen in die Charts einfliessen:
1) Das durchschnittliche Rating (1-5) der Zeitperiode (Wochencharts: letzte Woche, Monat: letzter Monat, usw) [wird bis auf 8 Nachkommastellen genau gespeichert)
2) Anzahl der Votes der Zeitperiode (Jeder Vote wird mit Zeitpunkt einzeln gespeichert, nur registrierte Mitglieder können abstimmen)
3) Anzahl downloads der Zeitperiode
Da die Anzahl der Downloads einfach zu manipulieren ist soll dieser Faktor die geringste Gewichtung erhalten.
Das Rating muss abhängig sein von der Anzahl der Votes.
Am besten kann man sich die Problematik an einem Beispiel verdeutlichen:
Das richtige Rating würde sein: #2, #1, #3
Bei einer Formel wie
P = x * Rating + y * Votes + z * Downloads / 3
kommt unweigerlich der als Sieger raus der am meisten Votes und Downloads hat.
Ein anderer Ansatz wäre sowas in der Richtung wie:
P = Rating * (1+(Votes/X)n) + (Downloads/Y)m)
aber auch diese Formel führt leider nicht zum Ergebnis.
Ne Überlegung wäre Wert, dass Rating evtl. als Potenz in die Formel einzubauen aber da stellen sich dann ähnliche Probleme
Ach ja was noch wichtig ist:
Da das nachher von Scripten berechnet wird muss es nicht unbedingt eine Formel sein. Ihr könnt auch gerne in 2 oder mehr Schritten zu ner Lösung kommen.
Ich hatte ursprünglich vor Scores zu verteilen.
Das beste Rating bekommt 100 Punkte
Das zweitbeste 99 usw.
Und dann mit den Scores rechnen.
Aber hat auch irgendwie nicht funktioniert.
Das Problem besteht in folgendem:
Je einfacher das System ist desto leichter ist es zu manipulieren.
Man könnte es sich einfach machen:
Bedingung um an der Chartsberechnung teilzunehmen: X Votes (zB 10)
Berechnung:
1) Avarage Rating
2) Bei gleichem Rating: Anzahl votes
3) Bei gleichem Rating und gleichen Votes: Anzahl Downloads
Dies würde aber dazu führen das ein Song der mit 10 Votes a 5 Rating auf Platz 1 landet, während ein Song mit 59 Votes a 5 Rating und einem Vote a 1 Rating auf Platz 2
Dies wiederum führt dazu, dass User anfangen, die Songs der anderen Künstler aus Berechnung schlecht zu bewerten, um höher in den Charts zu sein.
Ein weiteres Problem bei Einbeziehung von allen Votes wäre, dass Neueinsteiger fast keine Chanze hätten in die Charts zu kommen.
Nur die Votes des letzten Monats einzubinden würde das Problem des Betruges zwar minimieren, da ja jeder nur einmal abstimmen kann, aber bei unzureichendem Wachstum oder stagnierender Votebeteiligung würden die Charts zusammenbrechen, da einfach nicht genügend User voten (können).
Ist also alles nicht so einfach wie es aussieht.
Ich wäre für Ideen oder Lösungsvorschläge echt dankbar.
Mit freundlichen Grüßen
Michael S.