(Round 2 adaptation files added to the google drive)

Inspiration

The goal of the "House Edge" challenge was to predict the payout probabilities of different slot machines based on their previous outcomes.

What made this challenge interesting was that the machines didn't always follow the same patterns. Some stayed consistent, while others changed over time or depended on previous spins. We wanted to see how accurately we could figure out these patterns and use them to predict future outcomes.

What it does

Our project predicts the probability of each possible payout for a slot machine based on its history. Instead of just guessing what the next spin will be, our model predicts the chances of getting 0×, 1×, 2×, 5×, or 20× payouts.

It looks at previous spins, patterns between outcomes, and how the machines' behavior changes over time. We ended up combining two different models to make our predictions more accurate.

How we built it

We built everything in Python using NumPy and SciPy.

We started with the starter model provided for the challenge and tested different ways to improve its predictions. We experimented with how much weight to give recent spins, how to find patterns in previous outcomes, and how to handle machines whose probabilities changed over time.

Our final approach uses two models. The first focuses on finding patterns in previous spins and learning how different machines behave. The second uses a generative model with hidden states to estimate how the payout probabilities change over time.

After testing both approaches, we combined their predictions using a 50/50 weighted blend. We also used episode-grouped cross-validation to compare our models and check how well they performed on different sets of data.

Challenges we ran into

One of the hardest parts was dealing with how differently the machines behaved. Some had pretty consistent probabilities, while others changed over time or didn't have much history to work with. Because of this, something that improved predictions for one type of machine didn't always help with another.

We also had to make sure the final predictions were in the correct format and that the code could reproduce the same results for submission.

Accomplishments that we're proud of

We started with a baseline score of around 31.34/60 on local validation. After experimenting with different probability models and combining our best approaches, our final ensemble reached a reported local validation score of 58.67/60.

What we learned

We learned a lot more about probability modeling and how useful previous outcomes can be when trying to predict something that seems random.

We also got more experience working with hidden-state models, identifying patterns in sequential data, and combining different models to improve accuracy.

One of the biggest things we learned was that a more complicated model isn't always better. Testing different ideas and understanding why something worked was just as important as getting a higher score.

What's next for House Edge

If we continued working on this project, we would want to improve how the model handles machines with very little history and how quickly it adjusts when payout probabilities change.

We would also like to experiment with other probabilistic models and see whether we could improve the predictions even further without overfitting.

Built with

Python, NumPy, SciPy, probabilistic modeling, hidden-state models, ensemble learning, and cross-validation.

Built With

Share this project:

Updates

Submission history