Open pfistfl opened 6 years ago
hi flo,
thanks fopr the issue. in general not really minimal :) you should rather produce something without mlr / benchmark, where the MBO fitness function is defined manually, not implictly by mlr. and it would in this case also be better to cut OML out. just create a design with constant fitness values.
at us / developers: we should probably change the setting of the surroate learner, in MBO, especially for our own defaults
@berndbischl Change it to what?
@pfistfl Short answer: A random proposal should be the result. Do you have indications that this is not the case?
Ergo: Just add a warning?
After few hours of debugging:
ctrl = makeTuneControlMBO(budget = 100L)
ctrl$mbo.control$on.surrogate.error = "warn"
seems to have the desired effect.
So as a result:
on.surrogate.error
is doc'ed in makeMBOControl
, but not on the Error Handling Pageon.learner.error
does not have any effect, as the on.surrogate.error
overwrites it.I think / the issue was, that
1) The error handling page should be somewhere more prominent, maybe even in the
makeMBOCotrol()
docs.
2) We might wanna add on.surrogate.error
to the tutorial
mbo.ctrl = makeMBOControl(on.surrogate.error = "warn")
ctrl = makeTuneControlMBO(budget = 100L, mbo.control = mbo.ctrl)
would be the correct approach.
The tuneControlMBO stuff is really confusing unfortunately since we have nested control object that have very similar names...
and settings of the inner control object (MBOControl
) some can be set from the outer control onject (TuneControlMBO
)
As per Bernd's request, here is a reproducible example:
Problem: What happens if we get constant values for the performance measure in the initial design:
Maybe set
on.learner.error
towarn
in general.Bernd pointed me to (https://mlr-org.github.io/mlrMBO/reference/error_handling.html) Maybe this can be linked somewhere more prominent, as I did not find it when I was searching for a solution.