# Casino Gambling Machine Learning Application

I am working on a project with the goal of predicting the success of a casino game. One often questions why some games do much better than others -- it's not obvious in some scenarios. We have over 100 machines and over 200 games (i.e. each machine can play about 20 games and some machines can play multiple games). Naturally, one is interested in making games that maximize the average profit per day. So the output metric I consider must be highly correlated with the profit of the machine. The algorithm must be trained to maximize profit. The goal is to predict the success of a game based on its attributes.

My team is trying to construct training data which can be used to train a model to predict the success of a game. We need to design the training data and an appropriate output variable.

Approach 1: The first idea we had was to consider each unique pairing (machine X, game Y) as a training instance. Therefore, the attributes/features of each training instance would be things like Machine Type, Game Type, Size of Machine, Colour, Game PayOff Distribution and Volatility, Location in Casino, (i.e. near bar, near ATM, near exit etc.), Location in World, Sound track played by game. The output metric would be the average profit per day. The issue with this approach is that it does not result in enough training data. For instance, if we have 100 unique machines and each can play 10 games, and each machine is in 15 locations across the world, and suppose that they are equally spread within 5 popular casino locations, then that's 100 * 10 * 15 * 5 = 75,000 training examples. That's not enough training data to anything useful.

Approach 2: Treat training data on a per spin basis. In particular, consider each spin as a training instance. The basic idea here is to predict the probability of spinning again, normalized by appropriate factors. So each training instance has the machine, game and location features, but the output variable is the probability of spinning again. But we also need to take into account the reasons for someone not spinning again. For instance, they could have just won a huge payoff and they want to walk away with the cash, or maybe they have been sitting there for 3 hours and are bored, or maybe they ran out of cash. So the predictor variable should appropriately take these factors into account as well. One simple approach would be to divide the probability of spinning again by the current payout. This would essentially normalize the data to a variety of possible payoffs.

Overall, I think Approach 1 is very clear because it lacks enough data. Approach 2 has many issues. First of all, I don't even think it makes sense for a machine learning algorithm to be trained on because the mapping from input to output is not unique. For example, there exists the same input with multiple outputs because each game, machine, location pairing has been spun millions of times. So the function would not even be valid by the definition of a function in mathematics.

Question: Based on the thoughts I have outlined, what potential issues do you see with both approaches? Can you think of a way to make Approach 2 make sense? Do you think Approach 1 is promising? Is there another approach I have not though about? What do you think are some other features that I might have missed? Overall, does my thinking process make sense. What objections do you have? If something is unclear, please comment below and I will update the question.

• For what analysis is 75’000 rows of data not enough? – IWS Dec 21 '17 at 6:33
• @IWS Neural Nets for instance and 75,000 is an overestimate. It’s less than that most likely. – Ryan J. Shrott Dec 21 '17 at 13:21