J'essaye de minimiser une fonction avec beaucoup de paramètres (un peu plus de 7000) en utilisant fmin_bfgs() ou fmin_l_bfgs_b(). Quand j'entrez la commandefmin_bfgs ne se termine pas
opt_pars = fmin_l_bfgs_b(obj_f, pars, approx_grad=1)
(où obj_f est la fonction que je suis en train de minimiser et Pars est le vecteur des paramètres initiaux), la fonction passe juste pour toujours jusqu'à ce que python me dit qu'il a de mettre fin au programme. Il n'y a jamais de sortie. J'ai essayé d'ajouter l'argument maxfunc = 2 pour voir si cela arrivait n'importe où et que la même chose arrivait (a fonctionné pour toujours alors python a terminé le programme). J'essaie juste de comprendre ce qui pourrait mal se passer avec la fonction. On dirait que c'est peut-être coincé dans une boucle ou quelque chose comme ça. est-ce que quelqu'un à rencontré ce problème? Sinon, je pourrais aussi utiliser une aide générale pour le débogage (car je suis relativement nouveau sur Python) sur la façon de surveiller ce que fait la fonction. Enfin, peut-être que quelqu'un peut recommander une fonction ou un package différent pour la tâche que j'essaye. J'essaie d'ajuster une régression de Poisson régularisée au lasso à des données éparses avec environ 12 millions d'observations de 7000 variables.
PS Désolé de ne pas inclure la fonction de probabilité -log que j'essaie de minimiser, mais ce serait complètement ininterprétable.
Merci beaucoup pour toute aide!
Zach
7000 paramètres est beaucoup! La fmin essaye d'évaluer votre fonction pour des variations sur tous ceux-ci, et c'est probablement pourquoi cela prend si longtemps. Et sûrement avec 7000 variables, il y a probablement beaucoup de minima locaux. Ma suggestion serait d'essayer quelques PCA pour réduire la dimensionnalité du problème. – tiago
C'est beaucoup! Mais il est totalement convexe donc pas de minima local ... – zss