2016-09-13 2 views
0

Je me suis récemment intéressé aux statistiques de football. En ce moment je veux implémenter le fameux modèle Dixon-Coles en Python 3.5 (paper-link).Optimisation convexe en Python

Le problème de base est que, à partir du modèle décrit dans l'article, une fonction de vraisemblance avec de nombreux paramètres résulte, qui doit être maximisée.

Par exemple: La fonction de vraisemblance pour une saison Bundesliga donnerait 37 paramètres. Bien sûr, je fais la minimisation de la fonction de log-vraisemblance négative correspondante. Je sais que cette fonction log est strictement convexe donc l'optimisation ne devrait pas être trop difficile. J'ai également inclus le gradient analytique, mais comme le nombre de paramètres dépasse ~ 10 les méthodes d'optimisation du SciPy-Package échouent (scipy.optimize.minimize()).

Ma question: Quelles autres techniques d'optimisation sont là et sont surtout adaptés à des problèmes d'optimisation impliquant ~ 40 paramètres indépendants?

Quelques conseils à d'autres méthodes seraient géniaux!

+0

Vous devriez nous donner plus d'infos! Vous avez discuté de la convexité de log, mais est-ce que tout le problème est aussi convexe? Si oui, s'en tenir aux solveurs de programmation convexes (aucun disponible dans scipy, utiliser cvxpy avec les solveurs ECOS ou SCS). Aussi: pourquoi ne pas nous montrer votre code? Quel optimiseur avez-vous utilisé? Qu'est-ce que l'échec signifie (il y a tellement de problèmes possibles)? – sascha

Répondre

0

Vous pouvez utiliser des algorithmes métaheuristiques qui fonctionnent à la fois sur des espaces convexes et non convexes. Probablement le plus célèbre d'entre eux est Genetic algorithm. Il est également facile à mettre en œuvre et le concept est simple. La belle chose à propos de l'algorithme génétique est que vous pouvez l'adapter pour résoudre la plupart des problèmes d'optimisation.