Vra

In ons kantoor geniet ons gereeld 'n paar rondtes tafelvoetbal / tafelvoetbal na werk.Ek het 'n klein java-program saamgestel wat ewekansige 2vs2-opstellings van die beskikbare spelers genereer en die wedstrydresultate daarna in 'n databasis stoor.

Die huidige voorspelling van die uitslag gebruik 'n eenvoudige gemiddelde van alle vorige wedstrydresultate van die 4 betrokke spelers.Dit gee 'n baie rowwe skatting, maar ek wil dit graag vervang met iets meer gesofistikeerd, met inagneming van dinge soos:

  • spelers kan goed wees om as aanvaller te speel, maar sleg as verdediger (of andersom)
  • spelers vaar goed teen 'n spesifieke teenstander / sleg teen ander
  • sommige spanne werk goed saam, ander nie
  • vaardighede verander met verloop van tyd

Wat sal die beste algoritme wees om die speluitslag so akkuraat as moontlik te voorspel?

Iemand het voorgestel om 'n neurale netwerk hiervoor te gebruik, wat nogal interessant klink ...maar ek het nie genoeg kennis oor die onderwerp om te sê of dit kan werk nie, en ek vermoed ook dit kan te veel speletjies neem om redelik opgelei te word.

EDIT:
Moes 'n langer onderbreking hiervan neem as gevolg van 'n paar projeksperdatums.Om die vraag meer spesifiek te maak:

Gegee die volgende mysql-tabel wat alle wedstryde bevat wat tot dusver gespeel is:

table match_result

match_id      int pk
match_start   datetime
duration      int (match length in seconds)
blue_defense  int fk to table player
blue_attack   int fk to table player
red_defense   int fk to table player
red_attack    int fk to table player
score_blue    int
score_red     int

Hoe sal jy 'n funksie predictResult(blueDef, blueAtk, redDef, redAtk) skryf {...}
om die uitkoms so na as moontlik te skat, enige sql uit te voer, berekeninge te doen of eksterne biblioteke te gebruik?

Was dit nuttig?

Oplossing

Gebruik die TrueSkill algoritme, dit is baie goed in hierdie. Ek het dit in werking gestel vir foosball en skaak en dit werk baie goed. Kollegas het my vertel dat dit byna te goed in hierdie.

Vir volledige besonderhede oor hoe dit werk, asook 'n skakel na my implementering, sien my " Rekenaars jou vaardigheid "blog post.

Ander wenke

Hoekom 'n neuralnet gebruik? Gebruik statistieke, sou waarskynlik die korrelasie tussen elke speler 'n Goeie maat wees.

Net om te begin laat versamel inligting: Vir 'n gegewe speler wat ons nodig het:

  1. die posisie waarin hulle gespeel
  2. die eindtelling

'n goeie aanvaller sal rek tot punte. 'N Goeie verdediger sal punte verhoed word aangeteken.

Die werklike inligting sal wees van 'n goeie aanvaller speel teen 'n goeie verdediger.

Probeer om Naive Bayes-klassifiseerder toe te pas.

Bayes -leer is 'n waarskynlike benadering wat gebaseer is op die aanname dat die hoeveelhede van belang beheer word deur waarskynlikheidsverdelings en dat optimale besluite geneem kan word deur te redeneer oor hierdie waarskynlikhede tesame met waargenome data.[Mitchell, T.(1997), Masjienleer]

Dieselfde presiese verspreiding van die spelers kan lei tot verskillende wedstryduitslae.As jou data 'n patroon in het, 'n patroon gebaseer op jou veranderlikes, kan Naive Bayes-klassifiseerder goeie resultate lewer.

Die algoritme is nie baie kompleks nie.Ek dink, iemand met 'n mate van kennis in waarskynlikheid, kan dit verstaan ​​en toepas.

In inbraakdetectiestelsels word dit gebruik om netwerkafwykings te bepaal deur na verskeie netwerkparameters te kyk.Bayesiese benadering kan baie suksesvol wees in spesifieke tipes data en produseer hoë TP en lae FP tariewe.Maar dit kan ook hoë FP-koerse tot gevolg hê, afhangende van jou data.Jou data sal die beste benadering bepaal.

Jy kan Weka (http://www.cs.waikato.ac.nz/~ml/weka/), 'n data-ontginning sagteware biblioteek, en probeer verskillende algoritmes.Dit bevat die Naive Bayes-klassifiseerder.Probeer maar kyk.

Een opsie sou wees om te probeer en dink die punt versprei as 'n soort van lineêre model . As jy meer games as spelers wat jy kan 'n kleinste kwadrate pas van punte per speler doen met die bou van 'n speletjies matriks (1 vir speler op een span, -1 vir die ander, 0 vir toeskouer) vir al die speletjies en gevolg vektor vir die versprei.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top