pythonpython-3.xoptimizationscipyconvex

Convex Optimization in Python


I recently got interested in soccer statistics. Right now I want to implement the famous Dixon-Coles Model in Python 3.5 (paper-link).

The basic problem is, that from the model described in the paper a Likelihood function with numerous parameters results, which needs to be maximized.

For example: The likelihood function for one Bundesliga season would result in 37 parameters. Of course I do the minimization of the corresponding negative log-likelihood function. I know that this log function is strictly convex so the optimization should not be too difficult. I also included the analytic gradient, but as the number of parameters exceeds ~10 the optimization methods from the SciPy-Package fail (scipy.optimize.minimize()).

My question: Which other optimization techniques are out there and are mostly suited for optimization problems involving ~40 independent parameters?

Some hints to other methods would be great!


Solution

  • You can make use of Metaheuristic algorithms which work both on convex and non-convex spaces. Probably the most famous one of them is Genetic algorithm. It is also easy to implement and the concept is straightforward. The beautiful thing about Genetic algorithm is that you can adapt it to solve most of the optimization problems.