I'm trying to create a machine learning program to predict the winner of UFC fights. I want to train my AI with data from previous matches, but I have encountered a problem.

I wonder if the algorithm will really work because, on the website where I can retrieve the data of the fighters and their fights, the information is up to date since their last fight.

Let's imagine I am the fighter Tommy. I have a record of 10-2 with an average of 6 strikes per minute thrown and 1 strike per minute absorbed.

If the AI trains on my third fight, which has already taken place, so we know the result (I was 2-0). With the data it has, the AI will understand that I was 2-0, but with the latest data from my last fight (6 strikes per minute thrown and 1 strike per minute absorbed). But that wasn't the case because it was much earlier, so I didn't have 6 strikes per minute thrown and 1 strike per minute absorbed yet.

In fact, by retrieving the fighters' data on the UFC website, I have the latest information for each fighter. Consequently, the AI will train on old fights without having the fighters' historical data.

Essentially, it will be evaluating fights from 2010 with data from both fighters dating back to 2023.

Is this a significant problem for its training? Is there a solution to this issue?


1 Answer 1


The question is confusing, but I think what you are getting at is that you need to enforce temporal consistency when you evaluate your method.

In particular, a machine learning model takes as input (a feature vector) and produces output (a prediction). In your case, the feature vector contains information about past fights, and the prediction is the prediction of the result of the next fight. Now what information should be in the feature vector? To answer that, I suggest that you think about how your model will be deployed. What information will be available, at the time you want to use the model to make a prediction?

For instance, suppose that you plan to use the model to predict the outcome of a fight, before the start of that fight. Well, then, the only information available will be data about prior fights. So the feature vector can only include data about prior fights -- e.g., the results of prior fights, statistics about strikes per minute in prior fights, etc. Obviously, the feature vector cannot include data about this fight, because you can't see into the future.

That then dictates what training data you need, to train a model. You need training data that is consistent with those constraints. In particular, the feature vector should be statistics on all fights before the one whose outcome you are trying to predict. It sounds like you are saying that you don't have a way to gather that kind of data for past fights. If you don't, you don't, and then you might not be able to apply machine learning (or any other statistical model) in a principled way. This is a common situation. Our ability to use machine learning (or statistical modeling) is constrained by the data that is available to us.

See also "temporal cross-validation", https://stats.stackexchange.com/questions/477730/what-is-temporal-leakage, https://towardsdatascience.com/time-based-cross-validation-d259b13d42b8.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.