https://github.com/fmfn/BayesianOptimization
J'ai essayé d'utiliser cette optimisation bayésienne. J'avais besoin d'un peu d'ingéniosité, alors je vais laisser.
optimizer.maximize(
init_points=2,
n_iter=3,
)
À partir de README. Il semble que seul «maximiser» soit fourni comme méthode d'optimisation. Ce que je voulais faire était d'optimiser le classement de recherche (je veux frapper en haut du classement), j'ai donc simplement ajouté un moins au classement et je l'ai optimisé.
optimizer = BayesianOptimization(
f=foo,
pbounds=pbounds,
)
Cela signifie que la valeur de retour de ce foo
a été rendue négative. Il y a peut-être un moyen du côté «maximiser» ou «optimiseur», mais je ne l'ai pas trouvé.
def foo(x, y):
return -x ** 2 - (y - 1) ** 2 + 1
C'est la fonction à optimiser.
pbounds = {'x': (2, 4), 'y': (-3, 3)}
C'est un mécanisme qui donne une gamme d'arguments comme celui-ci et cherche à y trouver la valeur optimale. À mon point, je voulais donner un autre argument comme foo (x, y, z)
, et si je laisse maximiser
le manger tel quel, une erreur se produit. En guise de contre-mesure, j'ai fait de z
une variable globale et je l'ai passée de force. Je ne sais pas si c'est correct.
Cela n'a rien à voir avec l'optimisation bayésienne, mais au moment de décider du rapport de composition optimal de x et y, j'ai d'abord écrit comme suit.
def foo(a):
return a*x+y
alors,
pbounds = {'a': (0, 100)}
Qu'est-ce que tu as fait? Ce n'est pas bien.
def foo(a):
return a*x+(100-a)*y
Donc
pbounds = {'a': (0, 100)}
Cela a fonctionné.
Recommended Posts