Toon posts:

Hoe maak ik een rangorde met honderden spelers?

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Wij hebben een interessant idee en wij zouden willen vragen wat jullie hier over vinden en hoe we dat op een goede wiskundige manier kunnen aanpakken.
Wij zouden graag een onderlinge rangorde van spelers willen maken aan de hand van wedstrijd uitslagen van een populaire pc shooter. Het spel is een typische shooter tussen 2 teams tot 8 versus 8 per match. Een match duurt gemiddeld 15 minuten.

We beschikken over veel data, de voornaamste zijn:
- Gejoinde en verlaten spelers
- playerA killed playerB met wapenX
Dit allen met een tijd ervoor.

Ook weten we de mapnaam en de host-player. Deze speler heeft altijd een goed merkbare verbindingsvoordeel en we weten nog niet hoe we zijn gegevens moeten verwerken (negeren of deels negeren).

Een voorbeeld hieronder:
Dit zijn uitslagen tussen onderlinge spelers met eventueel daarnaast nog het wapen dat ze gebruikten in 1 match.
code:
1
2
3
4
5
6
           match 1                                match 2
       p4    p5  p6 (rode team)     p1   p5   p6
p1  1-0 2-0 1-3             p4  1-1 2-1 2-2
p2  1-2 2-0 2-1             p2  3-0 4-1 5-3
p3  3-0 3-0 1-0             p7  2-0 0-3 3-1
(blauwe team)                       (blauwe team)



We hebben dus gegevens van meerdere matches. Het komt vaak voor dat spelers elkaar niet direct tegenkomen zowel in een match als in een host. Toch zouden wij voor hun een rangorde willen hebben zonder dat ze elkaar daadwerkelijk hebben gezien.

De gegevens worden elke dag ontvangen en willen we ook per dag verwerken, omdat er heel veel gegevens van heel veel spelers binnenkomen.

Het probleem is nu dus hoe maken we een onderlinge rangorde tussen deze spelers vooral als er dus meerdere verslagen komen met oneindig veel spelers. (bijvoorbeeld de vraag wie beter is p3 of p7, spelers die elkaar nooit in een match hebben ontmoet.)

We hopen hier een goede wiskundige methode voor te maken waarmee we uit al die wedstrijd uitslagen een zo betrouwbaar mogelijke rangorde kunnen maken en zijn benieuwd naar mogelijke oplossingen.

ps. We hopen dat dit in het juiste forum geplaatst is. Aangezien het om heel veel wedstrijduitslagen en personen gaat zijn er heel veel mogelijke manieren om daar een rangorde in te maken,ook er zijn heel veel situaties denkbaar. Wij hopen dat dit tot discussies leidt over de meerdere manieren hoe we dit aan kunnen pakken.

Verwijderd

Heel veel sporten gebruiken een rating systeem om de prestaties van sporters te vergelijken die nooit tegen elkaar gespeeld hebben. Zoek bijvoorbeeld maar eens op hoe tennis dat doet.

Een heel eenvoudig systeem zou kunnen zijn dat je elke speler laat beginnen met hetzelfde aantal punten, elk resultaat tussen 2 spelers ziet als een match en de winnaar wat punten van de verliezer laat afpakken. Bijvoorbeeld maximaal 20 procent voor een perfect resultaat (waarbij je een verschil in killscore van meer dan 10 als perfect definieert, dus 10/0, 11/1, etc) en lagere verschillen een deel van die 20 pct laat geven. En dan simpelweg sorteren op score, waarbij je evt elke speler die minder dan 10 matches gespeeld heeft, weglaat.

Maar jij wil iets dat wiskundig een beetje te verantwoorden is. Een mooie oplossing zou dan een rating-systeem kunnen zijn zoals het Elo-systeem in schaken of modernere opvolgers. Als je naar analogie van dat systeem probeert een eigen systeem te bouwen (dat is nodig omdat Elo alleen onderscheid maakt tussen winst, verlies en gelijkspel, terwijl jij uitslagen kan verwerken), moet het lukken een mooi systeem te bouwen.

[ Voor 59% gewijzigd door Verwijderd op 03-01-2007 10:03 ]


  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 18-03-2021
Weet je ook van speler Y welk wapen hij had toen hij omgelegd werd door speler X met wapen Z?
Dat is natuurlijk ook niet onbelangrijk.

Verder is het misschien nuttig rekening te houden met een 'allroundness' van een speler; Hoeveel kills heeft hij per wapentype? Is hij goed met ieder wapen, of bakt hij er alleen wat van met de rocket launcher?

Ik ben geheel voldaan, dank u wel!


Verwijderd

Topicstarter
Hier zijn zeker een paar goede ideeen maar er zijn altijd dingen die meespelen die weer voor problemen zorgen. Dat ELO systeem dat captain proton zei, ziet er op zich goed uit. Hier gaan we ons zeker in verdiepen. Het probleem dat we echter tegenkwamen is dat mensen selectief te werk kunnen gaan in tegen wie ze spelen. Je wil immers niet dat doordat je tegen goede mensen speelt je rank daalt. Misschien is er echter wel een goede variatie op te vinden waarin dit soort dingen meespelen. Als je dus verliest van iemand die heel goed is zou je rank misschien toch nog kunnen steigen aangezien je niet helemaal afgemaakt bent.
Verwijderd schreef op woensdag 03 januari 2007 @ 09:40:
Een heel eenvoudig systeem zou kunnen zijn dat je elke speler laat beginnen met hetzelfde aantal punten, elk resultaat tussen 2 spelers ziet als een match en de winnaar wat punten van de verliezer laat afpakken.
Hier denk ik dat het iets te eenvoudig is. Zo kan het bijvoorbeeld zijn dat mensen die vaak spelen of vaak in de resultaten voorkomen veel punten van veel spelers krijgen. Zij zijn dan misschien niet goed of beter dan andere spelers maar hebben wel meer punten omdat ze vaker spelen. Misschien dat dat er met een toevoeging ook wel eruit te halen is.
Mr_Atheist schreef op woensdag 03 januari 2007 @ 17:12:
Weet je ook van speler Y welk wapen hij had toen hij omgelegd werd door speler X met wapen Z?
Dat is natuurlijk ook niet onbelangrijk.

Verder is het misschien nuttig rekening te houden met een 'allroundness' van een speler; Hoeveel kills heeft hij per wapentype? Is hij goed met ieder wapen, of bakt hij er alleen wat van met de rocket launcher?
We weten wel met welk wapen speler Y speler X heeft gekilled, maar niet met welk wapen speler X is doodgegaan. We zouden dus zo'n tabel kunnen maken van hoevaak iemand met welk wapen vermoord.

Maar heeft dit eigenlijk wel nut? Ookal killed iemand alleen maar met een rocketlauncher dan is dat misschien de techniek die op dat moment het beste werkt/is. Andere spelers kunnen er ook voor kiezen dat wapen te gebruiken het is dus een onderdeel van skill dat je op de juiste momenten de juiste wapens gebruikt. Gebruik je de rocket launcher te pas en te onpas dan zul je vaker dood gaan en dus slechter scoren.

Hoewel ik het eens ben met het feit dat iemand die alleen rockets gebruikt niet goed kan zijn is het toch moeilijk om zulke dingen mee te laten wegen in een soort van ranking. Dan bepalen wij namelijk wat goed is en wat slecht. Wij geven dan waardes aan wapens, dus bepalen wij wat goed is. Dat is misschien ook niet eerlijk. Misschien dat we met gemiddelden er een wegingsfactor van kunnen maken, maar dan is de vraag dus nog of het wel een toevoeging is.

Verwijderd

Hier denk ik dat het iets te eenvoudig is. Zo kan het bijvoorbeeld zijn dat mensen die vaak spelen of vaak in de resultaten voorkomen veel punten van veel spelers krijgen. Zij zijn dan misschien niet goed of beter dan andere spelers maar hebben wel meer punten omdat ze vaker spelen. Misschien dat dat er met een toevoeging ook wel eruit te halen is.
Er komen door te spelen in zon systeem geen punten bij. Spelers die veel spelen, verliezen ook veel wedstrijden en verliezen dus ook vaak punten. Daardoor ontstaat er vanzelf wel een evenwicht waarbij frequente spelers geen voordeel hebben - behalve dan dat ze geoefend raken :)

[ Voor 4% gewijzigd door Verwijderd op 04-01-2007 00:39 ]


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 04 januari 2007 @ 00:38:
Er komen door te spelen in zon systeem geen punten bij. Spelers die veel spelen, verliezen ook veel wedstrijden en verliezen dus ook vaak punten.
Is het dan niet zo dat iemand dat iemand die beter dan gemiddelt is meer punten steelt als hij ook meer speelt?
Stel dat iemand bijvoorbeeld 6 van de 10 wedstrijden wint en hij speelt 100 wedstrijden dan zou hij er 200 punten op vooruit gaan (4 punten verloren, 6 punten gewonnen = 2 punten per wedstrijd keer 100). Iemand die nu echter misschien beter is minder wedstrijden heeft gespeelt zou nu minder kunnen krijgen.
Nu een betere speler, hij wint 8 van de 10 maar speelt maar 20 wedstrijden, hij gaat er nu 120 punten op vooruit. Dit is aanzienlijk minder terwijl hij toch beter zou moeten zijn en dus hoger geranked zou worden.

Hier komt ook nog eens bij dat er oneindig veel spelers zijn en niet iedereen zijn resultaten verstuurd. Als iemand dus in een room gaat spelen waar spelers komen die niet vaak spelen, steelt hij punten van mensen waar andere mensen geen punten van kunnen stelen. Omdat er dus constant spelers bijkomen en weggaan word het totaal aantal punten dus geweizigt. Iemand die veel verschillende spelers tegen komt en boven gemiddelt goed speelt en ook nog eens veel speelt zou dan dus op een onterecht hoge positie terecht komen.

Wat wel zo is in Captain Protons idee is dat er bij slechte spelers minder te halen valt dan bij goede spelers. Ze hebben immers minder punten en als je daar een percentage van neemt krijg je ook minder.

Het liefst zouden we er echter ook nog iets in willen hebben dat als je bijvoorbeeld gelijk speelt tegen iemand die extreem goed is (of niet zo heel erg hard verloren), je het toch best wel goed hebt gedaan voor je rank en misschien zou gaat stijgen. We willen namelijk niet in de hand werken dat mensen geen partijen aangaan die ze weten dat ze gaan verliezen. Bij zulke goede spelers valt immers niks te halen alleen maar punten te verliezen.
Eigenlijk zou het zo moeten zijn dat ook als je alleen maar tegen goeie mensen speelt je toch net zo veel kans hebt om een goede ranking te krijgen dan iemand die alle slechte of nieuwe spelers bij langs gaat.

Het probleem zit hem dus denk ik in het feit dat er constant spelers bijkomen en dat het aantal spelgegevens die van spelers binnenkomt heel erg kan verschillen. Van de een kunnen maar een paar wedstrijd uitslagen bekend zijn en van een ander juist weer heel veel. Ook kunnen mensen alleen maar tegen hele goeie spelers gespeelt hebben of juist op zoek zijn gegaan naar alle nieuwe en slechte spelers.

Verwijderd

Wat wel zo is in Captain Protons idee is dat er bij slechte spelers minder te halen valt dan bij goede spelers. Ze hebben immers minder punten en als je daar een percentage van neemt krijg je ook minder.
Daarom :) Op een gegeven moment zal een speler evenveel punten verliezen als dat hij er wint. In het voorbeeld van de speler die 6 van de 10 wedstrijden wint, deze zal een bovengemiddelde score hebben waardoor hij in die 6 gewonnen wedstrijden evenveel wint als hij in de 4 verloren wedstrijden verliest. En dan maakt het niet meer uit hoeveel wedstrijden hij speelt. Een puntenscoringssysteem moet dan alleen nog zo opgezet worden dat spelers die te weinig wedstrijden hebben gespeeld om in zo'n evenwicht te komen, niet in de lijst voorkomen (of met een duidelijk gemerkte voorlopige score).


Nu zullen er in zon eenvoudig systeem wel allerlei andere problemen optreden, met name ratinginflatie - doordat de grote doorstroom zit in slechte, incidentele spelers die met een hogere rating binnenkomen dan waar ze mee vertrekken. Deze punten komen bij de topspelers terecht. Vandaar dat er elegantere systemen zijn zoals het Elo systeem. Ook al kampt dat ook met een lichte vorm van ratinginflatie.

Wat betreft je opmerking over gelijke spelen, dat lijkt me niet zon probleem? Als iemand gelijk speelt (of bijna gelijk) tegen iemand met een veel hogere rating, kan je hem prima punten laten winnen. Daarvoor moet je een soort verwachtingswaarde uitrekenen van wat de score tussen 2 spelers gemiddeld zou moeten zijn gebaseerd op hun ratingverschil. En dan corrigeer je de rating met het verschil tussen de verwachtingswaarde en de werkelijke uitslag. Overigens zou ik in dat geval het wiel niet twee keer proberen uit te vinden, maar gewoon een systeem nemen dat allang ontwikkeld is. In de link naar wikipedia die ik gaf vind je daar voorbeelden van.

[ Voor 18% gewijzigd door Verwijderd op 04-01-2007 09:40 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
En wat nou als je gewoon een simpel systeem pakt als dat van 100 punten en dan punten eraf / erbij naar gelang winst / verlies met daarbij de volgende kanttekeningen :
1 : bij winst door beste speler krijgt de winnaar 0,2% van de punten * wegingsfactor van de punten van de verliezer. Verliezer verliest 0,2% van de punten * wegingsfactor van zijn eigen punten
2 : bij winst door slechtste speler krijgt de winnaar 0,2% van de punten * wegingsfactor van de punten van de winnaar. Verliezer verliest 0,2% van de punten * wegingsfactor wedstrijden van zijn eigen punten
3 : bij gelijkspel wint / verliest ( mag je zelf bepalen ) iedere speler 0,2% van de punten * wegingsfactor wedstrijden van de zwakste speler.
en dan wordt de wegingsfactor iets van 10 * aantal wedstrijden gespeeld door alle twee de spelers / aantal wedstrijden gespeeld door de winnaar.

Dan krijg je als een goede veel spelende speler wint van een slechte one-time speler dat de goede bij winst weinig punten krijgt, en bij verlies weinig punten verliest. Terwijl de slechte one-time veel punten kan winnen, maar weinig punten kan verliezen.

Volgens mij is het in dit scenario niet boeiend voor goede veelspelende om one-timers af te maken, je wint er niet veel punten mee maar je verliest er ook niet veel mee. Dus als je voor de lol een potje wil doen dan kan je dit zonder veel schade doen als goedspelende speler, als je verliest is het voor jou niet zo erg, maar je tegenspeler krijgt wel een zooi punten.

Volgens mij dan in ieder geval...

Verwijderd

Topicstarter
Gomez12 schreef op donderdag 04 januari 2007 @ 21:21:
En wat nou als je gewoon een simpel systeem pakt als dat van 100 punten en dan punten eraf / erbij naar gelang winst / verlies met daarbij de volgende kanttekeningen :
1 : bij winst door beste speler krijgt de winnaar 0,2% van de punten * wegingsfactor van de punten van de verliezer. Verliezer verliest 0,2% van de punten * wegingsfactor van zijn eigen punten
2 : bij winst door slechtste speler krijgt de winnaar 0,2% van de punten * wegingsfactor van de punten van de winnaar verliezer gok ik:P. Verliezer verliest 0,2% van de punten * wegingsfactor wedstrijden van zijn eigen punten
3 : bij gelijkspel wint / verliest ( mag je zelf bepalen ) iedere speler 0,2% van de punten * wegingsfactor wedstrijden van de zwakste speler.
en dan wordt de wegingsfactor iets van 10 * aantal wedstrijden gespeeld door alle twee de spelers / aantal wedstrijden gespeeld door de winnaar.
Het probleem bij ons echter en dat geldt ook voor Proton's idee is dat er een heel groot verschil kan zijn in het aantal wedstrijd verslagen dat word geregistreerd.

Stel er zijn 2 mensen: Speler1, 8 van de 10 wint en Speler2, wint er 9 van de 10.
Nu zijn er van Speler1 100 verslagen binnen en van Speler2 50.
Speler1 zou nu 60 punten krijgen (80win-20verlies) en Speler2 krijgt dan maar 40 punten. (45win-5 verlies)

Ondanks dat Speler2 beter was zou hij dus toch lager geranked worden. Dit probleem komt ook voor in het ELO systeem aangezien meer wedstrijdverslagen meer punten betekent.

Protons idee gaat dit wel een beetje tegen maar het probleem bij hem is ook nog dat als iemand 1 keer speelt en wint van iemand die 1000 wedstrijden heeft gespeelt hij ineens heel veel punten krijgt en daardoor misschien ineens heel hoog einigt.

Een van onze ideeen was bijvoorbeeld een soort waardering. Hierin krijg je een waardering/ranking tussen bijvoorbeeld 1,000 en 9,999 (zeg maar 1 & 10). Wij denken dat door iedereen in een soort schaalverdeling in te delen, het voordeel van veel geregistreerde wedstrijden weg gaat.
Hiernaast zaten we ook te denken aan een soort betrouwbaarheidsfactor, die aangeeft hoe betrouwbaar de waardering van iemand is. Aan de hand van hoeveel statistieken/wedstrijden zijn rank is gebaseerd bijvoorbeeld, zoals ook Gomez al aangaf. Het voordeel hiervan is dat je geen voordeel hebt door alleen veel te spelen. Je moet echt goed zijn en goed scoren tegen andere goede mensen.

Dit idee hebben we ook een beetje van de van het ELO systeem afgeleide, trueskill. Deze kijkt naar de winst en verliezen van spelers onderling voor xbox spellen. Hier werken ze ook met een rating en een betrouwbaarheidsfactor. Het nadeel van trueskill is echter dat ze geen onderscheid maken tussen bijvoorbeeld een 10-0 slachting of een 10-9 overwinning.

Wat wij nu dachten was om bijvoorbeeld elke kill als een losse game te zien. Een 10-0 zou dan 10 keer winst, 0 keer verlies betekenen terwijl een 10-9 10 win en 9 verlies is. Als je nu elk los gescoord punt in een spel ziet als een win of een verlies / 1 of 0 (zoals schaak bv) en dan een soort score berekend aan de hand van bijvoorbeeld het ELO systeem. Dan zou er onderscheid gemaakt worden tussen grote of kleine verliezen. Ook zal dan bij gelijkspel de hoogst gerankte speler erop achteruit gaan door de ELO berekening. 5 keer verliest de hoogste rank ELO punten en 5 keer wint hij ze. Netto gaat hij er nu toch op achteruit door de manier waarop ELO rekent

Wat we dus zouden eigenlijk willen is een systeem dat net als ELO een verwachtingspatroon hanteerd, onderscheid maakt tussen 10-0 of 10-9 en het liefst in een soort waardering op een schaal van bv 1 tot 10 word uitgedrukt. Met het liefst een indicatie om aan te geven hoe betrouwbaar de waardering is, aan de hand van het aantal wedstrijden. Hierbij is het voordeel van veel wedstrijden geregistreerd weg en kan ook zien hoe betrouwbaar de waarderingen zijn aan de hand van die betrouwbaarheidscijfers.

Dus hoe maken we zo'n goede waarderingsschaal? Of een andere methode natuurlijk waarbij het niet uitmaakt of je 100 keer beoordeeld bent of 10.

[ Voor 3% gewijzigd door Verwijderd op 05-01-2007 02:51 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
In de ELO rating wordt de rating na een wedstrijd aangepast volgens de formule: nieuw = oud + K*(verwachting - resultaat)

Misschien kan je daar van maken:
nieuw = oud + K*(verwachting - resultaat)*f(a,b)

Waarbij f(a,b) een functie is van de uitslag a punten tegen b punten. De functie moet misschien netjes tussen de 0 en 1 komen en dichter bij 0 komen bij een kleiner verschil tussen a en b.
Bijvoorbeeld:
f(a,b) = abs(a-b)/(a+b).
Waarbij abs(.) de absolute waarde is.

Bij een uitslag 10-9 zou f(10,9) = 1/19 zijn.
Bij een uitslag 10-0 zou f(10,0) = 1 zijn.

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Waarom registreer je niet elke 'kill' gewoon als een winst en elke keer dood als een verlies? Dat stop je in een elo systeem en je bent klaar. Bij elo heb je geen voordeel als je meer speelt. Je moet alleen een aantal keer spelen voor je op je uiteindelijke waarde bent.

Als je het helemaal goed wilt doen zorg je dat de wegingsfactor afhankelijk is van het aantal keren dat hij heeft gespeeld (zodat je rating eerst snel verandert en dan langzamer)

Verwijderd

Topicstarter
furby-killer schreef op zaterdag 06 januari 2007 @ 17:23:
Waarom registreer je niet elke 'kill' gewoon als een winst en elke keer dood als een verlies? Dat stop je in een elo systeem en je bent klaar. Bij elo heb je geen voordeel als je meer speelt. Je moet alleen een aantal keer spelen voor je op je uiteindelijke waarde bent.

Als je het helemaal goed wilt doen zorg je dat de wegingsfactor afhankelijk is van het aantal keren dat hij heeft gespeeld (zodat je rating eerst snel verandert en dan langzamer)
wikipedia:
verwachtA =1/{1 + 10^{(rankB - rankA)/400}}.

Similarly the expected score for Player B is

verwacht = 1/{1 + 10^{(rankA - rankB)/400}}.

rank_nieuwA = rankA + K(echte score - verwacht).

K = 25 for a player new to the rating list until he has completed events with a total of at least 30 games.
K = 15 as long as a player`s rating remains under 2400.
K = 10 once a player`s published rating has reached 2400, and he has also completed events with a total of at least 30 games. Thereafter it remains permanently at 10.
Dus wij vragen ons af of het op deze manier zou gaan werken, zou dit kloppen? We passen het toe op ongeveer 200 actieve spelers zou dat nog verandering moeten betekenen?

Ook zouden we nog graag een betrouwbaarheidsfactor/getal willen hebben. Iets om aan te geven hoe zeker we zijn van zijn rank.
Bijvoorbeeld aan de hand van hoeveel matches hij heeft gespeelt en tegen wat voor mensen hij heeft gespeelt. Als hij tegen slechte mensen speelt en hij wint alleen maar dan zou hij heel goed kunnen zijn maar zijn maximum is niet getest. Speelt hij tegen mensen die ook heel goed zijn, dan wint en verliest hij half om half. Op dat moment weet je vrij zeker dat je zijn rank vrij nauwkeurig weet aangezien hij zowel tegen iets betere als iets slechtere heeft gespeelt
Zijn rank zit daar dus tussen in, dit zou dan voor hem een lager (beter) betrouwbaarheidsgetal hebben omdat je zijn rank vrij zeker weet. In ieder geval zoiets dachten wij.

Hoe zou zo'n betrouwbaarheidsgetal eruit kunnen zien? En zou het ELO-systeem zoals hierboven beschreven werken voor 200 spelers ook met het feit dat elke kill als winst of verlies in het ELO-systeem word meegenomen?

Verwijderd

Topicstarter
KopjeThee schreef op vrijdag 05 januari 2007 @ 19:34:
In de ELO rating wordt de rating na een wedstrijd aangepast volgens de formule: nieuw = oud + K*(verwachting - resultaat)

Misschien kan je daar van maken:
nieuw = oud + K*(verwachting - resultaat)*f(a,b)

Waarbij f(a,b) een functie is van de uitslag a punten tegen b punten. De functie moet misschien netjes tussen de 0 en 1 komen en dichter bij 0 komen bij een kleiner verschil tussen a en b.
Bijvoorbeeld:
f(a,b) = abs(a-b)/(a+b).
Waarbij abs(.) de absolute waarde is.

Bij een uitslag 10-9 zou f(10,9) = 1/19 zijn.
Bij een uitslag 10-0 zou f(10,0) = 1 zijn.
Bij een uitslag van 5-5 zou f(5,5) = 0/10 :S

Hoe zit dit dan met een draw? Dat zou dan in het ELO systeem worden ingevoerd als 0.5, dit betekent dus al voordeel voor de lagere gerankte. Zouden we in het geval van draws de f(a,b) moeten vergeten? En zou dit nauwkeuriger zijn dan het systeem om elke kill als apart duel te nemen, elke kill is een winst of verlies?

Verwijderd

Ik heb het idee dat het systeem van KopjeThee een beetje dubbelop is. Want wat neem je als verwachting? In Elo is de verwachtingswaarde een getal dat aangeeft hoe groot de kans op winst is, aangezien elke winst in het schaken even zwaar telt. Maar dat is bij jou niet zo. Om het goed te doen, zou de verwachtingswaarde eigenlijk de verwachtte uitslag moeten zijn (dus bijvoorbeeld 5-3). Dat is echter lastig, vandaar de correctie achteraf voor de uitslag met de f(a,b). Maar dat maskeert het probleem alleen maar dat het lastig is om op basis van rating de verwachtte uitslag te bepalen, dat probleem los je uiteindelijk in dit voorbeeld op door een arbitraire functie aan je systeem toe te voegen. En dat lijkt me niet wat je wilt.

De correcte manier om dit te doen lijkt me het hier al eerder voorgestelde plan om gewoon elke kill als een winst/verlies situatie te beschouwen. Omdat je veel sneller een kill maakt dan een partij schaak speelt, kan je dan de K factor wat lager kiezen - bijvoorbeeld 5, met 10 voor de eerste 100 matches en 25 voor de eerste 20. Het voordeel van kills als individuele matches tellen is dat een nieuwe speler maar bijvoorbeeld 20 kills hoeft te maken (of tegen zich moet krijgen) om een aardige indicatie te krijgen van de te verwachten rating, en 100 voor een betrouwbare rating. Dat is zelfs voor een individuele speler nog wel te doen (al weet ik niet hoe dat in jouw spel is, ik heb sinds UT99 geen FPS meer aangeraakt).

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Ben je bang dat 200 te veel of te weinig is?

www.elorating.com is een site die voor age of empires 3 eloratings bijhoudt, zo rond de 80.000 hebben daar een rating. Dus 200 is niet teveel. En er zijn mensen met meer dan 10000 uitslagen, en die hebben ook geen hogere rating dan even goede met maar 100 uitslagen.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op maandag 08 januari 2007 @ 05:12:
[...]


Bij een uitslag van 5-5 zou f(5,5) = 0/10 :S

Hoe zit dit dan met een draw? Dat zou dan in het ELO systeem worden ingevoerd als 0.5, dit betekent dus al voordeel voor de lagere gerankte. Zouden we in het geval van draws de f(a,b) moeten vergeten? En zou dit nauwkeuriger zijn dan het systeem om elke kill als apart duel te nemen, elke kill is een winst of verlies?
Je kunt f(a,b) natuurlijk definieren zoals je wilt, het idee zou zijn dat het zorgt dat bij kleine uitslagverschillen de aanpassing van de score ook klein wordt. Als je wilt dat f nooit 0 wordt, dan kan je misschien nemen: f(a,b) = max(abs(a-b),0.1)/max(a+b,1)
Waar max(x,y) = x als x>y en anders y

Elke kill als apart duel kan natuurlijk ook. Wat nauwkeuriger is, weet ik verder niet. Ik weet niet eens wat nauwkeurig in deze context zou betekenen.

Verwijderd

ik denk dat er eerst bepaald moet worden aan welke eisen het systeem moet voldoen:

-wanneer een lagere rang van een hogere wint, verliest de hogere dan punten?
-wanneer een hogere rang van een lagere wint, krijgt de hogerer dan punten?

Trouwens, een duel van 1-0 zegt niets (10-5 wel), het zou zonde zijn dat er hiermee wijzigingen in ranks gemaakt worden welk heftig kunnen zijn. En als speler zal je vaak per dag spelers maar in een enkele match tegenkomen, waardoor die uitslag niet te vertrouwen is.

Misschien is een rank bepaling aan de hand van de positie in jou team wel verstandig. Dit geeft immers goed aan hoe jij gepresteerd hebt tegenover de rest.

TrueSkill(http://research.microsoft...aspx#How_to_Update_Skills) van microsoft is gebaseerd op Elo. Ze bepalen jouw rating aan de hand van jouw prestatie in jouw team. Ook hebben zij een varieerende K-factor, je verdient nauwelijks aan een lagerere rank terwijl je wel goed verdient aan een hogere.

Ook hebben zij een vertrouwensfactor in het systeem opgenomen. Deze factor bepaald hoe zeker het systeem is van jouw positie op dat moment. Deze wordt lager wanneer je veel speelt en eindigt met vrijwel dezelfde prestatie. Wanneer je prestatie niet vaak hetzelfde is, is het systeem niet zeker van jouw rank op dat moment, waardoor jouw vertrouwenfactor omhoog gaat.

Alle nieuwe scores worden uitgerekent met de huidige rank, de K-factor en de vertrouwensfactor:

μwinner ← μwinner + σ2winner/c * v((μwinner-μloser)/c,ε/c)
μloser ← μloser - σ2loser/c * v((μwinner-μloser)/c,ε/c)
σ2winner ← σ2winner*[1-σ2winner/c2 * w((μwinner-μloser)/c,ε/c)]
σ2loser ← σ2loser*[1-σ2loser/c2 * w((μwinner-μloser)/c,ε/c)]

c2 = 2β2 + σ2winner + σ2loser

Waarbij V en W (de eigenlijke K-Factor) uitgeplot is op de link. Deze varieert, aan de hand van verliezen(e=1?)/gelijkspel(e=4)/winst(e=0.5?). μ = score, σ = vertrouwen

ehm, kort door de bocht, is dit iets voor een aantal honderd spelers ipv de duizenden op xboxLive?
En zoja, en je wordt gewaardeerd aan de hand van jou prestatie in jouw team, hoe deze formules toe te passen?

  • Sissors
  • Registratie: Mei 2005
  • Niet online
In age of empires 3 is het officieele ranking system trueskill, spelers hebben een elorating gemaakt. Elorating wordt algemeen gezien als betrouwbaarder dan trueskill

Voor een shooter kan dat anders zijn

[ Voor 10% gewijzigd door Sissors op 12-01-2007 18:04 ]


Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 12 januari 2007 @ 12:35:
TrueSkill(http://research.microsoft...aspx#How_to_Update_Skills) van microsoft is gebaseerd op Elo. Ze bepalen jouw rating aan de hand van jouw prestatie in jouw team. Ook hebben zij een varieerende K-factor, je verdient nauwelijks aan een lagerere rank terwijl je
ts voor een aantal honderd spelers ipv de duizenden op xboxLive?
En zoja, en je wordt gewaardeerd aan de hand van jou prestatie in jouw team, hoe deze formules toe te passen?
Ja ik heb die trueskill een beetje bekeken, maar ik begrijp er niet echt veel van. Het lijkt me wel een heel goed systeem aangezien het naar je score in teamverband kijkt. Als je alleen naar de individuele scores kijkt dan kan iemand die zich goed verstopt en 1 kill per potje maakt zonder dood te gaan. Heel goed in de rankinglijst komen. Hij wint alleen maar en verliest nooit immers.
Als je nu naar de score ten opzichte van het team kijkt dan blijkt wel dat diegene die zich had verstopt het helemaal niet zo goed heeft gedaan. Dat is wel goed van trueskill, zover ik het kon zien.

Dit vind ik ook direct het nadeel van alle ELO varianten die we hebben besproken. Aangezien deze echt alleen naar de individuele scores kijkt tussen spelers onderling kan het zijn dat iemand die camped (zich verstopt en maar een paar kills per game maakt) heel hoog in de ELO rating komt. Als je naar zijn score kijkt ten opzichte van het team dan is hij helemaal niet zo goed, dus zou trueskilll daarin nauwkeuriger zijn. Ook de betrouwbaarheidsfactor die trueskill geeft lijkt ons heel goed aangezien je daaraan kan zien hoe zeker we zijn van zijn rank. Die zou je dan net als in trueskill ook met de nieuwe rankberekening moeten gebruiken.
furby-killer schreef op vrijdag 12 januari 2007 @ 18:04:
In age of empires 3 is het officieele ranking system trueskill, spelers hebben een elorating gemaakt. Elorating wordt algemeen gezien als betrouwbaarder dan trueskill

Voor een shooter kan dat anders zijn
Ik denk dat het voor aoe3 ELO inderdaad beter is, aangezien het net als schaak vaak een 1 tegen 1 game is waarin je wint verliest of gelijk speelt. Bij een shooter zijn veel meer mensen, en is geluk een veel grotere factor. Als je alleen naar de onderlinge scores kijkt en dat als winst verlies gaat zien, dan wil niemand meer dood en gaan ze campen om zo veel mogelijk kills(wins) te halen en omdat ze campen krijgen ze weinig deaths (verliezen) Hierdoor zou hun ELO rating heel hoog worden terwijl hij helemaal niet goed is. Want ik voor een shooter dus wel goed vind aan trueskill is dat ze naar je score in het team kijkt, dat geeft denk ik beter weer of je beter of slechter was dan anderen.

Maar is er dus iemand die trueskill goed begrijpt en dat kan uitleggen, ELO lijkt me namelijk toch helaas niet geschikt voor shooters? Of is er iemand die een andere manier heeft waarin ook naar de score ten opzichte van je team word gekeken?

thanx, Koos

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Als je elke kill/dead als een duel ziet kan je het als allemaal 1v1s zien.

Het probleem is dat campen inderdaad een hoge rating geeft, maar dat komt gewoon omdat campen een 'goede' taktiek is. (goed in de zin van hoge kill/dead verhouding)

Verwijderd

Topicstarter
furby-killer schreef op dinsdag 16 januari 2007 @ 20:27:
Als je elke kill/dead als een duel ziet kan je het als allemaal 1v1s zien.

Het probleem is dat campen inderdaad een hoge rating geeft, maar dat komt gewoon omdat campen een 'goede' taktiek is. (goed in de zin van hoge kill/dead verhouding)
Ja klopt, met dat probleem zitten we dus nu. We willen het misschien met ELO doen en elke kill/death als 1vs1 zien, alleen dan is er het probleem met campers. Daarom keken wij naar trueskill aangezien die ook kijkt naar je positie in je team. Dan is campen namelijk niet meer zo goed omdat je mischien wel een goede verhouding hebt, maar je hebt weinig kills in totaal, dus een lage positie in een team.

We zaten eraan te denken om je positie in het team ook in de K-factor ofzo te verwerken maar we zijn bang dat als we iets veranderen de balans weg is. Een nog groter probleem is dat als je alleen naar positie kijkt (of te zwaar laat meetellen) tegen noobs spelen voordelig word. Je eindigt dan immers altijd op een goeie positie.

We weten dus nog niet hoe we het gaan doen, maar waarschijnlijk beginnen we dus met de ELO rating. Toch hebben we liever een beter systeem die ook bovenstaande problemen tegen gaat.
Pagina: 1