|
You must take in account that "Player A is better than Player B" does not ensure "Player A beats Player B". But the more historical data you have, the more you can take in account indicators for when the one or the other player wins.
You should be aware that it is high likely that the model in its current state, as far as I understand it, will not converge. Mainly because players at the best don't have a distinct probability of winning but more a set or even range of measures as probabilities.
And another point is that the eveness of comparison of two players depends on the granularity of the model.
You don't need very far apart skill levels to reach a very high prediction score. The model just needs to take in account the most relevant data possible. Which means more, and more precise, data.
That is what I meant with "if you keep the work up", you need to gain much knowledge and add a ridiculous account of parameters about the game state if you want to be really on spot with predictions.
Your model is a quite good start off, but it will naturally reach its limits hence to minor-dimensioness and cardinality of data sets, two different factors of course.
And it definitely helps when the game is so far figured out that players stuck to their guns rather then gamble, obviously, aswell (technically spoken: variance) :-)
If you are keen in expanding this project further I would love helping you to figure out further improvements of the model, although I must admit my focus point is game theory so my experience and knowledge is limited.
|
I believe the concept "Player A is better than Player B" does not ensure "Player A beats Player B" was the entire substance of my last post on how the skill system calculates the win percentage.
You'll have to be more specific on what you mean by "converge." The skill parameters will most definitely converge under the current model. The probability of a player winning will not, and I don't expect it to. Assuming perfect predictability assumes that players will always make predictable decisions. Even late into Brood War, people made risky decisions to try and pull off an extra win. Players always have the decision to go fast/all-in or slow/macro or anywhere in between.
If a player is 95% predictable, then their opponent is going to snipe build whatever they do. If the opponent is savvy of this, they will counter the snipe build, and the head games go on until you have no idea exactly which player is going to do what, thus leading to uncertainty of individual games outcomes.
I think it would help me if you spoke in more specific terms. Explain what the situation would look like where I could know exactly who was going to win because I just don't see that ever being the case. I can't imagine the game reducing to be so one-dimensional so it would help to have this explained to me.
|
Also, to anyone reading this, if anyone has some good parsing skills, the TeamLiquid Database is awesome, it has player names, races, maps, and tournament and maybe some other stuff, I don't remember. If someone could help me figure out how to extract all that information in bulk, I could leap this project forward a considerable amount.
|
I mean for example you can expand the function with recent match history, matchup and stuff like that. It just is quite hard to figure out how to weight these parameters though to gain accuracy instead of losing it.
highly mathematical inside + Show Spoiler + mathematically, your function is h = g(f(x,y)), g : Q -> {0,1} "winner function" f : R x R -> [0,1] "match function" x,y being the Players parameters. R, Q, N as usual
what I mean is you replace the function f with for example a function f2, f2 : F x F x R x N x N^n x N^n -> [0,1] f2(x,y,z,a,b,c), x,y player functions, z team factor (simulate training partner), a the map, b the history of player A, c the history of player B
F the space of parameter functions, f3 in F being f: N x R^3 x N^n -> R f3(x,y,z) with x enemys race, y players parameters per matchup, z winning history over last n matches
This can obviously be expanded endlessly with successively minor improvement
if you figure out how to model these factors in even slightly (which is by no means near trivial) it may make the predictions more accurate.
With skill parameter not converging I meant it may rise in ones players prime and fall again and then again rise but I don't know if it converges in the normal mathematical sense on infinite examples, means if there is a distinct skill x0 for every player which his parameter will converge against.
I cannot state any of this with proof so I could be wrong on my assumptions of course :-)
|
a bit of a statistical upset, ogsMC is probally going to win it.
|
There is an rss feed for the tlpd, although it only returns the 100 most recent games (is there a way to get it to send more?). You could parse this to get new game results.
#!/usr/bin/python
# Before running, do 'wget [url=http://www.teamliquid.net/tlpd/sc2-korean/games/rss']http://www.teamliquid.net/tlpd/sc2-korean/games/rss'[/url]
import feedparser # From [url=http://www.feedparser.org/]http://www.feedparser.org/[/url] d = feedparser.parse("./rss")
# The link in rss feed is missing the "sc2-korean" part # rss: d['entries'][0]['link'] = [url=http://www.teamliquid.net/tlpd/games/50656_InCa_vs_NaDa]http://www.teamliquid.net/tlpd/games/50656_InCa_vs_NaDa[/url] # actual: [url=http://www.teamliquid.net/tlpd/sc2-korean/games/50656_InCa_vs_NaDa]http://www.teamliquid.net/tlpd/sc2-korean/games/50656_InCa_vs_NaDa[/url]
#print d['entries'][0]
for k in d['entries']: print k['title'], k['updated']
|
Mip, this is deeply intriguing and I'm looking forward to see the final results. Having finished my elementary course in statistics, I was hoping to gain some inspiration as for what I could do when I'm going to begin my exam, this really got me thinking, seeing as I want to do something game related as well. Perhaps it would be interesting, as I think someone already mentioned, do a comparative study with other tournaments?
|
Have you considered using trueskill? It's a bayesian sorting algorithm that can be used for games with any number of players.
|
|
|
|