[PHP] Probleem met stem systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Hallo allemaal,

Ik ben bezig met een stem script voor foto's maar ik zit een beetje met het berekenen van de eind score.

Elke maand is er een wedstrijd voor de beste foto, in deze maand kan iedereen 1 foto toevoegen (ook nog tegen het einde van maand). Deze foto's worden allemaal beoordeeld met een cijfer 1 t/m 10.

Nou is het gemiddelde cijfer uitrekenen niet zo moeilijk maar er gaat iets niet helemaal eerlijk.

Stel; je upload een foto aan het begin van de maand, er wordt een heleboel op gestemd en jouw foto eindigd tegen het eind van de maand met het gemiddelde cijfer 7, nou upload iemand anders ook een foto maar doet dat pas ergens in het eind van die maand, er wordt maar 3 keer op gestemd maar met allemaal redelijk hoge cijfers en deze foto eindigd met het gemiddelde cijfer 8.

Dit is natuurlijk geen eerlijke eindstand want jouw foto met het cijfer 7 heeft mischien wel veel meer 8en en 9ens gehad maar door een aantal lage is hij iets lager uitgekomen.

Wat voor berekening moet ik hierop loslaten zodat er een eerlijke uitkomst is?

Ik heb uiteraard al even in de ronte gekeken maar alle scripts tellen alle cijfers bijelkaar op en delen dit door het aantal stemmen (gewoon het gemiddelde dus).

Wie kan er met mij meedenken en helpen met een berekening?

Thanx,
Danny.

Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Niet echt een PHP probleem denk ik.

Maar de oplossing zou ik zoeken in het stellen van een minimum aantal stemmen.
Als er minder dan 10 stemmen zijn doe je niet mee.

Nothing to see here


Acties:
  • 0 Henk 'm!

  • thisbeingme
  • Registratie: Oktober 2002
  • Laatst online: 06-05-2021
Nou, je kan natuurlijk zeggen dat alle foto's van tevoren moeten zijn ingezonden, dan bestaat dat probleem niet. Te laat? Dan doen ze toch volgende maand mee?

Of, optie #2 zou kunnen zijn door dan ook het aantal stemmen mee te nemen in de berekening op een of andere manier.
PHP:
1
2
3
4
5
$wegingAantalStemmen = 0.25;
$wegingCijfer = 0.75;

$aantalStemmen = $stemmen / $maxStemmen * 10;
$cijfer = $aantalStemmen * $wegingAantalStemmen + $cijfer * $wegingCijfer;

Untested, maar iets in die richting zou je kunnen doen :)

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

nevermind... snap je nu pas ;)

[ Voor 84% gewijzigd door iH8 op 03-06-2007 23:42 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
itsme schreef op zondag 03 juni 2007 @ 23:38:
Niet echt een PHP probleem denk ik.

Maar de oplossing zou ik zoeken in het stellen van een minimum aantal stemmen.
Als er minder dan 10 stemmen zijn doe je niet mee.
Klopt het is niet echt een php probleem maar ik schrijf alles in php dus heb er automatisch PHP neergezet.

Niet minder dan 10 stemmen .. hm .. het zou een voorwaarde kunnen zijn maar het verschil tussen 10 stemmen en 100den stemmen vind ik nog iets te groot. Mischien zou ik het in verschillende groepen moeten verdelen.

Toch hoop ik nog op een mooie berekening :)

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Geef een weging aan de hoeveelheid dagen dat hij is opgenomen in de listings?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • BèR
  • Registratie: Mei 2002
  • Laatst online: 20-11-2022
Elke dag het gemiddelde nemen van de totale stemmen op die dag en die dagen dan gemiddeld nemen aan het einde van de maand?

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Theoretisch gezien is die methode gewoon eerlijk toch?

Die foto waar maar 3 keer op is gestemd kan ook wel een 4, een 5 en een 7 krijgen terwijl eigenlijk veel hoger verdient. Het kan alle kanten op. Die foto waar al heel vaak op is gestemd heeft gewoon het cijfer wat hij verdient, uitgaande van de stelling "veel beoordelingen = een betrouwbare boordeling".

Het probleem is dat hoe minder beoordelingen er zijn, hoe minder waarde je aan die uitslag kan hechten. Maarja, wat doe je daar aan? Misschien moet je foto's waar nog niet veel beoordelingen op zijn gegeven mee laten gaan naar de volgende maand. Zomaar een idee. :)

Ik zou trouwens niet de gemiddelde score laten zien voordat iemand heeft gestemd, want dat kan de beoordeling beinvloeden. Toon het gemiddelde pas als de bezoeker zijn beoordeling heeft gegeven.
TA2 schreef op zondag 03 juni 2007 @ 23:42:
[...]

Klopt het is niet echt een php probleem maar ik schrijf alles in php dus heb er automatisch PHP neergezet.

Niet minder dan 10 stemmen .. hm .. het zou een voorwaarde kunnen zijn maar het verschil tussen 10 stemmen en 100den stemmen vind ik nog iets te groot. Mischien zou ik het in verschillende groepen moeten verdelen.
Hoeveel stemmen je als 'weinig' beoordeelt kun je nu nog niet zeggen denk ik. Dat hangt er vanaf hoeveel beoordelingen er gemiddeld per dag per foto worden gegeven.
Toch hoop ik nog op een mooie berekening :)
Tja, meer is geen berekening die er automatisch een 'eerlijke' uitslag van kan maken. Je weet immers niet hoe hoog de beoordelingen zouden zijn als er meer mensen zouden stemmen.

[ Voor 33% gewijzigd door Bergen op 03-06-2007 23:49 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Misschien is het slimmer dat bezoekers foto's opgeven voor de volgende maand i.p.v. de huidige, dan lopen alle foto's even lang en is de kans dat ze een stem krijgen gelijk.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Alex) schreef op zondag 03 juni 2007 @ 23:43:
Geef een weging aan de hoeveelheid dagen dat hij is opgenomen in de listings?
Dat is mischien wel een goeie, ik ga eens kijken of ik dit in mn berekening kan verwerken.

Ik ga sowieso doen dat mensen maar tot de 20e van de maand de foto in kunnen zenden.

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
BèR schreef op zondag 03 juni 2007 @ 23:43:
Elke dag het gemiddelde nemen van de totale stemmen op die dag en die dagen dan gemiddeld nemen aan het einde van de maand?
En dan de foto's die later zijn gekomen een 0 geven voor elke dag dat ze er nog niet bij zaten?
Anders kom je namelijk op het zelfde uit volgensmij.

Acties:
  • 0 Henk 'm!

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
Het idee van Alex is wel goed. Dan zul je wellicht wel de volgorde van de foto's nog moeten randomizen bij het tonen ervan. Mensen zijn niet echt genegen om door te klikken naar volgende pagina's.

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Nou .. iedereen bedankt voor het mee denken.

Er zitten wel een aantal bruikbare tips bij om eens over verder te brainen! .. maar nu even niet wat m'n bed roept :*)

Grtz Danny.

PS. mocht er nog iemand zijn met meer bruikbare tips .. ze zijn welkom.

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Fuzzillogic schreef op zondag 03 juni 2007 @ 23:56:
Het idee van Alex is wel goed. Dan zul je wellicht wel de volgorde van de foto's nog moeten randomizen bij het tonen ervan. Mensen zijn niet echt genegen om door te klikken naar volgende pagina's.
Ze krijgen random een foto die ze kunnen beoordelen en daarbij zien ze voor hun beoordeling niet het gemiddelde cijfer.

Acties:
  • 0 Henk 'm!

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 20:05
Misschien dat dit je oplossing is? Bayesiaans raten (zelf geen expert hierin overigens... :))

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Blackbird-ce schreef op maandag 04 juni 2007 @ 13:01:
Misschien dat dit je oplossing is? Bayesiaans raten (zelf geen expert hierin overigens... :))
wow .. dit is echt precies wat ik bedoel :*)

Thanx Blackbird-ce !!

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Om even in te gaan op het "Bayesiaans raten" ... ik heb zijn berekening iets aangepast.

Er worden namelijk cijfers gegeven van 1 t/m 10 en als ik de bayesiaanse berekening gebruik komen alle uitslagen ongeveer op een cijfer 5 uit alleen de ene iets hoger en de andere iets lager.

Dit is de bayesiaanse berekening:
$rating = ( ( $avg_num_votes * $avg_rating) + ( $this_num_votes * $this_rating ) ) / ( $avg_num_votes + $this_num_votes )

En dit is mijn berekening geworden:
$rating = ( ( $this_num_votes * $this_rating ) * 2 ) / ( $avg_num_votes + $this_num_votes )

Ik pak dus niet de average votes en rating mee omdat die de cijfers teveel naar het algemene gemiddelde trekken. Maar door het gemiddeld aantal stemmen wel mee te pakken daalt het cijfer van degene die nog maar een paar stemmen gehad heeft zodat de andere met meer stemmen een eerlijk cijfer krijgen.

Grtz Danny.

Acties:
  • 0 Henk 'm!

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 20:05
TA2 schreef op woensdag 06 juni 2007 @ 11:57:
[...]
wow .. dit is echt precies wat ik bedoel :*)
Lang leve google ;-)

[ Voor 7% gewijzigd door Blackbird-ce op 07-06-2007 12:38 ]

Pagina: 1