https://github.com/fmfn/BayesianOptimization
Ich habe versucht, diese Bayes'sche Optimierung zu verwenden. Ich brauchte ein wenig Einfallsreichtum, also werde ich es verlassen.
optimizer.maximize(
init_points=2,
n_iter=3,
)
Aus der README. Es schien, dass nur "Maximieren" als Optimierungsmethode bereitgestellt wurde. Ich wollte das Suchranking optimieren (ich möchte ganz oben im Ranking stehen), also habe ich dem Ranking einfach ein Minus hinzugefügt und es optimiert.
optimizer = BayesianOptimization(
f=foo,
pbounds=pbounds,
)
Dies bedeutet, dass der Rückgabewert dieses foo
negativ gemacht wurde. Es mag einen Weg auf der Seite "Maximieren" oder "Optimieren" geben, aber ich konnte ihn nicht finden.
def foo(x, y):
return -x ** 2 - (y - 1) ** 2 + 1
Dies ist die zu optimierende Funktion.
pbounds = {'x': (2, 4), 'y': (-3, 3)}
Es ist ein Mechanismus, der eine Reihe solcher Argumente liefert und nach dem optimalen Wert darin sucht. An meinem Punkt wollte ich ein anderes Argument wie "foo (x, y, z)" geben, und wenn ich "maximieren" ließ, wie es war, trat ein Fehler auf. Als Gegenmaßnahme habe ich z
zu einer globalen Variablen gemacht und sie zwangsweise übergeben. Ich weiß nicht, ob es richtig ist.
Dies hat nichts mit der Bayes'schen Optimierung zu tun, aber als ich das optimale Zusammensetzungsverhältnis von x und y entschied, schrieb ich zuerst wie folgt.
def foo(a):
return a*x+y
damit,
pbounds = {'a': (0, 100)}
Was hast du getan? Es ist nicht gut.
def foo(a):
return a*x+(100-a)*y
so
pbounds = {'a': (0, 100)}
Das hat funktioniert.
Recommended Posts