I am doing a project to predict the outcome of a cricket match, I have the data that states which matches were won by whom for ODIs. [Espn data]

Which algorithm could be used to predict the outcome of the coming matches? Would Quadratic Regression be a good idea? Or would predicting based on probability algorithms such as the markov's algorithm is what is generally used? Any other algorithm I should use?

So basically, I want to know which algorithm I should use, I will implement in C++ ultimately but I will do it in R or python first.


I am a newbie in this field, hence pardon if the question sounds too stupid. I have learnt regression so far in data analytics.

  • 2
    $\begingroup$ Have you done any searching for sports outcome prediction methods rather than algorithms? The thing I'm most familiar with is the Dixon-Coles model for soccer matches, where the model predicts goals scored. It fits an attack and defence parameter for each time by maximum likelihood based on a set of games, so it is essentially a regression model which you should be able to understand. Look that up, it might give you some ideas. $\endgroup$
    – Spacedman
    Apr 12 '16 at 7:14
  • $\begingroup$ You might also explain your data a bit more. Do you just have team A, team B and outcome (A wins|B wins), or do you have who batted first, how many runs or wickets they won by in how many overs, whether rain stopped play and the Duckworth-Lewis method applied etc etc? $\endgroup$
    – Spacedman
    Apr 12 '16 at 7:18
  • $\begingroup$ Yes, agree with @spacedman, could you provide a list of data that you have. It might assist us in giving different advice with regard to the analysis technique used. $\endgroup$
    – Marcus D
    Apr 12 '16 at 11:25
  • 1
    $\begingroup$ A google (scholar) search for "Cricket prediction ODI" finds a few good looking papers (including predicting outcomes in-game). Howzat? $\endgroup$
    – Spacedman
    Apr 12 '16 at 14:52
  • $\begingroup$ Unfortunately this looks more like homework stuff $\endgroup$
    – Bach
    Apr 15 '16 at 17:06

Sharing what sort of outcome you are most interested will be helpful in directing you towards a proper answer. However, consider this:

If you are interested, in exploring the likelihood of will win or lose think classification algorithms:

Linear Machine Learning Algorithms - Logistic regression - Linear Discriminant Analysis

Non-linear Machine Learning Algorithms

  • K-nearest neighbors
  • Naive Bayes
  • Support Vector Machines

If you are interested in exploring the scores of each team in a given game think regression algorithms:

  • Linear regression
  • Logistic regression
  • Stepwise regression
  • Multivariate Adaptive Regression Splines (MARS)
  • Locally estimated Scatterplot Smoothing (LOESS)

In my judgement, giving us more direction on your desired outcome we can give you more direction with a solid answer.

  • 3
    $\begingroup$ Logistic regression is used for classification or probability estimation, not for regression $\endgroup$ May 9 '17 at 7:35
  1. (Easier if followed) The response variable should be one team's outcome. E.g. In India vs. Australia, your response variable can be either India or Australia depicting whether that team won or not
  2. (Easier if followed) Once you've done so, check for class populations so as to avoid predicting on unbalanced classes. E.g. If you select Australia, you need to make sure that they have equal wins and losses or somewhat balanced outcome. If Australia wins 90 out of 100 matches, it will add more steps to developing your prediction model
  3. (Imbalanced classes) Check out class undersampling or oversampling techniques. R provides packages such as ROSE and SMOTE which handle this imbalance based on defined parameters.
  4. I haven't looked at the dataset that you are using but if there are a lot of predictors, you can use PCA to reduce the number of predictors and make the computation quicker and less prone to erroneous interactions and predictors. Logically evaluate correlation results to detect highly correlated variables (Correlation does not imply causation)
  5. Try using logistic regression to start your model building process. You can also adopt the decision tree algorithm followed by random forests which use voting mechanism to classify outcomes.

Sports also count as a domain expert - vision with game planning art.

But Machine can also learn from the past patterns to predict before match day. Here is my Study for Cricket World Cup prediction 2019 study model - Built on Random Forest and Logistic Regression.

It's interesting to approach the Cricket match Winning Team Prediction. It's not limited to one sport but in various sports, you can build ML models to predict the match outcome before even it begins.

Here is my Study on ICC World Cup Cricket 2019 Prediction. We have used - Logistic Regression Model. However, in this case, we have slightly gone beyond 2001 and we build a model based on 1987 data.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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