Predicting UFC bouts with a DNN classifier

A study on how to predict the results of MMA fights based on styles and stats of each fighter

Felipe Cunha
Towards Data Science

--

Photo by Attentie Attentie on Unsplash

Disclaimer: you should not use the model presented in this article to bet or perform any betting related activity. This article or code posted in my GitHub account do not constitute betting advice.

At first I thought that the idea of trying to predict the outcome of an MMA fight using stats was kind of dumb. My reasoning was very simple: fighters have different strategies to fight different opponents. If you are fighting McGregor, you know that you need to do something about that left hand. If you are fighting Demian Maia, you know that you cannot afford to roll with him. If your opponent is Nate Diaz, you need to finalize him fast or better be on top of your cardio game.

But I came accross a really good video from Chael Sonnen on You Tube that changed my mind. In this video, he talks about ‘beating Khabib’. He says that it is impossible to coach an athlete to adjust his style to fight a specific opponent unless he already has the skills to do so. These skills need to be part of his fighting vocabulary and 3 months of preparation won’t change years of training and muscle memory. So, in the excitement of the moment, the plan is likely to go through the window and those movements that are ingrained in their DNA will come out.

Chael Sonnen talks about beating Khabib Nurmagomedov

The Data

After convincing myself that this project wasn’t a complete waste of time, I needed to get some data that reflects what each fighter is. So I’ve made a bot to scrape the data from ufcstats.com.

These stats are great, because they paint a really good portrait of what each fighter techniques and background really is.

For instance, look at the story that the numbers tell about Demian Maia and Jorge Masvidal:

Source: www.ufcstats.com
Source: www.ufcstats.com

Demian Maia is a grappler, a jiu-jitso expert while Masvidal is a kick boxer. These metrics embed that information in a way that can be used by a DNN classifier.

The Model

The strategy is to feed a DNN classifier with the stats of the contenders and train it to recognize who will win based of the results of previous bouts.

I did not spend a lot of time tuning the model, but it’s basically a DNN classifier with 3 layers with 30 units in each one. The data and my code is available at:

https://github.com/cunhafh/UFC_bout_prediction

Model Accuracy

The model was trained with 30% of the available data and evaluation resulted in roughly 80% accuracy:

I tested the model on last UFC night fight and it worked well predicting the results of ‘Blayde Vs Dos Santos’ and ‘Dos Anjos Vs Chiesa’.

The model predicted wins from Blaydes and Chiesa. No surprises with Blaydes, specialist analysis and the betting odds were on his favor. However, Chiesa was the underdog on the other fight, and not many people expected him to defeat Rafael dos Anjos — former champion of that division. If I were to bet on that fight, I’d definitely lose money by betting on Dos Anjos. And this remark, takes me to the next topic.

Sports bets and Machine Learning

Disclaimer: This article or code (posted in the aforementioned repository) were developed solely for scientific interest and should not be used to bet or perform any betting related activity.

Having said that, I believe that a ML model can indeed help increase the odds on ones favor. Let’s have a deeper look into it.

The advantages of using a predictive model vs “going with your gut” are undeniable. We are biased towards the fighter we like best, or have known for longer, or has the same nationality we have. Machine learning can provide you with a strictly logical choice that resulted from a model tested thousands of times with a known accuracy.

The biggest caviat in sports bets is the risk/reward ratio. For example, the decimal odds for the next UFC event “Jon Jones Vs Dominick Reyes” are 1.25 (Jones) and 4.25 (Reyes). The risk/reward ratio of betting on Jones is not reasonable (for a $100 bet, risk of losing $100 to eventually make $25).

So, the betting strategy would need to account for the wins to make up for the losses.

Breakeven point

In other works, if I bet on 10 fights, 10 dollars per fight, I should expect to lose 20 dollars and the returns from the other bets should make up for that. So, in this case (model acc = 80%), if the average of all 10 fighters odds are at least 1.25, I should be able to breakeven. If I only decide to bet on fighters with at least 1.4 odds, I should expect a minimum return of 12%. Of course, all this provided that the model works with 80% accuracy.

I have not been able to test this strategy though, where I live sports betting is illegal. I plan to test it at some point but that will be another article!

I hope you like this article, I’d love to hear your ideas and suggestions. Also feel free to connect with me on Linked In.

https://www.linkedin.com/in/felipe-cunha-msc-pmp-lssbb-2692131b/

Thanks

--

--