Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I have been doing a research on various rating systems. I have found some good ones like Elo Rating system and Glicko Rating system. But all of these system are designed for a games which involve 2 competitors. ( chess, go)
I would like to know if there are any algorithms available for games involving N players, or if there is a way above systems can be extended to support N player games.
This is the closet thing I have found so far:
http://sradack.blogspot.com/2008/06/elo-rating-system-multiple-players.html
Assuming the game results in a ranking of all players (rather than just determining a single winner, say), you could treat the single game as N(N-2)/2 individual two-player games in which 1st place beat everyone else, 2nd place beat 3rd, 4th, and so on. You can then apply one of the 2-player algorithms to each of these individual games.
You would probably want to reduce the weighting of rating changes because this gives many "games" worth of ratings changes for each game played. Perhaps the changes should be reduced by a factor of N since each player is rated as having played N games, then again, maybe it makes sense to weight games among more players more heavily.
I have no idea whether this produces a rating system that is actually useful, but it is certainly possible to extend 2-player systems to the N-player case.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I'm currently developping an application which allows psychologists to manage their schedule and budget. As a proof of concept, I would like to create an intelligent appointment service. There can be 3 cases:
I know the client, I need to guess the day and time for his next appointment
I know the day, I need to guess which client and at what time
I know nothing, I need to guess which client, which day and what time
I'm currently in the process of learning deep learning algorithms just to get a bit of theory, but it's a little bit overwhelming.
There are features I know I can extract from the appointments:
Day preference in the week (always on monday, say)
Reccurence (every two weeks or such)
Nb of days since last appointment
Whether the client was present or not to his last appointment
etc..
I know there are things like "features extraction" that you can train a neural network to find the features itself, but all examples refers to image recognition or speech analysis.
I want the algorithm to train on the existing and future appointments (stored in a MongoDB). I would also like that the algorithm trains live, that is if it proposes an appointment to the user and the user takes it, it should train positively. On the other hand, if the user navigates or change any parameter, the algorithm should adjust its weights accordingly.
I also know I should start by extracting data from the DB that will be transformed in a vector or matrix, then the algorithm is supposed to train on that data.
Is this correct? How can I start and what kind of architecture do I need?
Since It's a POC, I assume you don't have a large dataset, I would not recommend to go with deep learning, start with something smaller like a decision tree kind of algo and when you have good amount of data, move to deep models. Why? It's always easier to tweak the tree kind of model and explain it to client too. Also, as suggested by Prof Andrew NG, Deep learning require at least 100K observations to learn and perform well. With simulated dataset, it's always unpredictable.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
What is the optimal and usual value of selective pressure in tournament selection? What percent of the best members of the current generation should propagate to the next generation?
Unfortunately, there isn't a great answer to this question. The optimal parameters will vary from problem to problem, and people use a wide range of them. Selecting the right tournament selection parameters is currently more of an art than a science. Stronger selective pressure (a larger tournament) will generally result in the population converging on a solution faster, at the cost of that solution potentially not being as good. This is called the exploration vs. exploitation tradeoff, and it underlies most algorithms for searching a large space of possible solutions - you're not going to get away from it.
I know that's not very helpful, though - you want a starting place, and that's completely reasonable. So here's the best one I know of (and I know a number of others who use it as a go-to default tournament configuration as well): a tournament size of two. Basically, this means you just keep picking random pairs of solutions, choosing the best one, and sending it to the next generation (with mutation and crossover as desired), until the next generation is the desired size. This has the nice property that any member of the population besides the absolute worst has a chance of getting to the next generation, but better ones have a better chance.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I play chess most days at chess.com and was wondering how an algorithm might predict the result of my next game based on all my chess history at this site: my ratings when playing the previous games, the opponent rating, and whether I won or lost.
Thanks,
Roberto Falk
If you are searching for a way to estimate your skill and the skill of your opponent, look for the Elo-Rating. It was actually developed for that purpose (chess). The Elo-rating changes based on which games you won and lost (and against which opponent, based on their Elo-Rating).
That means, if you win against a strong opponent (compared to your strength), your Elo-Rating will improve a lot. If you win against a weak opponent, your Elo-Rating will improve almost not at all.
The problem is, how to get the Elo-Rating of your opponents. If the website does not offer it, the only way is to compute it yourself. However, you would need ALL games of ALL the players on this website to find out how good they really are. Just the number of won/lost games is worthless if you don't factor in the skill of the opponent. If someone won 100 games against a beginner, he doesn't have to be very good. If someone won 100 games against a very good player, he is much better.
If you are searching for a way to estimate the current state of a game while playing (i.e. who is more likely to win after some moves were executed), there are several popular heuristics for chess available. The most simple ones define a value for each piece (strong pieces have a higher value). To see which player has the stronger board, just sum up the values of their pieces.
For some more heuristics (and probably other programming ideas), see here: https://www.chessprogramming.org
There are several very good approaches to estimate the value of a board, much more than I could reasonably write up in an answer.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
By now, especially after this post and other similar internet resources, I guess most people have figured out how to easily win at Gabriele Cirulli's game 2048: even manually, by observing simple rules, reaching 2048 is not a problem.
However, losing at this game seems far more challenging than winning! As much as I try, the minimum tile I got so far was 16. It seems to me that losing depends on chance much more than winning. Is there any strategy that can guarantee to lose with no tile more than 8?
(Of course, some of the hints suggested here might help, such as calculating all possible moves for n steps and choosing the combination of moves that maximises the probability to get the tiles stuck and end the game. But is there a more logical principle to obtain that?)
In the luckiest case, you would alternate 2s and 4s; alternating 2s, 4s and 8s should be easier. Actually I have just made it with five 8s, seven 4s and four 2s.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
Should be simple enough, but I can't get my head around the math required.
Let's say you have Team 1 (80 overall) vs. Team 2 (70 overall).
Using only those two variables, what's the best/fairest way of determining a winner? Obviously, the higher the overall, the better the chance Team 1 should have to win.
I've been trying to look up answers, but unfortunately I don't exactly know the word or phrasing of what I'm trying to figure out.
Just looking for a logic, or if someone can point me in the right direction of searching, that would be great.
Edit: Basically, in a match of Team 1 vs. Team 2, how can I calculate the winner when the only stat I'm given is the overall of each? Overall meaning the teams overall rating out of 100. (think sports team, the players ratings average is the teams overall rating).
The question is unclear because you haven't defined an criteria for how the winner is selected. If the winner is the team with the highest overall ranking then it's pretty straight forward, team one wins. If you're doing some sort of weighted drawing -- like the NBA draft lottery -- where the team with the higher score has more chances of winning the drawing then you'd just think of it like pieces of paper in a bowl. Team 1 gets 8 pieces, Team 2 gets 7 pieces. There are 15 pieces in the bowl and Team A has 8/15 or 53% chance of having one of its pieces picked out. Add in a Team 3 with say a 30 ranking so they get 3 pieces of paper. Now there are 18 in the bowl and Team 1 has a 8/18 or 44.4% chance of winning.
If that's what you're after then you can write a formula for picking weighted random winners -- random choices but where one team has a greater chance of being selected than another.